目前使用的zabbix版本是2.2.3,自带MySQL监控模板Template App MySQL,只是监控项目比较少。如果只是想对MySQL进行基本的监控,可以使用这个模板,如果要详细监控MySQL的各种信息,例如数据库的各种状态,主从复制状态,InnoDB状态等信息需要另外编写模板。后续再讨论。
参考文章
http://os.51cto.com/art/201404/435139.htm
https://zabbix.org/mw/p_w_picpaths/d/d4/Template_App_MySQL-2.2.0.xml
http://blog.themilkyway.org/2013/11/how-to-monitor-mysql-using-the-new-zabbix-template-app-mysql/
监控原理
建立MySQL账号
GRANT USAGE ON *.* TO 'zabbixagent'@'localhost' IDENTIFIED BY 'zabbixagent';
flush privileges;
mysql和mysqladmin默认会读取连接参数的文件顺序是
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/mysql/etc/my.cnf
~/.my.cnf
--defaults-file= 只在指定的文件中读取默认参数
--defaults-extra-file= 全局文件读取完后再读取指定的文件
在/usr/local/zabbix/etc/目录下创建一个 .my.cnf 文件
[mysql] user=zabbixagent password=zabbixagent [mysqladmin] user=zabbixagent password=zabbixagent
例如
mysql --defaults-extra-file=.my.cnf -v 详细模式登陆MySQL
mysqladmin --defaults-extra-file=.my.cnf status 查看MySQL Server状态
mysqladmin --defaults-extra-file=.my.cnf ping 查看MySQL Server是否存活
echo "show global status where Variable_name='Uptime';"|mysql --defaults-file=.my.cnf -N
2.添加zabbix子配置文件
userparameter_mysql.conf
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';"|mysql --defaults-file=/usr/local/zabbix/etc/.my.cnf -N|awk '{print $$2}' UserParameter=mysql.ping,mysqladmin --defaults-file=/usr/local/zabbix/etc/.my.cnf ping|grep -c alive UserParameter=mysql.version,echo "select version();"|mysql --defaults-file=/usr/local/zabbix/etc/.my.cnf -N
这里要特别注意一下,awk后面的print $$2. 如果写成print $2 那么通过zabbix_get将获取不到第二列,二是直接显示正行数据。
添加后重新启动zabbix-agent
service zabbix-agent restart
3.在zabbix server端或zabbix proxy利用zabbix_get命令进行取值测试
$ /usr/local/zabbix/bin/zabbix_get -s 10.10.41.25 -k mysql.version
5.5.21-log
$ /usr/local/zabbix/bin/zabbix_get -s 10.10.41.25 -k mysql.ping
1
$ /usr/local/zabbix/bin/zabbix_get -s 10.10.41.25 -k mysql.status[Com_insert]
0