写点什么

TiDB 监控 prometheus 常用技巧

  • 2024-08-02
    北京
  • 本文字数:1972 字

    阅读完需:约 6 分钟

作者: 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,显示的数据就会更精确。



发布于: 刚刚阅读数: 1
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
TiDB监控prometheus常用技巧_监控_TiDB 社区干货传送门_InfoQ写作社区