TiDB 监控 prometheus 常用技巧
作者: cchouqiang 原文来源:https://tidb.net/blog/a8a7e903
背景
TiDB 是一款真正意义上的分布式数据库,支持混合事务 / 分析处理(HTAP)工作负载。TiDB 数据库监控软件使用的是 Prometheus,它是一个开源的监控和警报工具包,Prometheus 通过抓取受监控目标上的 HTTP 端点来收集这些目标的指标。它在本地存储所有抓取的样本,并对这些数据运行规则,以从现有数据中聚合和记录新的时间序列,或生成警报。
当涉及到 TiDB 和 Prometheus 时,它们经常一起用于监控和收集有关 TiDB 集群性能和健康状况的指标。以下是它们通常如何协同工作:
1、指标收集:Prometheus 可以配置为抓取 TiDB 暴露的指标,如服务器状态、查询性能、存储使用情况等。TiDB 以 Prometheus 能够理解的格式导出这些指标。
2、存储和查询:Prometheus 将抓取的数据存储在时间序列数据库中,允许随时间高效查询历史数据。
3、告警:Prometheus 还支持基于预定义规则的警报。如果某些指标超过指定阈值,它可以提醒操作员或管理员,快速处理出现的问题。
4、可视化:虽然 Prometheus 本身专注于数据存储和查询,但它经常与 Grafana 等可视化工具集成。Grafana 可以向 Prometheus 查询数据,并将其显示在仪表板中,从而提供对 TiDB 性能指标的洞察。
grafana+prometheus 常用技巧
TiDB 数据库日常运维和故障诊断依赖于监控,本文介绍几种使用 prometheus 常用的技巧,希望给使用 TiDB 的用户带来便捷。
技巧一:快速选取特定时间
我们在日常运维中,经常会有这种需求:同时看 grafana 面板里面的不同监控项,综合几个监控项来排查问题,并且这些监控项不在同一个文件夹下面。如下图所示:
上图一是 Overview 面板中的 Duration 监控项,假如我们发现 8 点 -9 点之间有异常,进而排查 tikv 是否正常,可以通过复制当前页面,找到 TiKV-Details 面板(上图二),但此时时间段却不是我们想要的。
对于如何选取特定时间段,通常有以下两种方法:
1、我们可以通过修改右上角的时间列,改成特定的时间范围。如下图所示(需要修改 4 处地方):
2、另外一种是复制浏览器地址栏中的 tso,粘贴到另外一个面板的地址后面,快速跳转到特定时间段。
复制浏览器地址栏中最后的那部分内容(8 点 -9 点对应的 tso),如上图标红的(&from=1721347200000&to=1721350799000),粘贴到另外一个监控的网址后面,在点击刷新即可:
技巧二:监控数据不准?
同样的监控面板,同样的时间段,为何监控数据的最大值不一样呢?如下图所示:
小编这里卖个关子,大家先思考下原因,文章的最后会公布答案。
技巧三:grafana 监控列显示不全
我们经常查看 blackbox_exporter 面板来排查是否有网络延迟问题,但是该监控项显示的不全,看不到谁到谁有网络延迟问题,如下图所示:
这是由于 grafana 的列宽有限,导致无法显示全,可以通过如下方式,将该选项显示全:
在 grafana 界面右上角有个箭头的按钮,找到 Legend,把“As Table”选项关闭后,就可以看到完整的监控列。参考上面图片。
技巧四:grafana 监控项展现最大 / 小值
我们经常有这种需求:查看一天中,机器 CPU 使用的峰值是多少,及出现峰值的时刻。找到 CPU 使用率的监控项后,我们发现默认只显示 current 值,如下图所示:
我们需要找到监控项设置,找到最大值设置的地方,勾选后即可查看,如下图所示:
根据上图标红的提示,即可找出 CPU 在某时刻的峰值。但细心的小伙伴可能会发现一个问题,min、max、avg、current 并没有显示全,这是因为默认的宽度为 250,只需将 width 的值调大,min、max、avg、current 就可以显示全了,如下图所示:
技巧五:直接拉取 prometheus 监控数据
我们可以通过网页访问 prometheus 的 9090 端口,直接访问 prometheus 数据库。通过这种方式获取我们需要的数据,比如:我们如何快速获取 TiDB 集群所有成员的主机名和 IP 的数据,TiUP 只能获取集群的 IP 信息,无法获取主机名,那就可以直接访问 prometheus 中的数据,获取主机名和 IP 的数据,如下图所示:
在浏览器输入 prometheus 监控地址,在搜索栏中输入“node_uname_info”,然后输出回车,就显示该集群下,所有主机的信息了。
技巧六:表达式修改
我们在日常运维中,经常会遇到一些特殊需求的场景,而 grafana 面板显示的并不是我们需要的,此时需要我们修改下 grafana 的表达式来满足我们的需求,例如:统计下集群内流量峰值。
我们 grafana 面板中默认显示的每台机器的流量情况,如下图所示:
修改表达式如下:
sum(irate(node_network_transmit_bytes_total{k8s_cluster=“tidb_cluster”, device!=“lo”}[1m]))
总结
监控是我们日常运维中的必备武器,利用好监控,让我们的工作更加顺畅。
技巧二中的两张图显示的最大值不一样,原因是采样数据不同,要想得到的数据更精确,需要把 max data points 调大,默认是一千多,调成 10W,显示的数据就会更精确。
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/11fe054af64127edbff3d5683】。文章转载请联系作者。
评论