上次用了zabbix自带的mysql插件来监控mysql数据库,但是太过简陋了,对于我们dba来说,基本没有啥作用,所以需要做更详细的监控,而percona就有这个详细监控的模版以及脚本,正好拿过来用。
percona监控zabbix的脚本使用php写的,所以需要准备好php运行环境,这里直接用yum安装就可以满足要求了:
yum install -y php php-mysql |
去percona官网下载:
[root@zabbix_serv_121_12 percona]# wget https://www.percona.com/downloads/percona-monitoring-plugins/1.1.6/percona-zabbix-templates-1.1.6-1.noarch.rpm
[root@zabbix_serv_121_12 percona]# rpm -ivh percona-zabbix-templates-1.1.6-1.noarch.rpm warning: percona-zabbix-templates-1.1.6-1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY Preparing... ########################################### [100%] 1:percona-zabbix-template########################################### [100%]
Scripts are installed to /var/lib/zabbix/percona/scripts Templates are installed to /var/lib/zabbix/percona/templates [root@zabbix_serv_121_12 percona]#
|
看到会生成2个目录,/var/lib/zabbix/percona/scripts是监控脚本目录,/var/lib/zabbix/percona/templates是监控mysql的xml模版目录,然后把/var/lib/zabbix/percona/templates/目录下的模版文件zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6_1.xml复制出来,在zabbix的管理界面import导入进去,但是报如下错误:
Import failed
Details
Invalid XML tag "/zabbix_export/date":"YYYY-MM-DDThh:mm:ssZ" is expected.
经过核查,这个原因是模版错误,是因为percona官方上1.1.6还是zabbix2.0的版本模版,所以需要跟新上来匹配zabbix3.0的模版规范,而且这个zabbix模版还是直接copy的cacti模版,比较粗糙,用more查看就可以看到里面都是cacti的内容,可见percona官网对zabbix也不是很重视嘛,至少不如cacti那样重视的,如下所示:
[root@zabbix_serv_121_12 scripts]# more get_mysql_stats_wrapper.sh |grep cacti CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt" TIMEFLM=`stat -c %Y /tmp/$HOST-mysql_cacti_stats.txt` [root@zabbix_serv_121_12 scripts]# [root@zabbix_serv_121_12 scripts]# [root@zabbix_serv_121_12 scripts]# more ss_get_mysql_stats.php |grep cacti $mysql_user = 'cactiuser'; $mysql_pass = 'cactiuser'; if ( file_exists('/etc/cacti/' . basename(__FILE__) . '.cnf' ) ) { require('/etc/cacti/' . basename(__FILE__) . '.cnf'); debug('Found configuration file /etc/cacti/' . basename(__FILE__) . '.cnf'); $cache_file = "$cache_dir/$sanitized_host-mysql_cacti_stats.txt" . ($port != 3306 ? ":$port" : ''); [root@zabbix_serv_121_12 scripts]# |
本篇blog原始地址:http://blog.csdn.net/mchdba/article/details/51447750,谢绝转载
在原来的zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6_1.xml之上进行修改,改完后就可以import导入进去了,我将修改好的模版文件share下,地址是:http://download.csdn.net/detail/mchdba/9522634
拷贝userparameter_percona_mysql.conf 文件到被监控的mysql服务器上
[root@zabbix_serv_121_12 ~]# scp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf 192.161.3.62:/etc/zabbix/zabbix_agentd.d/ The authenticity of host '192.161.3.62 (192.161.3.62)' can't be established. RSA key fingerprint is 24:b4:e8:76:08:89:e8:3b:75:c7:d3:34:79:19:ba:7c. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.161.3.62' (RSA) to the list of known hosts. [email protected]'s password: userparameter_percona_mysql.conf 100% 18KB 18.4KB/s 00:00 [root@zabbix_serv_121_12 ~]# |
修改客户端的zabbix_agentd.conf文件,增加Include 把userparameter_percona_mysql.conf 所在的目录增加进去:
# 实际测试过程中,貌似不添加也行 vim /etc/zabbix/zabbix_agentd.conf Include=/etc/zabbix/zabbix_agentd.d/userparameter_percona_mysql.conf |
修改vim /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh脚本,若mysql没有使用默端口3006,则还需要修改如下脚本文件,哥在这里被坑了好久,修改端口号码文件:
# 1,这里要先建好这个文件,否则会报rm权限错误 vim /tmp/localhost-mysql_cacti_stats.txt:3317 chown -R zabbix.zabbix /tmp/$HOST-mysql_cacti_stats.txt:3317
#2,修改端口脚本 vim /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt " 换成: CACHEFILE="/tmp/$HOST-mysql_zabbix_stats.txt:3317"
TIMEFLM=`stat -c %Y /tmp/$HOST-mysql_cacti_stats.txt` 换成: TIMEFLM=`stat -c %Y /tmp/$HOST-mysql_zabbix_stats.txt:3317`
#3,修改mysql执行命令路径 #RES=`HOME=~zabbix mysql -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','` 换成: RES=`/usr/local/mysql/bin/mysql -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','`
|
修改vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php脚本,这里主要修改用户名密码:
# 修改用户名密码 vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php $mysql_user = 'zabbixmoniter'; $mysql_pass = 'ys_ipowerlong0418'; $mysql_port = 3306; |
GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT ON *.* TO 'zabbixmoniter'@'localhost'
IDENTIFIED BY "ys_iprlong0418";
mysql> GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT ON *.* TO 'zabbixmoniter'@'localhost' IDENTIFIED BY "ys_iprlong0418"; Query OK, 0 rows affected (0.06 sec)
mysql> |
在客户端zabbix-agentd测试下:
[root@db_m2_slave2 ~]# /usr/bin/php -q/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --itemsgg
gg:13
[root@db_m2_slave2 ~]#
在服务器zabbix-server测试下:
[root@zabbix_serv_121_12 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.161.3.73-p10050 -k "MySQL.Threads-connected"
1
[root@zabbix_serv_121_12 ~]#
[root@zabbix_serv_121_12 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.161.3.73-p10050 -k "MySQL.Handler-commit"
8777484
[root@zabbix_serv_121_12 ~]#
在hosts里面的templates里面添加percona mysql 的连接,就可以加入percona mysql模版监控了,加完,会看到items增加到262个,graphs增加55个,如022.png所示:
大概有40几个监控图,这里列出来平常经常会关注的3个图看看效果,虽然比不上cacti的多样性,不过也能暂时满足要求了:
比如InnoDBBuffer Pool,如021.png所示:
比如MySQLTransactions Handler,如023.png所示:
比如MySQLProcesslist,如024.png所示:
先在mysql slave的agent里面需要check下看是否生效:
[root@azure_orcl_dbm2_3_13 scripts]# sh /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slave ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 0 [root@azure_orcl_dbm2_3_13 scripts]# |
所以需要配置下访问mysql的一些基本参数:
#在my.cnf配置用户名密码、sock路径 vim /usr/local/mysql/etc/my.cnf [mysql] user=zabbixmoniter password=ys_ipowerlong0418 socket=/usr/local/mysql/mysql.sock |
再check试试,就可以看到了:
[root@azure_orcl_dbm2_3_13 scripts]# sh /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slave 1 [root@azure_orcl_dbm2_3_13 scripts]# |
最好在zabbix管理界面,进入Hosts的mysql从库里面,进入triggers选项栏下面会看到从percona模版加载进来的slave监控项“Slave isstopped on {HOST.NAME}”,过几分钟,就会看到slave监控生效了,如下图025.png所示: