前言
第一種:JMX
https://help.aliyun.com/document_detail/141108.html?spm=a2c4g.11186623.6.621.12bb4dea7EyM9F
第二種:kafka_exporter
本文就是采用第二種方式實現,相比JMX,優勢在於不需要消耗 JVM資源,指標收集時間從分鍾級別降到秒級別,便於大規模集群的監控。
技術架構
圖片引用:https://zhuanlan.zhihu.com/p/57704357
安裝kafka_exporter
注:1個kafka集群只需要1個exporter,在集群上的任意1台服務器部署。
-
上傳解壓
從 https://github.com/danielqsj/kafka_exporter 下載並傳kafka_exporter-1.2.0.linux-amd64.tar安裝包並解壓到/usr/local目錄
wget https://github.com/danielqsj/kafka_exporter/releases/download/v1.2.0/kafka_exporter-1.2.0.linux-amd64.tar.gz
tar -xvf kafka_exporter-1.2.0.linux-amd64.tar
cd kafka_exporter-1.2.0.linux-amd64/
-
配置
使用默認配置
-
啟動
進入根目錄下,輸入以下命令:
cd /usr/local/kafka_exporter-1.2.0.linux-amd64 nohup ./kafka_exporter --kafka.server=172.16.10.93:9092 &
啟動成功后,可以訪問 http://172.16.10.93:9308/metrics/ ,(IP和端口要改成相應環境的)
看抓取的信息如下:
Prometheus配置
-
配置
修改prometheus組件的prometheus.yml加入kafka監控:
vi /usr/local/prometheus-2.15.1/prometheus.yml
-
啟動驗證
先kill掉Prometheus進程,用以下命令重啟它,然后查看targets:
cd /usr/local/prometheus-2.15.1 nohup ./prometheus --config.file=prometheus.yml &
注:State=UP,說明成功
Grafana配置
-
導入儀表盤模板
通過瀏覽器訪問:http://grafana服務器IP:3000
添加數據源,選擇prometheus,填入prometheus服務器IP端口,點擊保存
導入監控圖表
輸入7589,光標往下移,如下圖
圖表數據就出來了
以上儀表盤導入后再結合自身業務修改過的最終儀表盤:
-
預警指標
序號 |
預警名稱 |
預警規則 |
描述 |
1 |
Broker數量預警 |
當Broker數量達到閾值【<3】時進行預警 |
|
2 |
消費延遲預警 |
當積壓的消息數量達到閾值【>1000】時進行預警 |
|
3 |
失效副本分區預警 |
當失效副本分區數量達到閾值【>0】時進行預警 |
|
-
Grafana儀表盤參考:
- https://grafana.com/grafana/dashboards/7589 (推介)
- https://grafana.com/grafana/dashboards/9018 (參考-新的)
- https://grafana.com/grafana/dashboards/9947(參考-新的)
- https://grafana.com/grafana/dashboards/10973(JMX-阿里雲)
- https://www.menina.cn/article/88
- https://cloud.tencent.com/developer/news/377416
其它
- 注冊系統服務開機自動啟動
## 准備配置文件 cat <<\EOF >/etc/systemd/system/kafka_exporter.service [Unit] Description=Elasticsearch stats exporter for Prometheus Documentation=Prometheus exporter for various metrics about ElasticSearch, written in Go. [Service] ExecStart=/usr/local/kafka_exporter/kafka_exporter --kafka.server=192.168.50.16:9092 [Install] WantedBy=multi-user.target EOF ## 啟動並設置為開機自動啟動 systemctl daemon-reload systemctl enable kafka_exporter.service systemctl stop kafka_exporter.service systemctl start kafka_exporter.service systemctl status kafka_exporter.service