作者:刘春雷​



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实现短信报警

美团的实现方式:

TiDB监控实现--存活监控_微信

​tech.meituan.com – 22 Nov 18​

新一代数据库TiDB在美团的实践

多年来,基于MySQL构建的传统关系型数据库服务,已经难于支撑美团业务的爆发式增长,这就促使我们去探索更合理的数据存储方案,并实践新的运维方式。

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 的自己存活无接口,先忽略

TiDB监控实现--存活监控_python_02


3.1.3、触发器

TiDB监控实现--存活监控_python_03


3.2、发送至zabbix实现


3.2.1、举例zabbix_sender命令

/zabbix_agent34/bin/zabbix_sender --zabbix-server=​​1​​0.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

TiDB监控实现--存活监控_配置文件_04

单个集群的检查时间:0.298s

TiDB监控实现--存活监控_配置文件_05

【2 】举例检查全部Tidb集群,耗时0.936s

python tidb_monitor.py -a

TiDB监控实现--存活监控_python_06


3.3、一致性检查

python tidb_monitor.py -m

获取zabbix的host

检查zabbix多的,并删除

检查元信息库多的,并添加

【一致的情况】

TiDB监控实现--存活监控_python_07

bb842×87

【zabbix缺少监控的情况】

TiDB监控实现--存活监控_python_08


3.4、更新配置文件

配置文件里面记录了集群的拓扑信息,用于检查监控获取实例信息

tidb_monitor -g

TiDB监控实现--存活监控_配置文件_09


3.5、配置文件

TiDB监控实现--存活监控_配置文件_10


3.6、运行

放在管理机的crontab任务里面运行,后期与平台联动即可


4、zabbix部分


4.1、Template

TiDB

TiDB监控实现--存活监控_python_11


4.2、Applications

TiDB监控实现--存活监控_python_12


4.3、items

TiDB监控实现--存活监控_微信_13


4.4、Triggers

TiDB监控实现--存活监控_配置文件_14


4.5、Graphs

TiDB监控实现--存活监控_微信_15


4.6、Actions

TiDB监控实现--存活监控_微信_16


4.7、Users

TiDB监控实现--存活监控_配置文件_17


4.8、 测试报警


4.9.1、宕机测试 – 微信

TiDB监控实现--存活监控_配置文件_18


4.9.2、宕机测试 – 短信

TiDB监控实现--存活监控_python_19


4.9.3、宕机测试 – zabbix

TiDB监控实现--存活监控_微信_20

bb885×40


4.9.4、ack测试

TiDB监控实现--存活监控_配置文件_21

bb875×42


4.9.5、恢复测试–zabbix

TiDB监控实现--存活监控_微信_22

bb872×31


4.9.6、恢复测试–微信

TiDB监控实现--存活监控_微信_23


4.9.7、恢复测试– 短信

TiDB监控实现--存活监控_微信_24