简单分析percona-zabbix-templates

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:     当Zabbix和Percona两者相遇,会擦出不少的开源火花来,众人拾柴火焰高,最终受益的还是大部分运维人员。     我很早就用过Percona提供的MySQL监控模板,但是却没有刨根问底,只是简单使用而已,自从定制了Orabbix之后,我还是信心满满,MySQL的数据字典相对要少很多,监控起来可能想必Oracle要少很多,不过关于Percona的这个插件,我还是带着好奇之心,内部是否有很多独门秘籍,我想好好学学那些监控项对应的SQL,好好弥补我对于MySQL监控的一些空缺,所以简单分析这个模板就排上了日程。
    当Zabbix和Percona两者相遇,会擦出不少的开源火花来,众人拾柴火焰高,最终受益的还是大部分运维人员。
    我很早就用过Percona提供的MySQL监控模板,但是却没有刨根问底,只是简单使用而已,自从定制了Orabbix之后,我还是信心满满,MySQL的数据字典相对要少很多,监控起来可能想必Oracle要少很多,不过关于Percona的这个插件,我还是带着好奇之心,内部是否有很多独门秘籍,我想好好学学那些监控项对应的SQL,好好弥补我对于MySQL监控的一些空缺,所以简单分析这个模板就排上了日程。
    首先是Percona monitoring Plugins for Zabbix这个插件,可以参考官网。https://www.percona.com/doc/percona-monitoring-plugins/1.1/zabbix/index.html里面已经列出了很详细的步骤,我就不再赘述了,我的目标是简单理解这些监控的出处和原理。
    因为这个插件是客户端的,所以选择了一台服务器在客户端查看。到达了相应的安装目录下,假设为:/home/app/zabbix/zabbix_agentd.conf.d/ 
可以看到配置文件userparameter_percona_mysql.conf的内容,类似下面的形式

如此来看监控项还是丰富啊,而且后面对应的参数很简介。这样的监控项总共有多少,大概是160多个。我想我算是找到了一个宝藏了,这么多的脚本可着实能好好潜心学习一番。
等等,我看了看脚本,发现有些不大对劲啊,怎么调用的都是同一个脚本。/home/app/zabbix/script/get_mysql_stats_wrapper.sh
好吧,一个就一个脚本,肯定脚本很大,也不影响代码阅读。
再次查看这个脚本,发现我又想错了。

这个脚本是大小是1333,大概就是1k的样子,这么大点能放多少代码,肯定远远不够啊。带着好奇心进入这个脚本。
原来这个脚本中不是实际的详细逻辑,这个脚本会生成一个所谓的cache文件,里面调用的脚本是一个php脚本ss_get_mysql_stats.php
大体的调用方式如下:
CMD="sudo /usr/local/php/bin/php -q $DIR/ss_get_mysql_stats.php --host $HOST --items gg"            
把生成的数据都放入/tmp/localhost-mysql_cacti_stats.txt  
          

这个cache文件是什么东东,就是调用后生成的数据信息。内容类似下面的样子:
 #cat /tmp/localhost-mysql_cacti_stats.txt
gg:19526110683 gh:2588 gi:330457818 gj:288709876 gk:-1 gl:-1 gm:-1 gn:-1 go:0 gp:0 gq:131064 gr:130907
就是把上面监控项的值按照参数来分组,比如参数gg,值为19526110683。
对应的就是监控项:
UserParameter=MySQL.Key-read-requests,/home/app/zabbix/script/get_mysql_stats_wrapper.sh gg         
而如果现学现用,就直接调用模板里引用的那个php脚本,也能得到参数gg对应的值。
# sudo /usr/local/php/bin/php -q /home/app/zabbix/script/ss_get_mysql_stats.php --host localhost --items gg
gg:19526142091   
这个参数值代表什么含义呢,继续在里面找找。查看代码,可以看到gg对应的是Key_read_requests,和监控项里的定义是一致的。

更为关键的是,我在脚本里找了半天相关的SQL语句,竟然一个都没有,这是什么情况。
继续往下看,发现原来是取的show status输出的结果,里面定义了不少的数组去存放和映射。

明白了套路,那里面引用了哪些命令呢,大概是这样的一些命令,而且难能可贵的是里面都给出了一些解释。

