前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单分析percona-zabbix-templates(r10笔记第6天)

简单分析percona-zabbix-templates(r10笔记第6天)

作者头像
jeanron100
发布2018-03-19 17:36:36
7090
发布2018-03-19 17:36:36
举报

当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这个监控项,就需要这样配置一番。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档