zabbix日常监控项mysql

Posted 无敌仙人掌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix日常监控项mysql相关的知识,希望对你有一定的参考价值。

 

参考文档:

percona官方文档:https://www.percona.com/doc/percona-monitoring-plugins/LATEST/zabbix/index.html

zabbix2.4的安装方法:https://www.cnblogs.com/irockcode/p/6752316.html

其他博主文档:http://blog.51cto.com/xiaozhagn/2059713

 

 

先简单搭建mysql服务,用于后续zabbix监控来用

centos7.4客户端安装agent

http://blog.csdn.net/jas0n_liu/article/details/77099626

#关闭SElinux(临时关闭)
[root@db01 ~]# getenforce 
Enforcing
[root@db01 ~]# setenforce 0
[root@db01 ~]# getenforce 
Permissive
#永久关闭
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config 
setenforce 0

#防火墙设置,允许zabbix-agent的10050端口通过
firewall-cmd --permanent --add-port=10050/tcp 
firewall-cmd --reload
#或关闭防火墙
systemctl stop firewalld 
systemctl disable firewalld
#开始安装zabbix-agetn
rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
yum install zabbix-sender zabbix-agent zabbix-get
#更改配置文件vim /etc/zabbix/zabbix_agentd.conf
Server=<zbx-server的ip> 
ServerActive=<zbx-server的ip> 
Hostname=<本机的名字>

#设置开启启动项
systemctl start zabbix-agent.service 
systemctl enable zabbix-agent.service

#永久修改主机名:
hostnamectl set-hostname xxx 

 

 

安装mysql数据库(模拟测试使用)

http://www.cnblogs.com/bigbrotherer/p/7241845.html   #centos7.4 安装数据库

 在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB

1、下载并安装MySQL官方的 Yum Repository
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm

2、安装mysql yum -y install mysql-community-server

这步可能会花些时间,安装完成后就会覆盖掉之前的mariadb。
至此MySQL就安装完成了,然后是对MySQL的一些设置。

 

mysql的基础设置

 

#启动mysql
systemctl start  mysqld.service
systemctl status mysqld.service

此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:

 

