使用自带的模板
在zabbix agent操作
vim /etc/zabbix/.my.cnf
[mysql]
host = localhost
user = root
password = xxx
port = 3326
socket = /var/lib/mysql/mysql3326.sock
[mysqladmin]
host = localhost
user = root
password = xxxx
port = 3326
socket = /var/lib/mysql/mysql3326.sock
sed -i 's@/var/lib/zabbix@/etc/zabbix@g' /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
/etc/init.d/zabbix-agent restart
之后在web界面添加mysql模板
mysql主从监控
vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mysql.replication,echo "show slave status\G;" | HOME=/etc/zabbix mysql | grep -E
"Slave_IO_Running|Slave_SQL_Running" | awk '{print $$2}'| grep -c Yes
zabbix_get -s 192.168.100.223 -k "mysql.replication"
如果上面返回的是2,那么是正常,代表Slave_IO_Running和Slave_SQL_Running两个状态都是Yes 其他值均不正常。
----------------------------------------------------------
MySQL的监控有很多种方案,如果你已经使用了Zabbix作为监控系统,那么集成进来就非常合适。而且使用Zabbix监控MySQL是
比较容易的,Zabbix官方也自带了MySQL监控模板,但是生产环境推荐使用percona的监控插件。
https://www.percona.com/doc/percona-monitoring-plugins/1.1/zabbix/index.html
下面让我们动手来完成添加一台MySQL数据库的监控工作。
1.安装percona仓库
# rpm -ivh http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
2.部署监控环境
percona的监控插件是php编写的。通过php连接mysql来获取相关的数据,所以需要你在本地安装zabbix agent的同时,部署php和php-mysql。
[root@linux-node1 ~]# yum install zabbix22-agentphp php-mysql
3.安装percona的zabbix模版
[root@linux-node1 ~]# yum install -ypercona-zabbix-templates
[root@linux-node1 ~]# rpm -qlpercona-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
/var/lib/zabbix/percona/templates
/var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf
/var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml
可以看到他的组成部分有一个shell脚本,一个php脚本,一个zabbix的配置文件,和一个Zabbix 模版的xml。下面我们需要引用
配置文件,并在Zabbix上来导入该模版。
# vim /etc/zabbix_agentd.conf
Include=/etc/zabbix_agentd.conf.d/
# mkdir/etc/zabbix_agentd.conf.d/
4.复制用户自定义配置项到Zabbix配置目录
# cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix_agentd.conf.d/
5.让PHP可以连接到MySQL上
# vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php.cnf
<?php
$mysql_user = 'root';
$mysql_pass = 's3cret'; //设置为你mysql的相关用户名和密码。
6.测试监控脚本
# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
7.修改监控脚本
默认情况下,监控MySQL主从的,直接是硬编码在get_mysql_stats_wrapper.sh中。如果你的mysql安装路径或者socket不同,需
要手动修改下才可以使用。如果是从库,测试,返回1,证明该脚本正常。
# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slave
1
8.导入zabbix模版
将/var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.6.xml下载到本
地,然后在zabbix上导入
Configuration -> Templates -> Import
下面你就可以给你的MySQL数据库指定监控模板了,由于篇幅原因就不在截图,相信这难不倒你!
生产环境的注意事项
MySQL监控用户授权
在我们监控MySQL的时候,需要连接到MySQL数据库,但是在进行用户授权的时候,要遵循权限最小化的原则,分配最简单够用的权限即
可,下面是我给生产MySQL的监控用户授权。
mysql> grant select,process,replicationclient on *.* to monitor@'192.168.1.11' identified by 'monitor@xx';
mysql> flush privileges;
process通过这个权限,用户可以执行SHOWPROCESSLIST和KILL命令。默认情况下,每个用户都可以执行SHOW PROCESSLIST命令,但
是只能查询本用户的进程。
replication client拥有此权限可以查询master server、slave server状态。
彻底清除MySQL Slave信息
在生产环境,MySQL Master和Slave进行主从切换的时候,Slave成功升级为主库,那么这个时候就需要彻底清理从库的信息,不然监
控系统会认为这台服务器是Slave,而且会报主从同步失败。
其实非常的简单,只需要以下两步:
stop slave;
reset slave all;
RESET SLAVE ALL是清除从库的同步复制信息、包括连接信息和二进制文件名、位置。
从库上执行这个命令后,使用show slave status将不会有输出。