由于官方zabbix4.4的mysql监控方法有些问题,一直没找到原因,看到zabbix论坛有和我一样问题的人,于是还是采用老的方式来监控zabbix性能
以前的笔记查看这个,https://sulao.cn/post/513.html,该方案只适合zabbix3.4和zabbix4.0
官网的各种监控方案请查看这里:https://www.zabbix.com/cn/integrations/
当前主要配置过程如下
首先修改zabbix-agent.conf配置文件
UnsafeUserParameters=1 #去掉前面#,然后值修改为1
然后我们需要清空官方的默认的监控mysql配置文件userparameter_mysql.conf,其位置在/etc/zabbix/zabbix_agentd.d/,内容改为
UserParameter=mysql.status[*],/etc/zabbix/script/mysql_status.sh $1 UserParameter=mysql.ping,mysqladmin -u root -h localhost -padmin ping 2>/dev/null | grep -c alive UserParameter=mysql.version,mysql -V
其中调用了一个脚本mysql_status.sh,放置位置和userparameter_mysql.conf一样,内容如下
#!/bin/bash mysql_host='127.0.0.1' mysql_user='root' mysql_pass='admin' mysql_port=3306 mysql_conn="mysqladmin -h ${mysql_host} -u ${mysql_user} -P ${mysql_port} -p${mysql_pass}" if [ $# -ne "1" ];then echo "param error !" fi case $1 in Uptime) result=`${mysql_conn} status 2>/dev/null |awk '{print $2}'` echo $result ;; Questions) result=`${mysql_conn} status 2>/dev/null |awk '{print $6}'` echo $result ;; Com_update) result=`${mysql_conn} extended-status 2>/dev/null |grep -w "Com_update" |awk '{print $4}'` echo $result ;; Slow_queries) result=`${mysql_conn} extended-status 2>/dev/null |grep -w "Slow_queries" |awk '{print $4}'` echo $result ;; Com_select) result=`${mysql_conn} extended-status 2>/dev/null |grep -w "Com_select" |awk '{print $4}'` echo $result ;; Com_rollback) result=`${mysql_conn} extended-status 2>/dev/null |grep -w "Com_rollback" |awk '{print $4}'` echo $result ;; Com_insert) result=`${mysql_conn} extended-status 2>/dev/null |grep -w "Com_insert" |awk '{print $4}'` echo $result ;; Com_delete) result=`${mysql_conn} extended-status 2>/dev/null |grep -w "Com_delete" |awk '{print $4}'` echo $result ;; Com_commit) result=`${mysql_conn} extended-status 2>/dev/null |grep -w "Com_commit" |awk '{print $4}'` echo $result ;; Bytes_sent) result=`${mysql_conn} extended-status 2>/dev/null |grep -w "Bytes_sent" |awk '{print $4}'` echo $result ;; Bytes_received) result=`${mysql_conn} extended-status 2>/dev/null |grep -w "Bytes_received" |awk '{print $4}'` echo $result ;; Com_begin) result=`${mysql_conn} extended-status 2>/dev/null |grep -w "Com_begin" |awk '{print $4}'` echo $result ;;*) echo "Usage:$0(Uptime|Questions|Com_update|Slow_queries|Com_select|Com_rollback|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)" ;; esac
然后给与脚本执行权限
chmod +x mysql_status.sh
然后我们重启zabbix-agent
systemctl restart mysql
然后再去zabbix平台上给主机添加Template DB MySQL模板,其实这个4.4的模板已经不适用刚才我们配置的mysql脚本监控了,但是个别监控项还是可用的,例如mysql.ping
我们再zabbix服务器上安装zabbix-get工具
wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-get-4.4.0-1.el7.x86_64.rpm yum localinstall zabbix-get-4.4.0-1.el7.x86_64.rpm
然后测试下我们添加的监控
zabbix_get -s 172.26.61.51 -k "mysql.ping"
返回1,说明我的脚本和监控项都正常,我们可以尝试添加一个自定义的监控项和图形,监控项的配置如下
其实我们可以使用命令进行测试看看有没有结果返回
zabbix_get -s 172.26.61.51 -k "mysql.status[Questions]"
返回172,说明我们这个监控项是加的没问题的,然后我们去添加图形,图形配置如下图
然后稍等一会,我们就可以再图形里面找到mysql questions,查看如下图就是没有问题了
其他需要监控的监控项可以自行添加,官方默认的监控项不需要的可以进行关闭