• 正文
  • 相关推荐
申请入驻 产业图谱

Categraf | 国产化采集器实战:MySQL指标采集、可视化、异常告警全流程

11/10 13:47
787
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

大家好,我是 WeiyiGeek,一名深耕安全运维开发(SecOpsDev)领域的技术从业者,致力于探索DevOps与安全的融合(DevSecOps),自动化运维工具开发与实践,企业网络安全防护,欢迎各位道友一起学习交流、一起进步 ,若此文对你有帮助,一定记得倒点个关注与小红星,收藏学习不迷路  。

前言简述

描述:作者在上一篇文章《国产云原生采集工具Categraf初识与二进制部署实践指南》中介绍了,如何在 OpenEuler 24.03 LTS 系统中安装 Categraf ALL in One 的采集工具,并介绍了如何通过 Categraf 采集 Linux 系统相关指标数据到 Prometheus(VictoriaMetrics)时序数据库中,并在夜莺(Nightingale v8)系统中查询相关指标数据,以及可视化展示了采集的指标数据。

通过在官方提供的插件目录中,可以发现 Categraf 支持多种数据库的指标采集,包括 MySQL、MsSQL、Oracle、Redis、PostgreSQL、MongoDB 等各类数据库的监控数据采集,所以为了完善本企业数据监控体系,以及国产化的趋势。

项目地址:https://github.com/flashcatcloud/categraf

本章将介绍实践如何通过国产采集工具 Categraf 采集 MySQL 的指标数据到 VictoriaMetrics时序数据库中,并在夜莺(Nightingale v8)系统中查询相关监控指标数据,以及在 夜莺、Grafana 可视化面板展示采集的指标数据,最后对官方提供的告警规则进行优化添加,打通监控预警的最后一公里,希望本文对各位看友有帮助,作者将尽可能以少的语言进行讲解实践。

本文是作者熬夜爆肝总结实践,将其设为付费浏览文章,希望各位看友理解支持!看完本文后你可企业中快速落地使用国产化采集器 Categraf 采集 MySQL (MariaDB)指标,并进行可视化展示与异常告警通知等,效果如下:

作者设计的 Grafana MySQL For VictoriaMetrics 模板样图。

weiyigeek.top-grafana mysql面板效果页1图

weiyigeek.top-grafana mysql面板效果页2图

weiyigeek.top-grafana mysql面板效果页3图

使用夜莺平台+钉钉实现告警通知。

weiyigeek.top-整理后的 MySQL 告警规则图

weiyigeek.top-钉钉机器人告警效果图

文章末尾提供了自定义修改后 MySQL 插件的二进制 catagraf 制品、钉钉、企业微信告警模板以及相关实践所需网盘资源。

温馨提示:若文章代码块中存在乱码或不能复制,请联系作者,或直接加入知识星球中阅读(收获定大于付出),原文链接:https://articles.zsxq.com/id_wpw8sp4z49tq.html

MySQL 插件介绍

Categraf MySQL 采集插件,与 Prometheus mysql_exporter 插件类似,都是需要在 MySQL 数据库中创建监控账号,并授予相应的权限(低权限),然后通过该账号执行 SQL 语句采集指标数据,例如连到 MySQL 上执行 show global status、show global variables 等命令。与之不同的是 Categraf 支持通过配置文件,采集自定义查询语句指标数据,例如:MySQL 慢查询日志、MySQL 连接数、MySQL 核心数,乃至业务表字段数据的变化等,另外,其仅支持将采集的指标数据 PUSH 到 Prometheus、VictoriaMetrics 时序数据库中,不支持 PULL 方式。

Categraf MySQL 插件文档:https://flashcat.cloud/docs/content/flashcat-monitor/categraf/plugin/mysql/

MySQL 插件配置

Categraf 内置 MySQL 的监控插件配置文件在 Categraf 的 conf/input.mysql/mysql.toml ,作者在这里做一个简单的配置说明,如下所示:

# # 采集间隔,单位秒
interval = 15

# # 定义全局要执行的自定义SQL,即若配置了多个 instance 都会执行。
[[queries]]
# # 最终指标名称 mysql_lock_wait_total
mesurement = "lock_wait"
metric_fields = [ "total" ]
timeout = "3s"
request = '''
SELECT count(*) as total FROM information_schema.innodb_trx WHERE trx_state='LOCK WAIT'
'''

# # 指定实例对象,一个 instance 对应一个 mysql 实例
# # 例如,配置了两个 mysql 实例
[[instances]]
address = "10.20.172.213:3306"
username = "monitor"
password = "weiyigeek.top"

[[instances]]
address = "10.20.172.214:3306"
username = "monitor"
password = "weiyigeek.top"

# # 是否使用 tls 等定制参数
# parameters = "tls=false"

# # 执行 show global status 语句采集的基础指标,默认开启
extra_status_metrics = true

# # 执行 show global variables 语句采集的扩展指标,默认关闭,若需要采集则将其设置 true
# extra_innodb_metrics = false

# # 采集 processlist 指标信息,默认不采集
# gather_processlist_processes_by_state = false
# gather_processlist_processes_by_user = false

# # 采集各个数据库的磁盘占用大小,若 DB 较大可能会很耗时,不建议采集,由于通常会采集主机磁盘空间使用率,所以这里用处不大。
# gather_schema_size = true
# # 采集所有的 table 的磁盘占用大小,若 DB 较大可能会很耗时,不建议采集,
# gather_table_size = false

# # 采集系统表的大小,通常不用,设置为false
# gather_system_table_size = false

# # 若为 MySQL 主从复制环境,则可以开启下面的采集指标, 默认开启
# gather_slave_status = true

# # 执行超时时间,单位秒
timeout_seconds = 3

# # 采集周期的倍数 = global.interval * interval_times ,当 interval 为 15 时,interval_times 设置为 2 时,则采集周期为30s
interval_times = 2

# # 非常重要:自定义指标标签,例如:
labels = { job="categraf_mysql", instance="10.20.172.214:3306", names="MySQL测试数据库", company="it", env="test", region="cq-yubei"}

# # MySQL TLS 安全连接配置,通常情况下 MySQL 未开启 TLS ,特殊业务除外,默认不开启
# use_tls = false
# tls_min_version = "1.2"
# tls_ca = "/etc/categraf/ca.pem"
# tls_cert = "/etc/categraf/cert.pem"
# tls_key = "/etc/categraf/key.pem"
# # 若使用自签证书,则可以开启下面的配置
# insecure_skip_verify = true

# # 自定义 SQL 查询进行指标采集,但只针对单个 instance 配置,若需要全局配置则在 [[queries]] 下配置
[[instances.queries]]
mesurement = "user"
metric_fields = [ "total" ]
# label_fields = [ "alias" ]
# field_to_append = ""
timeout = "3s"
request = '''
select 'user_count' as alias, count(User) as total from mysql.user where User NOT LIKE 'mysql%';
'''

MySQL 插件内置指标

描述:通过上面的学习,我们已经知道 categraf 采集工具内置了针对 MySQL 的监控指标,我们可以通过其源代码了解到采集了 MySQL 数据库中那些指标,当然了你也可参考本文第三部分的【#可视化监控】章节进行查看到相关指标

在 MySQL 插件缺省配置文件中,作者总结了一部分 categraf 采集 MySQL 的内置指标名称,更多指标请参考源码:

$ ./categraf -inputs mysql -test | grep "mysql_" > mysql_metrics.txt

 

相关推荐