Prometheus Elasticsearch 監控

Prometheus 監控 Elasticsearch cluster 實作

石偉琪 2019/02/01 09:25:43
493

Prometheus 監控 Elasticsearch cluster 實作


簡介

本文介紹如何透過 Prometheus elasticsearch_exporter 將 Elasticsearch cluster 納入 Prometheus 監控

作者

石偉琪


1. Prometheus elasticsearch_exporter 簡介
 
根據 Promtheus 上的 Exporters and Integrations 頁面 所載,Prometheus 有釋出給 Elasticsearch 所用的 exporter ,也就是 elasticsearch_exporter 。 本文即是根據 elasticsearch_exporter 上的指示,在我們 lab 的 Elasticsearch replica set 上的實作步驟。
 
 
2. 環境說明
 
lab 的環境,是一套 Elasticsearch replica set,由 caai3 以及 caai4 所組成,資料會自動地由 caai3 複製到 caai4 上。
 
  Hostname IP : Port 說明
Prometheus server caai4 192.168.1.144:3000 Red Hat 7.4
Elasticsearch node 1 caai3 192.168.1.143:9220 Red Hat 7.4
Elasticsearch node 2 caai4 192.168.1.144:9220 Red Hat 7.4
 
公司的 Elasticsearch 是採用 replica set 的方式運作,是由 192.168.1.143:9220 以及 192.168.1.144:9220 所組成。本文直接從 elasticsearch exporter release 下載 binary,安裝在主機 caai3 上。 然後再啟動 elasticsearch_exporter 納入 Prometheus 的監控,完整步驟如  3. 實作  裡所述。
 
 
3. 實作
 
3.1 從 elasticsearch exporter release 下載 elasticsearch exporter binary ,本文採用的是 elasticsearch_exporter-1.0.4rc1.linux-amd64.tar.gz
 
3.2 解開  elasticsearch exporter
 
# tar zxvf elasticsearch_exporter-1.0.4rc1.linux-amd64.tar.gz -C /opt
 
3.3 在 caai3 上,新增 /etc/systemd/system/elasticsearch_exporter.service ,加入以下的內容
 
[Unit]
Description=Prometheus elasticsearch_exporter
After=local-fs.target network-online.target network.target
Wants=local-fs.target network-online.target network.target

[Service]
User=root
Nice=10
ExecStart = /opt/elasticsearch_exporter-1.0.4rc1/elasticsearch_exporter -es.timeout 20s -es.all=true -es.uri=http://192.168.1.143:9220 -es.indices=true -es.shards=true
ExecStop= /usr/bin/killall elasticsearch_exporter

[Install]
WantedBy=default.target
 
其中, -es.url 這裡設定的是 ES 的連線方式,設定從其中一台連進去即可
 
3.4 執行以下的執行啟動 elasticsearch_export
 
# systemctl daemon-reload
# systemctl start elasticsearch_exporter
 
elasticsearch_exporter 啟動後,會使用 9108 port。可以使用以下的指令確認:
 
# systemctl status -l elasticsearch_exporter
 
會看到如下的畫面
 
 
如上圖,就代表 elasticsearch_exporter 已經正常的啟動,並且在 9108 port listen
 
接著,就可以設定 Prometheus server,將該 elasticsearch_exporter 納入監控
 
3.5 設定 Prometheus server 上的 /etc/prometheus.yaml
 
加入以下這一段 
 
## ES_exporter
  - job_name: 'ES_exporter'

    static_configs:
    - targets:
      - '192.168.1.143:9108'
 
然後,重新啟動 Prometheus server
 
3.6 在 Grafana server 上新增 dashboard
 
最後,在 Grafana 上新增用來展示 elasticsearch_exporter metrics 的 dashboard 就大功告成了
 
在這裡要大力推薦 https://grafana.com/dashboards/2322 這個強大的 dashboard
 
以下就是實際的截圖
 
雖然我們只設定了 replica set 的其中一個 server,但從 dashboard 上,可以同時看到所有的 node
 
 
如上圖,我們可以看到 4 個 nodes:即兩個 dataNode 以及兩個 router。其中,es-dataNode1 / es-router1 位在 caai3 上;而  es-dataNode2 / es-router2 則是位在 caai4 上。
 
以下是該 dashboard 所呈現的所有資訊,因為資訊繁多,在此就不一一地解釋了。
 
 
 
4. 參考資料
 
 
2. Elasticsearch exporter 參數設定: https://grafana.com/dashboards/2322
石偉琪