前面已经介绍了分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控,但是没有提供可以直接使用的Key,太过简陋,监控效果不佳。要想更加仔细的监控Mysql,业内同学们都会选择采用Percona Monitoring Plugins监控MySQL。Percona有比较详细的监控Mysql的模版以及脚本,它提升了在高负载情况下的InnoDB的性能、为运维人员提供一些非常有用的性能诊断工具;另外它有更多的参数和命令来控制服务器行为。废话不多说,下面记录下使用Percona Monitoring Plugins监控MySQL的操作过程:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
被监控主机的zabbix的部署路径是
/data/zabbix
。
[root@
open
~]
# ll /data/zabbix/
total 28
drwxr-xr-x 2 zabbix zabbix 4096 Jul 19 10:24 bin
drwxr-xr-x 3 zabbix zabbix 4096 Sep 5 14:12 etc
drwxr-xr-x 2 zabbix zabbix 4096 Jul 19 10:24 lib
drwxr-xr-x 2 zabbix zabbix 4096 Jul 19 10:24 logs
drwxr-xr-x 2 zabbix zabbix 4096 Jul 19 10:24 monitor_scripts
//
这个是存放监控脚本的目录
drwxr-xr-x 3 zabbix zabbix 4096 Jul 19 10:24 sbin
drwxr-xr-x 4 zabbix zabbix 4096 Jul 19 10:24 share
被监控主机的mysql路径是
/usr/local/mysql
[root@
open
~]
# ps -ef|grep mysql
root 9170 8258 0 11:23 pts
/0
00:00:00
grep
mysql
root 19000 1 0 Sep01 ? 00:00:00
/bin/sh
/usr/local/mysql//bin/mysqld_safe
--datadir=
/data/mysql/data
--pid-
file
=
/data/mysql/data/mysql
.pid
mysql 19776 19000 0 Sep01 ? 00:07:26
/usr/local/mysql/bin/mysqld
--basedir=
/usr/local/mysql/
--datadir=
/data/mysql/data
--plugin-
dir
=
/usr/local/mysql//lib/plugin
--user=mysql --log-error=
/data/mysql/data/mysql-error
.log --pid-
file
=
/data/mysql/data/mysql
.pid --socket=
/usr/local/mysql/var/mysql
.sock --port=3306
如下是在zabbix被监控机上的操作:
1)需要安装php脚本运行环境
percona监控zabbix的脚本是使用PHP写的,所以需要准备好php运行环境,这里直接选择用yum安装就可以满足要求了:
[root@
open
~]
# yum install -y php php-mysql
确保被监控主机没有安装percona相关软件,如果有就卸载掉!
[root@
open
~]
# rpm -qa|grep percona
[root@
open
~]
#
2)下载官方percona模版 (https:
//www
.percona.com
/downloads/percona-monitoring-plugins/
)
直接下载:https:
//pan
.baidu.com
/s/1c1IE7zq
提取密码:trp5
[root@
open
~]
# wget https://www.percona.com/downloads/percona-monitoring-plugins/1.1.6/percona-zabbix-templates-1.1.6-1.noarch.rpm
[root@
open
~]
# rpm -ivh percona-zabbix-templates-1.1.6-1.noarch.rpm
[root@
open
~]
# ll /var/lib/zabbix/percona
total 8
drwxr-xr-x 2 root root 4096 Sep 5 14:35 scripts
drwxr-xr-x 2 root root 4096 Sep 5 14:35 templates
[root@
open
~]
# ll /var/lib/zabbix/percona/scripts
total 64
-rwxr-xr-x 1 root root 1251 Jan 11 2016 get_mysql_stats_wrapper.sh
-rwxr-xr-x 1 root root 59640 Jan 11 2016 ss_get_mysql_stats.php
[root@
open
~]
# ll /var/lib/zabbix/percona/templates
total 284
-rw-r--r-- 1 root root 18866 Jan 11 2016 userparameter_percona_mysql.conf
-rw-r--r-- 1 root root 269258 Jan 11 2016 zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml
如上,安装percona后会在
/var/lib/zabbix/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. (标签无效
"/zabbix_export/date"
:
"YYYY-MM-DDThh:mm:ssZ"
预计)
经过核查,这个原因是模版错误,是因为percona官方上1.1.6还是zabbix2.0的版本模版,所以需要跟新上来匹配zabbix3.0的模版规范,而且这个zabbix模版还是直接copy的cacti模版,比较粗糙,
用
more
查看就可以看到里面都是cacti的内容,可见percona官网对zabbix也不是很重视嘛,至少不如cacti那样重视的,如下所示:
处理办法:修改配置模版加载成功
在原来的zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6_1.xml之上进行修改,改完后就可以
import
导入进去了!!!!
修改好的新模版文件下载地址是:https:
//pan
.baidu.com
/s/1i5j8IJ7
提取密码:ab8a
--------------------------------------------------------------------------------------------------------------------------------------------------
将percona的两个脚本放到被监控主机的
/data/zabbix/monitor_scripts
目录下
[root@
open
~]
# mv /var/lib/zabbix/percona/scripts/* /data/zabbix/monitor_scripts/
3)添加参数支持
在被监控机器上将userparameter_percona_mysql.conf拷贝到zabbix_agent的对应配置目录下
[root@
open
~]
# rsync -avpgolr /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /data/zabbix/etc/zabbix_agentd.conf.d/
[root@
open
~]
# sed -i 's#/var/lib/zabbix/percona/scripts/#/data/zabbix/monitor_scripts/#g' /data/zabbix/etc/zabbix_agentd.conf.d/userparameter_percona_mysql.conf
注意修改客户端机器的zabbix_agentd.conf文件,增加Include 把userparameter_percona_mysql.conf 所在的目录增加进去:
[root@
open
~]
# cat /data/zabbix/etc/zabbix_agentd.conf|grep Include
### Option: Include
Include=
/data/zabbix/etc/zabbix_agentd
.conf.d/
# Include=/usr/local/etc/zabbix_agentd.userparams.conf
# Include=/usr/local/etc/zabbix_agentd.conf.d/
# Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf
4)修改监控脚本
修改
/data/zabbix/monitor_scripts/get_mysql_stats_wrapper
.sh脚本
-----------------------------------注意----------------------------------
若mysql没有使用默端口3006,比如mysql使用的是3317。则还需要修改如下脚本文件,记住不要在这里被坑了!改端口号码文件:
1-> 这里要先建好这个文件,否则会报
rm
权限错误
[root@
open
~]
# touch /tmp/localhost-mysql_cacti_stats.txt:3317
[root@
open
~]
# chown -R zabbix.zabbix /tmp/localhost-mysql_cacti_stats.txt:3317
2-> 修改端口脚本
[root@
open
~]
# vim /data/zabbix/monitor_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`
如果mysql使用的是默认的3306端口,那么就不用修改端口了(即将上面的:3317去掉)!
--------------------------------------------------------------------------
修改mysql执行命令路径(如下脚本,可以监控到mysql的主从同步状态)
[root@
open
~]
# vim /data/zabbix/monitor_scripts/get_mysql_stats_wrapper.sh
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
-p123456 -e
'SHOW SLAVE STATUS\G'
|
egrep
'(Slave_IO_Running|Slave_SQL_Running):'
|
awk
-F:
'{print $2}'
|
tr
'\n'
','
`
然后修改
/data/zabbix/monitor_scripts/ss_get_mysql_stats
.php脚本,这里主要修改用户名密码:
[root@
open
~]
# vim /data/zabbix/monitor_scripts/ss_get_mysql_stats.php
$mysql_user =
'zabbixmysql'
;
$mysql_pass =
'mysql@12345678'
;
$mysql_port = 3306;
登陆mysql创建监控要用的账号(授予的权限,最后手动登录验证下)
[root@
open
~]
# mysql -p123456
mysql> GRANT SELECT, PROCESS, SUPER, REPLICATION CLIENT ON *.* TO
'zabbixmysql'
@
'localhost'
IDENTIFIED BY
"mysql@12345678"
;
Query OK, 0 rows affected (0.03 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
5)修改被监控主机的zabbix权限,并重启zabbix_agent服务
最后记得重启下zabbix_agent(重启前要保证zabbix的配置文件和监控脚本的权限正确,否则就会采集不到监控数据)
[root@
open
~]
# chown -R zabbix.zabbix /data/zabbix
[root@
open
~]
# chmod -R 755 /data/zabbix/monitor_scripts/*
[root@
open
~]
# /etc/init.d/zabbix_agentd restart
另外,要添加zabbix的
sudo
权限
[root@
open
~]
# cat /etc/sudoers
......
zabbix ALL=(ALL) NOPASSWD:
/sbin/blockdev
#Defaults requiretty //如果有这个配置项,那么就注释掉这个。没有的话就忽略
6)测试下监控项
在客户端zabbix-agentd测试下:
[root@
open
~]
# /usr/bin/php -q /data/zabbix/monitor_scripts/ss_get_mysql_stats.php --host localhost --items gg
gg:6
[root@
open
~]
#
在服务器zabbix-server测试下(172.29.16.30是被监控主机的ip地址):
[root@zabbix ~]
# /data/zabbix/bin/zabbix_get -s 172.29.16.30 -p 10050 -k "MySQL.Threads-connected"
1
[root@zabbix ~]
# /data/zabbix/bin/zabbix_get -s 172.29.16.30 -p 10050 -k "MySQL.Handler-commit"
3
---------------------------------------------注意------------------------------------------------
如果对zabbix_server本机进行测试(即zabbix_server本机也作为zabbix_agent),那么-s后的ip要用zabbix_server本机的内网ip(即要和zabbix_agent配置文件里配置的地址一致),而不能使用127.0.0.1
否则会报错:Check access restrictions
in
Zabbix agent configuration error(这个命令只能在zabbix的server端使用,如果在agent端使用就会提示这个错误:)
|
接着在zabbix的web监控界面里添加被监控主机,选择添加"Percona MySQL Server Template"模板,如下
最后就来看下percona插件监控mysql的效果图了(可以看出percona mysql的监控项有很多):
***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************
本文转自散尽浮华博客园博客,原文链接:http://www.cnblogs.com/kevingrace/p/6256395.html
,如需转载请自行联系原作者