[root@db01 ~]# grep "password" /var/log/mysqld.log
2018-03-09T08:20:27.838373Z 1 [Note] A temporary password is generated for root@localhost: p(+mL;zI:9+T     #密码就是它啦!

 

[root@db01 ~]# mysql -uroot -p
Enter password:

#如果需要设置简易密码可以先执行下边两条,否则略过

mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;

#设置密码

mysql> ALTER USER \'root\'@\'localhost\' IDENTIFIED BY \'zabbix123456\';

#为了安全,可以使用下边的授权方式

GRANT USAGE,PROCESS,SUPER,REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO \'zabbixagentd\'@\'localhost\' IDENTIFIED BY \'SWSHgzp3Pj3vcIdK\';

flush privileges;

 

#但此时还有一个问题,就是因为安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉:

yum -y remove mysql57-community-release-el7-10.noarch

到此安装mysql完成!!!

  

 以下便是zabbix-percona的安装过程

zabbix就自带的MySQL插件来监控mysql数据库,但是你会发现自带的mysql监控项是很少的,为了做更详细的监控,percona提供了这个详细监控的模版以及脚本,解决了监控不全面的问题。

 https://www.percona.com/downloads/percona-monitoring-plugins/LATEST/

  

1、percona插件安装

 1 #官网下载percona的rpm包,我这里是下载的是1.1.8版本的
 2 cd /usr/local/src/
 3 yum -y install https://www.percona.com/downloads/percona-monitoring-plugins/percona-monitoring-plugins-1.1.8/binary/redhat/7/x86_64/percona-zabbix-templates-1.1.8-1.noarch.rpm
 4 
 5 #安装percona的rpm包,安装php插件
 6 yum -y install percona-zabbix-templates php php-mysql
 7 
 8 #查看percona-zabbix-templates的安装信息
 9 [root@server zabbix]# rpm -ql percona-zabbix-templates
10 /var/lib/zabbix/percona
11 /var/lib/zabbix/percona/scripts
12 /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh   #监控获取MySQL状态的
13 /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php    #配置连接数据库用户名密码的,用shell来调用PHP。
14 /var/lib/zabbix/percona/templates
15 /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf    #要放在agent端/etc/zabbix/zabbix_agentd.d/下面的
16 /var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml  #这个是模板,需要导入到zabbix3.4中。
17     #使用sz 把该模板导出到本地,再导入到zabbix2.4中后再导出该模板才能正常导入到zabbix3.4中;
18 
19     已倒好的模板地址如下,可直接导入到zabbix3.4中:
20 
21      centos7版:https://pan.baidu.com/s/1-dTDwYNCCrvIh01dO4BEHA
22 
23     centos6版:链接:https://pan.baidu.com/s/1MsXMPwC2xPA78z8bnrO5Eg 密码:7i7d
24 
25  
26 
27 [root@db01 src]# ps -ef|grep mysql  #mysql的安装路径 /usr/sbin/mysql
28 mysql 10587 1 0 16:20 ? 00:00:01 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
29 root 10719 10630 0 16:49 pts/2 00:00:00 grep --color=auto mysql

 

 

2、进入templates目录,把模板文件复制到zabbix_agentd.conf.d目录下 

[root@localhost ~]# cd /var/lib/zabbix/percona/templates/
[root@localhost templates]# ll
总用量 284
-rw-r--r--. 1 root root  18866 1月  10 22:46 userparameter_percona_mysql.conf
-rw-r--r--. 1 root root 269258 1月  10 22:46 zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
[root@localhost templates]# mv userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
[root@localhost templates]#chown -R zabbix.zabbix /etc/zabbix/
[root@localhost templates]#chmod -R 755 /etc/zabbix/zabbix_agentd.d
#修改配置文件

#重启agent服务
systemctl restart zabbix-agent.service

  

3、修改监控脚本

参考文档:https://www.cnblogs.com/kevingrace/p/6256395.html

修改/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh脚本

-----------------------------------注意----------------------------------
若mysql没有使用默端口3006,比如mysql使用的是3317。则还需要修改如下脚本文件,记住不要在这里被坑了!改端口号码文件  #本次为3306
1-> 这里要先建好这个文件,否则会报rm权限错误
touch /tmp/localhost--mysql_zabbix_stats.txt:3317
chown -R zabbix.zabbix /tmp/localhost-mysql_zabbix_stats.txt:3317
#如果mysql使用的是默认的3306端口,那么就不用修改端口了(即将上面的:3317去掉)!

2-> 修改脚本

 [root@db01 scripts]# vim get_mysql_stats_wrapper.sh

CACHEFILE="/tmp/$HOST-mysql_cacti_stats.txt "
换成:
CACHEFILE="/tmp/$HOST-mysql_zabbix_stats.txt"
 
TIMEFLM=`stat -c %Y /tmp/$HOST-mysql_cacti_stats.txt`
换成:
TIMEFLM=`stat -c %Y /tmp/$HOST-mysql_zabbix_stats.txt`
 
#注释掉下一行,添加echo一行
#rm -f $CACHEFILE

echo "" > $CACHEFILE

 

RES=`HOME=~zabbix mysql -e \'SHOW SLAVE STATUS\\G\' egrep \'(Slave_IO_Running|Slave_SQL_Running):\' awk -F: \'{print $2}\' tr \'\\n\' \',\'`

换成:

RES=`/usr/sbin/mysql -uroot -pzabbix123456 -e \'SHOW SLAVE STATUS\\G\' | egrep \'(Slave_IO_Running|Slave_SQL_Running):\' | awk -F: \'{print $2}\' | tr \'\\n\' \',\'`

 

 

  从库记得添加下边这行,要不mysql-salve监控不到;最好主从都加。

 

4、然后修改/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php脚本,这里主要修改用户名密码 

$mysql_user = \'root\';
$mysql_pass = \'zabbix123456\';
$mysql_port = 3306;

  

5、其他操作

[root@db01 scripts]# chown -R zabbix.zabbix /var/lib/zabbix/
[root@db01 scripts]# chmod -R 755 /var/lib/zabbix/percona/scripts/
替换命令::%s/from/to/g

  

6、测试、排除故障

参考文档:http://blog.csdn.net/mchdba/article/details/51447560

zabbix-agent端测试

[root@db01 scripts]# /usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items gg
gg:6

[root@db01 ~]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh nj
34673

zabbix-server端测试

[root@zabbix ~]# zabbix_get -s 10.0.0.111 -p 10050 -k "MySQL.Handler-commit"
5
[root@zabbix ~]# zabbix_get -s 10.0.0.111 -p 10050 -k "MySQL.Threads-connected"
1

 

7、zabbix web页面添加主机的时候选择mysql模板即可

 

 

 

#需要参考的博文:

搭建主要参考:https://www.cnblogs.com/kevingrace/p/6256395.html

排错主要参考:http://blog.csdn.net/mchdba/article/details/51447560

瞄了一眼:https://www.cnblogs.com/caoxiaojian/p/5706992.html

 

- - - -  - - - - - -以下知识待用到后再研究 -  - - - - - - - - -

测试脚本能否获取到数据库的状态信息

该脚本需测试两部分内容

1. MySQL实例本身的状态变量

2. MySQL是否为Slave

 

测试MySQL实例本身的状态变量

# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg

 

测试MySQL是否为Slave

# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slave

返回0和1是正常值,返回“Access denied”则有问题。

以上是关于zabbix日常监控项mysql的主要内容,如果未能解决你的问题,请参考以下文章

使用 Zabbix 监控 Nginx MySQL,以及自定义监控项

zabbix--自定义监控项vsftpd

zabbix--自定义监控项vsftpd

zabbix监控mysql+报警

zabbix监控mysql报警

Zabbix添加自定义监控项之(监控mysql状态)