十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
MySQL自定义监控
网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了双台子免费建站欢迎大家使用!
需求:公司需要做mysql的数据监控,对mysql的状态,流量进行监控。
分析:zabbix自动就有Template App MySQL模版,我们只要添加mysql监控脚本就可以实现自定义监控。
配置如下:
zabbix的服务端搭建,这里不再演示,我这里的zabbixserver已经配置好的了,直接进入mysql监控构建。
mysql模板是 zabbix系统提供的,进入 zabbix web 后台,配置-->主机群组-->点击“创建主机群组”-->选择template群组,选择模板“TemplateApp MySQL,Templdate OS Linux”,TemplateApp Zabbix Agen;TemplateApp MySQL依赖于模板TemplateApp Zabbix Agent所以也要添加。如图1、图2所示:
图1
图2
2、部署agent客户端,使用ansible一健安装,详细可以参考我安装过程https://blog.51cto.com/xiaozhagn/1975084
3、建立主机,添加zabbix户端主机,添加模板。
配置-->主机-->点击创建主机--> 创建zabbix客户机(我这里是node2.1)-->选择模板选项,选择模板“Template App MySQL”、“Templdate OS Linux”,“TemplateApp Zabbix Agent“,最后点击左边的“添加”按钮,最后点击“更新”完成创建。如图3、图4所示:
图3
图4
4,开启mysql性能监控。
这里可以采用zabbix自带的mysql模版,但是也需要在mysql服务器上准备获取mysql status的脚本chk_mysql.sh,zabbix通过调用这个脚本来获取mysql的运行信息。
在配置zabbix客户端文件zabbix_agentd.conf里面添加mysql监控信息:
[root@node2 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
#添加以下内容
UserParameter=mysql.version,mysql -V UserParameter=mysql.status[*],/usr/local/zabbix/scripts/chk_mysql.sh $1 #这个是放脚本的路径 UserParameter=mysql.ping,netstat -ntpl |grep 3306 |grep mysql |wc |awk '{print $1}'
5、进入数据库添加mysql帐号,(我这里的数据库是用yum装的)
MariaDB [(none)]> GRANT PROCESS,SUPER,REPLICATION CLIENT ON *.* TO zabbix@'127.0.0.1' IDENTIFIED BY 'xiaozhang';
6、接下来准备mysql的运行信息监控,需要准备新的mysql监控脚本chk_mysql.sh。(名称要与在zabbix客户端添加的脚本路径的名称一致)
[root@node2 scripts]# mkdir /usr/local/zabbix/scripts/
[root@node2 scripts]# cat /usr/local/zabbix/scripts/chk_mysql.sh
#!/bin/sh # ------------------------------------------------------------------------------- # FileName: check_mysql.sh # Date: 2018/1/10 # Author: xiaozhang # Email: 847536944@qq.com MYSQL_SOCK="/var/lib/mysql/mysql.sock" MYSQL_USER='zabbix' MYSQL_PWD='xiaozhang' MYSQL_HOST='127.0.0.1' MYSQL_PORT='3306' ARGS=1 if [ $# -ne "$ARGS" ];then echo "Please input one arguement:" fi case $1 in Uptime) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK status|cut -f2 -d":"|cut -f1 -d"T"` echo $result ;; Com_update) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_update"|cut -d"|" -f3` echo $result ;; Slow_queries) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK status |cut -f5 -d":"|cut -f1 -d"O"` echo $result ;; Com_select) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_select"|cut -d"|" -f3` echo $result ;; Com_rollback) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_rollback"|cut -d"|" -f3` echo $result ;; Questions) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK status|cut -f4 -d":"|cut -f1 -d"S"` echo $result ;; Com_insert) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_insert"|cut -d"|" -f3` echo $result ;; Com_delete) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_delete"|cut -d"|" -f3` echo $result ;; Com_commit) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_commit"|cut -d"|" -f3` echo $result ;; Bytes_sent) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Bytes_sent" |cut -d"|" -f3` echo $result ;; Bytes_received) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Bytes_received" |cut -d"|" -f3` echo $result ;; Com_begin) result=`/usr/bin/mysqladmin -u$MYSQL_USER -h$MYSQL_HOST -p${MYSQL_PWD} -S $MYSQL_SOCK extended-status |grep -w "Com_begin"|cut -d"|" -f3` echo $result ;; *) echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions)" ;; esac
7、添加chec_mysql脚本权限:
[root@node2 ~]#chmod u+x /usr/local/zabbix/scripts/chk_mysql.sh [root@node2 ~]#chown -R zabbix.zabbix /usr/local/zabbix/scripts/chk_mysql.sh
8、重启agent,在zabbix服务器上面检查基本mysql服务器信息是否能正常获取到。
重启客户端
[root@node2 ~]# /etc/init.d/zabbix_agentd restart
服务测试,获取mysql监控数据
[root@node1 ~]# zabbix_get -s 172.25.0.30 -p10050 -k "system.cpu.load[all,avg15]"; 0.050000 [root@node1 ~]# zabbix_get -s 172.25.0.30 -p10050 -k mysql.status[Com_update] 0 [root@node1 ~]# zabbix_get -s 172.25.0.30 -p10050 -k mysql.status[Com_insert] 0
9、监控mysql性能图添加
监控脚本运行正常后,就会在zabbix-server的“监控中”的下面的“图形“里面看到mysql的监控性能视图,选择选择主机node2.1(zabbix_agent),图形选择MySQL operations可以看到性能监控视图,如图5所示:
图5
10、zabbix自带模版默认有2个性能图,当然也可以新建其他图,只需要找到主机所在,创建图形就可以了,如图6、图7所示:
图6
图7