使用 Categraf 快速建设 MySQL 监控,同时介绍夜莺模板中心

本文演示如何用 Categraf 采集 MySQL 指标,并在夜莺模板中心导入 MySQL 仪表盘和告警规则,覆盖账号授权、采集验证、指标查询、模板导入和社区共建。

作者 秦晓辉@快猫星云

之前翻译过一篇文章,介绍 MySQL 监控的一些原理,本文侧重实操,使用夜莺 v7.beta12.1 版本为大家做一个演示,采集器使用 Categraf,先看一下最终仪表盘效果:

Categraf 监控 mysql 的仪表盘

核心要点

  • 本文的目标是用 Categraf 采集 MySQL 指标,并在夜莺中完成指标查询、仪表盘导入和告警规则导入。
  • Categraf 可以部署在 MySQL 所在机器上,也可以部署在网络质量较好的远端机器上采集云上或远端 MySQL 实例。
  • 生产环境建议创建专用只读采集账号,不建议直接使用 root 账号采集。
  • 夜莺模板中心已经提供 MySQL 采集说明、仪表盘和告警规则,可以降低首次建设 MySQL 监控的配置成本。

下面开工。整体流程可以拆成五步:安装夜莺和 Categraf、配置 Categraf、验证指标上报、导入 MySQL 仪表盘、导入 MySQL 告警规则。

1. 安装夜莺和 Categraf

夜莺的安装可以参考 夜莺官方文档,Categraf 的安装可以参考 Categraf官方文档。这里就不赘述了。

2. 配置 Categraf

配置 categraf

点击 MySQL 集成,打开【采集说明】这个 tab,里面有详细的操作步骤,按照步骤操作即可。

categraf 监控 mysql 说明文档

比如我们要监控某个 MySQL 实例,该实例在 10.1.2.3 机器上,那我们就到 10.1.2.3 的机器上安装 Categraf,并且按照【采集说明】中的配置来配置 MySQL 的连接地址,因为是本机的 Categraf 连到本机的 MySQL 实例上采集监控数据,所以 address 大概率是配置成 127.0.0.1:3306,默认配置给的用户名和密码是 root 、1234,生产环境下,通常不会这么干,而是创建一个只读的 MySQL 账号专门给监控采集器使用。比如:

CREATE USER 'categraf'@'127.0.0.1' IDENTIFIED BY 'XXXXXXXX' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'categraf'@'127.0.0.1';
场景 Categraf 部署位置 配置重点
MySQL 在自管主机上 MySQL 所在机器 address 通常配置为 127.0.0.1:3306,使用本机采集
MySQL 是云上实例 网络质量较好的虚机 配置远端 MySQL 地址,并为每个实例设置区分标签
一个 Categraf 采集多个实例 统一采集机 配置多个 [[instances]] 段,使用 instance 标签区分

如果 MySQL 是云上的实例,没法登录 MySQL 所在机器部署 Categraf,此时可以选一台和 MySQL 实例网络质量比较好的虚机,在虚机上部署 Categraf,监控远端的 MySQL 实例。这个 Categraf 可能同时监控了多个 MySQL 实例,所以要配置多个 [[instances]] 段(采集说明页面下面也给出了样例),每个配置段中都要给出 instance 标签来区分不同的实例。

如果验证 Categraf 是否采集到了数据?使用如下命令:

./categraf --test --inputs mysql

如果正常打印了采集到的指标,重启 Categraf 即可,或者给 Categraf 发个 HUP 信号,让其重载配置。

kill -HUP `pidof categraf`

3. 查看 MySQL 监控指标

在夜莺的指标视图或者即时查询中都可以看到 MySQL 的监控指标,只要能查到,就说明数据正常上报了,比如即时查询:

MySQL 监控指标

输入 MySQL 关键字之后,立马提示了很多指标,这就说明这些指标都采集上来了。直接写 promql 对很多人来讲有难度,可以使用指标视图,使用内置的 promql 查看监控数据:

promql 查询 mysql 指标

点击某个指标,侧拉板里就会发起查询:

mysql 指标查询

默认打开的是 Table 视图,也可以点击 Graph 切换成图表视图。

4. 导入 MySQL 模板

重新回到夜莺模板中心,搜索 MySQL,找到仪表盘那个 tab,导入仪表盘,我这个例子里是在 MySQL 对应的机器上部署的 Categraf,所以导入的是“MySQL 仪表盘”,如果是远端监控的 MySQL 实例,那就导入“MySQL 仪表盘(远端)”。

mysql 内置仪表盘

然后去业务组下找到刚才导入的仪表盘,点开查看即可:

mysql 仪表盘列表

mysql 仪表盘详情

5. 导入告警规则

回到模板中心,找到 MySQL 的告警规则 tab,全选,把告警规则导入自己的业务组下即可。

mysql 内置告警规则

完活。

总结

用 Categraf 和夜莺建设 MySQL 监控时,关键不是手写所有 PromQL,而是先把采集链路跑通:采集账号可用、Categraf 能测试到指标、夜莺能查询到指标、模板中心的仪表盘和告警规则能导入到目标业务组。这个基础打通后,再根据自己的实例标签、告警级别和业务组权限做细化。

模板中心已经内置了一些模板,使用起来比较方便。当然,中间件、数据库种类比较多,也不是每个都整理的很完备,欢迎大家一起整理这些采集说明、仪表盘、告警规则、指标说明,提 PR 给社区,一起共建。代码提交到这里:

https://github.com/ccfos/nightingale/tree/main/integrations

可以参考 MySQL 目录下的内容,按照格式提交即可。

FAQ

Q1:为什么建议为 Categraf 创建专用 MySQL 账号?

监控采集只需要读取状态和指标,不应该使用高权限业务账号或 root 账号。专用账号更容易控制权限、连接数和审计边界。

Q2:如何确认 Categraf 已经采集到 MySQL 指标?

可以先执行 ./categraf --test --inputs mysql。如果命令正常打印采集指标,再重启 Categraf 或发送 HUP 信号让配置生效。

Q3:本机 MySQL 和远端 MySQL 应该导入哪个仪表盘?

原文示例中,本机部署 Categraf 采集本机 MySQL 时导入“MySQL 仪表盘”;远端监控 MySQL 实例时导入“MySQL 仪表盘(远端)”。

联系我们交流

延伸路径

继续看解决方案和产品对比

如果你正在做监控、可观测性或故障定位相关选型,建议从解决方案和产品对比继续往下看。

标签 MySQL Monitoring
快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云