本節以 zabbix 爲例,介紹如何使用監控系統完成 Elasticsearch 的監控報警。node
github 上有好幾個版本的 ESZabbix 倉庫,都源自 Elastic 公司員工 untergeek 最先的貢獻。可是當時 Elasticsearch 尚未官方 python 客戶端,因此監控程序都是用的是 pyes 庫。對於最新版的 ES 來講,已經不推薦使用了。python
GitHub 地址見:https://github.com/Wasim37/zabbix-esgit
倉庫中包括三個文件:
一、ESzabbix.py
二、ESzabbix.userparm
三、ESzabbix_templates.xmlgithub
其中,前兩個文件須要分發到每一個 ES 節點上。若是節點上運行的是 yum 安裝的 zabbix,兩者的默認位置應該分別是:web
/etc/zabbix/zabbix_externalscripts/ESzabbix.py /etc/zabbix/agent_include/ESzabbix.userparm
而後在各節點安裝運行 ESzabbix.py 所需的 python 庫依賴:api
yum install -y python-pbr python-pip python-urllib3 python-unittest2 pip install elasticsearch
安裝成功後,你能夠試運行下面這行命令,看看命令輸出是否正常:瀏覽器
/etc/zabbix/zabbix_externalscripts/ESzabbix.py cluster status 0
最後一個文件是 zabbix server 上的模板文件,不過在導入模板以前,還須要先建立一個數值映射,由於在模板中,設置了集羣狀態的觸發報警,沒有映射的話,報警短信只有 0, 1, 2 數字不是很易懂。bash
建立數值映射,在瀏覽器登陸 zabbix-web,菜單欄的 Zabbix Administration 中選擇 General 子菜單,而後在右側下拉框中點擊 Value Maping。elasticsearch
完成之後,便可在 Templates 頁中經過 import 功能完成導入 ESzabbix_templates.xml。ide
在給 ES 各節點應用新模板以前,須要給每一個節點定義一個 {$NODENAME} 宏,具體值爲該節點 elasticsearch.yml 中的 node.name 值。從統一配管的角度,建議你們都設置爲 ip 地址。
導入完成後,zabbix 裏多出來三個可用模板:
Elasticsearch Node
Cache 其中包括兩個 Application:ES Cache 和 ES Node。分別有 Node Field Cache Size, Node Filter Cache Size 和 Node Storage Size, Records indexed per second 共計 4 個 item 監控項。在完成上面說的宏定義後,就能夠把這個模板應用到各節點(即監控主機)上了。
Elasticsearch Service
只有一個監控項 Elasticsearch service status,作進程監控的,也應用到各節點上。
Elasticsearch Cluster
包括 11 個監控項,以下列所示。其中,ElasticSearch Cluster Status 這個監控項連帶有報警的觸發器,並對應以前建立的那個 Value Map。
Cluster-wide records indexed per second
Cluster-wide storage size
ElasticSearch Cluster Status
Number of active primary shards
Number of active shards
Number of data nodes
Number of initializing shards
Number of nodes
Number of relocating shards
Number of unassigned shards
Total number of records
Elasticsearch Cluster模板下都是集羣整體狀況的監控項,因此,運用在一臺有 ES 集羣讀取權限的主機上便可,好比 zabbix server。
zabbix監控成功後,能夠在grafana上進行相關配置,展現圖像。下面是我初步搭建的界面:
untergeek 最近剛更新了他的倉庫,重構了一個 es_stats_zabbix 模塊用於 Zabbix 監控,有興趣的讀者能夠參考:https://github.com/untergeek/zabbix-grab-bag/blob/master/Elasticsearch/es_stats_zabbix.README.md