zabbix监控mysql

下面介绍两种监控MySQL服务的方法~

一、自定义监控参数

通过自定义参数简单监控服务的状态~~

  • 第一步:修改默认配置文件

zabbix-agent安装之后,在配置文件目录/etc/zabbix/zabbix_agentd.d下会自带一个MySQL的监控参数文件:

[root@zabbix-agent zabbix_agentd.d]# grep ^[a-Z] /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 
UserParameter
=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}' UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -N' UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive UserParameter=mysql.version,mysql -V

不过这个文件不能直接使用,因为没有设置数据库连接的用户名和密码,执行不会成功!修改上面标红的一行到如下结果(添加用户名和密码):

UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin -u root -p 123456 ping | grep -c alive
  • 第二步:重启zabbix-agent
systemctl restart zabbix-agent.service
  • 第三步:通过zabbix_get取值

在zabbix-server端运行zabbix_get命令,获取数据库运行情况:

[root@zabbix-server ~]# zabbix_get -s 10.0.0.12 -p 10050 -k mysql.ping
1

这里返回1表示数据库正在运行。。。

  • 第四步:页面配置监控项

 

  • 第五步:查看最新数据

检查能否查看到最新数据,如果能获取到值说明已经可以监控服务了,并且可以通过这个监控项来创建触发器

二、使用percona监控插件

 官网地址:https://www.percona.com

插件下载地址:https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm

  • 第一步:安装php环境

因为percona插件是通过php写的,因此首先需要安装php环境

yum -y install php php-mysql
  • 第二步:在zabbix-agent下载并安装percona插件
wget https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm
rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm

#查看安装的文件

[root@zabbix-agent src]# rpm -ql percona-zabbix-templates
/var/lib/zabbix/percona      #<==插件安装目录
/var/lib/zabbix/percona/scripts
/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh
/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php  #<==主php程序
/var/lib/zabbix/percona/templates
/var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf    #<==UserParameter配置文件,需要复制到/etc/zabbix/zabbix-agent.d/目录下
/var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml  #<==监控模板

  • 第三步:移动配置文件userparameter_percona_mysql.conf
cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
  • 第四步:配置密码文件

默认执行脚本/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php在调用时,需要在当前目录下找一个.cnf结尾的文件,具体内容如下:

[root@zabbix-agent scripts]# grep .cnf /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php
# .cnf extension.
if ( file_exists('/etc/cacti/' . basename(__FILE__) . '.cnf' ) ) {
   require('/etc/cacti/' . basename(__FILE__) . '.cnf');
   debug('Found configuration file /etc/cacti/' . basename(__FILE__) . '.cnf');
elseif ( file_exists(__FILE__ . '.cnf' ) ) {
   require(__FILE__ . '.cnf');
   debug('Found configuration file ' . __FILE__ . '.cnf');

由于这个文件默认不存在,因此我们需要创建这个文件,并在里面写入mysql连接的用户名和密码:

[root@zabbix-agent scripts]# cat /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf 
<?php
$mysql_user='root';
$mysql_pass='123456';

#这里我的mysql用户名为root和123456
  • 第五步:先测试一下这个监控脚本(如果能获取值,说明配置成功了!!)
[root@zabbix-agent scripts]# head -5 ../../percona/templates/userparameter_percona_mysql.conf   #<==随便找几个监控阐参数
UserParameter=MySQL.Sort-scan,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh kt
UserParameter=MySQL.slave-stopped,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh jh
UserParameter=MySQL.Com-replace,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh jz
UserParameter=MySQL.innodb-lock-structs,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh lp
UserParameter=MySQL.Com-load,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh kg

#使用脚本获取参数(说实话这几个参数是什么我也步太清楚,可以看上面的UserParameter来判断。。。)

[root@zabbix-agent scripts]# sh /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
0
[root@zabbix-agent scripts]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh kt
0
[root@zabbix-agent scripts]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh jh
0
[root@zabbix-agent scripts]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh jz
0
[root@zabbix-agent scripts]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh lp
0
[root@zabbix-agent scripts]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh kg
0
[root@zabbix-agent scripts]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
0

注意:如果socket文件不在默认路径下的话,配置文件get_mysql_stats_wrapper.sh第19行需要在这个参数里面增加socket文件的地址:RES=`HOME=~zabbix mysql -e 'SHOW SLAVE STATUS\G' | egrep

  • 第六步:修改权限

 

chown -R zabbix.zabbix /var/lib/zabbix/percona/

 

  • 第七步:重启zabbix-agent
systemctl restart zabbix-agent
  • 第八步:导入模板

将模板/var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml导入zabbix-server

导入的时候会报一个错误,内容如下:

这是由于这个插件默认用的zabbix2.0模板,时间戳有问题

解决办法:将zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml导入zabbix2.4中再导出,之后将新的导出xml导入到3.0中问题解决。

 这里有个已经修改好的模板:

链接:https://pan.baidu.com/s/1hwxxtqykTbXYMOylnNhO5w
提取码:xe46

模板导入成功:

  • 第九步:主机添加percona模板

  • 第十步:查看最新数据和实时图形

因为模板的监测间隔为5分钟,需要等待一段时间

  • 第二个报错问题 :

我在第一次测试的时候,发现一直获取不到数据,因此通过zabbix_get其中一个监控项的值,结果发现有如下报错:没权限???

而且zabbix-server也在抛出异常(应该早一些看日志的):

cannot convert value to numeric type

  • 解决办法:

在zabbix-agent上将这个文件赋予zabbix的权限即可:

[root@zabbix-agent zabbix_agentd.d]# chown -R zabbix.zabbix /tmp/localhost-mysql_cacti_stats.txt

要有正确数据才行:


 

最后,可以根据自己业务的实际需求,将不需要的监控项都清楚掉,不断优化监控模板!!

 

posted @ 2019-03-23 00:10  流光给给  阅读(519)  评论(0编辑  收藏  举报