课程名称:课程版本(101/201/301)+ 课程名称
学习时长:
1小时
课程收获:
深刻理解了promethus的架构,并且熟练掌握了promethus的yaml文件配置,alertmanage的YAML文件配置,了解了关键rule规则,以及grafana关键监控指标项。
课程内容:
tidb的监控系统组成
TiDB 使用开源时序数据库prometheus作为监控和性能指标信息存储方案,使用grafana作为可视化组件进行展示。
(1)什么是prometheus?
Prometheus 是一个开源的服务监控系统和时间序列数据库。我们可以简单的理解,我们从TIDB,TIKV,PD,TIFLASH等组件收集的监控信息均存放在了prometheus中。
详细可查看:https://prometheus.io/docs/introduction/overview/
(2)prometheus如何获取监控信息?
Promethus有两种获取数据的方式:
Push / Pull
- Pull 是 Prometheus 标准的获取指标方式,Prometheus Server 通过定期访问应用程序提供的 HTTP 接口获取指标数据。
- Push 是基于 Prometheus Pushgateway 服务提供的另一种获取指标方式,指标数据由应用程序主动定期推送给 Pushgateway,然后 Prometheus 再定期从 Pushgateway 获取。这种方式主要适用于应用程序不方便开端口或应用程序生命周期比较短的场景。
需注意:课程里面提到的PUSHGATEWAY组件已经从tidb2.1.3取消掉了,原因为了降低各组件的负载,所以之后都通用采用PULL方式。
Promethus除了直接向PD,TIKV,TIDB等组件PULL监控信息外,为了获取主机和网络的监控信息,监控模块里还有node_exporter,blockbox_pxporter两个组件分别用于收集主机和网络信息。promethus也会定期从它们pull监控信息。
pull间隔不同组件设置不一样,通常为6~60s,可在如下界面查看: http://172.168.1.44:9090/config
修改方法为:<安装路径>/deploy/prometheus-9090/conf/prometheus.yml
修改完成后重启promethus生效。
(3)prometheus的alert_manager组件
该组件用于将定义的告警规则发送到指定的平台。详细的规则定义可查看文档:
https://docs.pingcap.com/zh/tidb/stable/alert-rules
如何对所有定义的规则进行查看?
可通过如下页面进行查看
http://172.168.1.44:9090/alerts
我们如何对这些规则进行修改?
在<安装路径>/deploy/prometheus/conf下,有很多*.rules.yml文件,分别对应不同模块的告警规则,如pd.rules.yml为pd的模块的告警规则。比如我们想将PD_cluster_offline_tikv_nums设置为2分钟未收到TIKV心跳则发送告警。
保存,并重启普罗米修斯后,就可以发现它已生效。
tiup cluster restart tidb-test -N 172.168.1.44:9090
如何将告警规则发送到指定平台呢?
通过tiup cluster edit-config <集群名>
可以查看到alertmanager_servers的路径。
打开alertmanager路径下的alertmanager.yml文件。
修改为想发送的邮箱地址,保存并重启alertmanager后生效。
(4)prometheus的grafana组件
grafana为prometheus可视化组件,用于展示收集到的各项监控指标,本章节主要根据课程内容对关键监控指标进行介绍。详细的指标项介绍可查看文档。地址为ip:3000
https://docs.pingcap.com/zh/tidb/stable/grafana-overview-dashboard
https://docs.pingcap.com/zh/tidb/stable/grafana-tidb-dashboard
https://docs.pingcap.com/zh/tidb/stable/grafana-pd-dashboard
https://docs.pingcap.com/zh/tidb/stable/grafana-tikv-dashboard
https://docs.pingcap.com/zh/tidb/stable/monitor-tiflash
学习过程中遇到的问题或延伸思考:
- 问题 1:怎么指定将告警发送到我的邮箱?如何配置采样间隔?
通过查看promethus.yaml和alertermanager.yaml已了解配置方法。详细可查看本次学习笔记。
学习过程中参考的其他资料
https://docs.pingcap.com/zh/tidb/stable/alert-rules
https://docs.pingcap.com/zh/tidb/stable/grafana-tidb-dashboard
https://docs.pingcap.com/zh/tidb/stable/grafana-pd-dashboard
https://docs.pingcap.com/zh/tidb/stable/grafana-tikv-dashboard