当然这个时候就会发现这个脚本的内容量很丰富了,里面定义了大量的函数。有些通过字面意思就能明白大体要做的操作了。

大师的脚本可以反复揣摩,其中值得学习的一个地方就是步骤很清晰,从注释就可以学习不少。
当然要抓住重点,那就是从main开始看起,有方向性。
把代码中的注释直接拿出来,对于理解也是大有裨益,这就是好脚本的一个特点。

可能因为里面有很多数组的处理,作者更钟爱于php,所以直接使用php来封装了,当然直接用shell封装也是可行的。这个应该就是基于个人喜好了。
通过这个简单的分析可以看到,这个脚本是基于一些看似简单的命令来得到一个MySQL的状态信息,而且从代码里也可以看到它也会对数据做一些二次处理,比如做一些数值统计。
看起来还是很繁琐的一个工作,在脚本里可以很清晰看出结构关系来。值得好好揣摩学习。
当然脚本运行的数据在Zabbix端也有一个映射。比如unflushed-log这个监控项,就需要这样配置一番。
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
存储 Linux Shell
Linux绝对路径和相对路径
在 Linux 中,简单的理解一个文件的路径,指的就是该文件存放的位置。 只要我们告诉 Linux 系统某个文件存放的准确位置,那么它就可以找到这个文件。指明一个文件存放的位置,有 2 种方法,分别是使用绝对路径和相对路径。 我们知道,Linux 系统中所有的文件(目录)都被组织成以根目录“/”开始的倒置的树状结构 绝对路径一定是由根目录 / 开始写起。例如,使用绝对路径的表示方式指明 bin 文件所在的位置,该路径应写为 /usr/bin,测试代码如下: [root@localhost ~]# bin bash: bin: command not found <-- 没有找到 [
414 0
|
9月前
|
机器学习/深度学习 人工智能 数据可视化
《AI与鸿蒙Next:建筑设计可视化的革新力量》
在建筑设计领域,可视化至关重要。人工智能通过快速生成方案、优化材质与纹理、智能照明模拟及细节增强,极大提升了设计效率和质量。鸿蒙Next图形渲染技术则凭借强大的物理渲染引擎、超分与超帧技术、智慧美学构图和多设备协同渲染,使建筑效果更加逼真细腻。两者的结合不仅缩短了设计周期,还增强了沟通协作,拓展了设计创意边界,为建筑设计行业带来了前所未有的变革与机遇。
187 4
|
监控 Linux 数据处理
lslocks:Linux系统中的锁信息查看利器
`lslocks`是Linux工具,用于查看系统上的文件锁信息,帮助诊断进程同步问题。它显示持有锁的进程、锁类型(如POSIX、flock)和状态。通过简洁的输出,用户能识别死锁和资源争用,优化性能。结合其他命令如`grep`和`awk`可增强分析能力。需适当权限运行,定期监控以预防并发访问问题,处理死锁时要谨慎。
|
存储 缓存 Dubbo
原来Dubbo中的缓存玩的这么花
原来Dubbo中的缓存玩的这么花
324 1
|
Shell Linux Go
酷玩Go命令行工具—Cobra
酷玩Go命令行工具—Cobra
189 0
|
存储 XML JSON
一个注解,搞定 SpringBoot 操作日志
一个注解,搞定 SpringBoot 操作日志
一个注解,搞定 SpringBoot 操作日志
拆分集合方法Lists.partition的使用
拆分集合方法Lists.partition的使用
465 0
|
API 持续交付 开发者
版本号命名规则
版本号命名规则
680 0
|
存储 安全 Java
【数据安全】如何使用 Vault 在 Spring Boot 中隔离数据库凭证
我将使用 Hashicorp Vault 作为秘密管理工具。所有数据库凭据都将存储在 Vault 中,我将在引导应用程序时检索这些凭据。
|
Shell Linux API
关于Linux中如何使用 systemd-run创建临时Cgroup来限制ad-hoc的资源消耗
分享一些临时命令资源限制的笔记 博文内容涉及: systemd-run 限制 ad-hoc 资源消耗基本原理 前后台 ad-hoc 资源限制 demo 理解不足小伙伴帮忙指正
494 0

热门文章

最新文章