TiDB監控實現--存活監控

o煙雨瀟瀟o發表於2019-08-30

      TiDB監控實現 -- 存活監控

                                                                --20190228 劉春雷

1、需求

1、隨著TiDB叢集的數量的發展,需要監控TiDB叢集的存活情況

2、公司監控使用zabbix,需要將TiDB的監控接入進去

3、需要實現一鍵新增、刪除叢集監控,實現自動化

2、實現方式

1、通過Prometheus 的介面,獲取各個元件的狀態,處理資料後,推送至zabbix ;
2、通過各個元件(TiDB、PD、TiKV、Grafana)的本地 API 獲取元件狀態,防止prometheus的單點問題,開發中。

3、通過zabbix的介面,建立監控等

4、通過zabbix實現簡訊報警

美團的實現方式:

https://tech.meituan.com/2018/11/22/mysql-pingcap-practice.html

5、其他實現

也可以通過 Alertmanager報警

3、具體實現

3.1、規範

3.1.1、host規範

{tidb/pd/tikv/prometheus/grafana}_{例項埠port}_{例項IP}
舉例:
tidb_6666_10.0.0.1
pd_6666_ 10.0.0.1
tikv_6666_ 10.0.0.1
prometheus_6666_ 10.0.0.1     暫時沒有查到介面判斷存活
grafana_666_ 10.0.0.1


3.1.2、監控項

注:Prometheus 的自己存活無介面,先忽略

 

監控項名字 key type 值情況 採集時間
TiDBAliveCheck TiDBaliveCheck Zabbix trapper 0:不存活
1:存活
10s 採集一次
PDAliveCheck PDaliveCheck Zabbix trapper 0:不存活
1:存活
10s 採集一次
TiKVAliveCheck TiKValiveCheck Zabbix trapper 0:不存活
1:存活
10s 採集一次
GrafAliveCheck GrafaliveCheck Zabbix trapper 0:不存活
1:存活
10s 採集一次


3.1.3、觸發器

 

監控項名字 觸發器名字 key 採集時間 觸發
TiDBAliveCheck TiDB Down TiDBaliveCheck 10s 採集一次 最近3次採集資料值等於0 個數大於2即30s內採集不到即報警)
{ TiDB.GrafanaaliveCheck .count (#3,0,"eq")} >2
PDAliveCheck PD Down PDaliveCheck 10s 採集一次

最近3次採集資料值等於0 個數大於2即30s內採集不到即報警)

{ TiDB.GrafanaaliveCheck.count(#3,0,"eq")} >2

TiKVAliveCheck TiKV Down TiKValiveCheck 10s 採集一次

最近3次採集資料值等於0 個數大於2即30s內採集不到即報警)

{ GrafanaaliveCheck.count(#3,0,"eq")} >2

GrafAliveCheck Graf Down GrafaliveCheck 10s 採集一次

最近3次採集資料值等於0 個數大於2即30s內採集不到即報 )

{ GrafanaaliveCheck.count(#3,0,"eq")} >2

3.2、傳送至zabbix實現

3.2.1、舉例zabbix_sender命令


/zabbix_agent34/bin/zabbix_sender --zabbix-server= 10.0.0.2   --host=tidb_6666_10.1.1.1 --key=TiDBaliveCheck --value=1
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000037"

sent: 1; skipped: 0; total: 1

3.2.2、具體

tidb_monitor

      輸入如下: 
           python tidb_monitor.py  -c {$cluster_id1,$cluster_id2}         (檢查 指定tidb cluster) 
           python tidb_monitor.py  -a                                                    (檢查 所有tidb cluster) 
           python tidb_monitor.py  -g                                                    (從mysql獲取tidb叢集資訊,生成最新的配置檔案)
           python tidb_monitor.py  -m                                                   (檢查zabbix的監控與cdb的一致性)

1】舉例檢查某個Tidb叢集
tidb_monitor.py -c  6666-1

單個叢集的檢查時間:0.298s

【2 】舉例檢查全部Tidb叢集,耗時0.936s

python  tidb_monitor.py  -a

3.3、一致性檢查

python  tidb_monitor.py  -m

獲取zabbix的host

檢查zabbix多的,並刪除

檢查元資訊庫多的,並新增

【一致的情況】

【zabbix缺少監控的情況】

3.4、更新配置檔案

配置檔案裡面記錄了叢集的拓撲資訊,用於檢查監控獲取例項資訊

tidb_monitor  -g

3.5、配置檔案

3.6、執行

放在管理機的crontab任務裡面執行,後期與平臺聯動即可

4、zabbix部分

4.1、Template

TiDB

4.2、Applications

4.3、items

4.4、Triggers

4.5、Graphs

4.6、Actions

4.7、Users

4.8、 測試報警

4.9.1、當機測試 – 微信

4.9.2、當機測試 – 簡訊

4.9.3、當機測試 – zabbix

4.9.4、ack測試

4.9.5、恢復測試--zabbix

4.9.6、恢復測試--微信

4.9.7、恢復測試--簡訊


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28823725/viewspace-2655486/,如需轉載,請註明出處,否則將追究法律責任。

相關文章