目前使用的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/


使用zabbix自带MySQL监控模板监控MySQL_mysql

使用zabbix自带MySQL监控模板监控MySQL_mysql_02

使用zabbix自带MySQL监控模板监控MySQL_zabbix_03



  1. 监控原理

    建立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