ES 叢集管理工具 cerebro
前言
因為公司技術方面的需求,前一段時間折騰了一下elasticsearch,總體技術水平能夠達到簡歷上的 “熟悉” 的程度。
有管理ES叢集經驗的朋友肯定都知道elasticsearch的head外掛能夠實現對es叢集的檢視,索引分片,展示資料分佈等功能,但是在頁面美觀上有點欠缺。本文介紹一款es叢集管理平臺--cerebro。
cerebro簡介
cerebro算是一款"綠色"軟體,只要有標準的java環境,下載解壓之後即可使用。
在功能上cerebro支援節點狀態監控 伺服器磁碟空間,cpu,load,索引數量大小 ,資料分佈位置等監控。 支援查詢。
安裝
wget "https://github.com/lmenezes/cerebro/releases/download/v0.8.1/cerebro-0.8.1.tgz" tar -zxf cerebro-0.8.1.tgz
解壓之後其實只有四個資料夾,我們只需要關注bin 和conf目錄,bin有可執行檔案 cerebo ,conf裡面有需要訪問es叢集的配置檔案。
[root# /opt/cerebro] # ls bincerebro.dbconfliblogsREADME.md
編輯配置檔案
vim conf/application.conf
hosts = [ { host = "http://localhost:9200" name = "es-test" } # Example of host with authentication #{ #host = "http://some-authenticated-host:9200" #name = "Secured Cluster" #auth = { #username = "username" #password = "secret-password" #} #} ]
這裡我們選擇不帶使用者許可權校驗的方式。
啟動
cd /opt/cerebro nohup ./bin/cerebro -Dhttp.port=8800 -Dhttp.address=0.0.0.0 &
介面展示
功能
能滿足我們對es叢集的日常管理維護 ,還是直接上圖比較直觀。支援索引建立刪除,修改叢集配置引數 等等,其他功能有需要的可以多研究研究。 需要注意的是 delete index 命令在生產環境切勿亂執行,要慎重。
運維
因為現在公司已經在正式環境中使用cerebro,為了標準化程式管理,我寫了一個小指令碼支援啟動關閉檢視狀態。該工具預設 cerebro 是安裝在/opt/cerebro 目錄 。當然也推薦把cerebro的程式交給supervisor管理。
#!/bin/sh # # chkconfig: 2345 86 14 # description: cerebro agent daemon # processname: cerebro # # nohup ./bin/cerebro -Dhttp.port=9000 -Dhttp.address=0.0.0.0 >> /tmp/cerebro.log & # Source function library. . /etc/rc.d/init.d/functions if [ -x /opt/cerebro ]; then exec=/opt/cerebro/bin/cerebro else exit 5 fi prog=${exec##*/} cerebro="/opt/cerebro/bin/cerebro" conf_file="/opt/cerebro/conf/application.conf" pidfile="/var/run/cerebro.pid" timeout=2 lockfile=/var/lock/subsys/$prog logdir="/data/logs/cerebro.log" ## "cd /opt/yz-falcon-agent/; $exec -c $conf >>$logdir/stdout.log 2>>$logdir/stderr.log &" start() { echo "Starting cerebro: " daemon --user root --pidfile $pidfile " $cerebro -Dhttp.port=9000 -Dhttp.address=0.0.0.0 >>/data/logs/cerebro.log 2>/dev/null &" RETVAL=$? [ $RETVAL -eq 0 ] && touch $lockfile [ $RETVAL -eq 0 -a ! -f $pidfile ] && pidof java> $pidfile pid=`cat $pidfile` echo "start $prog, pid is $pid" return $RETVAL } stop() { echo -n $"Shutting down cerebro: " killproc -p $pidfile -d $timeout $prog rv=$? echo [ $rv -eq 0 ] && rm -f $lockfile return $rv } restart() { stop start } case "$1" in start|stop|restart) $1 ;; status) status -p $pidfile $prog ;; *) echo $"Usage: $0 {start|stop|status|restart}" exit 2 ;; esac
啟動
檢視狀態
關閉