zabbix监控配置及调试

首先编辑一个监控脚本check_mysql.sh,这些参数zabbix mysql template默认的,也可以自定义:


#!/bin/bash

#MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}"

MYSQL_CONN="/usr/bin/mysqladmin"

case $1 in

    Uptime)

        result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"`

        echo $result

        ;;

    Com_update)

        result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3`

        echo $result

        ;;

    Slow_queries)

        result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"`

        echo $result

        ;;

    Com_select)

        result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3`

        echo $result

                ;;

    Com_rollback)

        result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3`

                echo $result

                ;;

    Questions)

        result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"`

                echo $result

                ;;

    Com_insert)

        result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3`

                echo $result

                ;;

    Com_delete)

        result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3`

                echo $result

                ;;

    Com_commit)

        result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3`

                echo $result

                ;;

    Bytes_sent)

        result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3`

                echo $result

                ;;

    Bytes_received)

        result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3`

                echo $result

                ;;

    Com_begin)

        result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3`

                echo $result

这里第二行本来是直接把我mysql的password hardcode了。
所以后面执行脚本会有:

[Warning] Using a password on the command line interface can be insecure.

所以解决hardcode还需要到mysql的配置文件(我这里是/etc/my.cnf)中给mysqladmin命令配置密码,发现试着在命令行执行mysqladmin默认就是使用这个配置:
(当然我这里配置root账号是非常不妥的)

[mysqladmin]
user=root
password=123456
socket=/var/lib/mysql/mysql.sock

zabbix agent启动会区读取/etc/zabbix/zabbix_agentd.d下的所有*.conf文件,这里我把原来zabbix初始化的mysql监控文件全注释了并添加参数,也可以自己自定义,只要是.conf结尾就可以。加上如下内容,这里很多网上的资料给mysql.ping的参数使用的命令是mysqladmin ping | grep -c alive,但是如果mysql down了的话,执行mysqladmin只会报错不会返回zabbix trigger的值0,所以我这里使用的是netstat代替mysqladmin。

格式: UserParameter=key, command
UserParameter=mysql.version,mysql -V
UserParameter=mysql.status[*],/usr/local/zabbix-scripts/check_mysql.sh $1
UserParameter=mysql.ping,netstat -ntpl | grep 3306 | grep mysql | wc | awk '{print $1}'

接下来重启zabbix agent加载配置文件,就可以在zabbix web上mysql的各种item。
如果有报错,会有一个红色的警示图标,点击可以看到比较详细的log。


zabbix监控配置及调试_第1张图片
image.png

效果:


zabbix监控配置及调试_第2张图片
image.png

zabbix监控配置及调试_第3张图片
image.png

在zabbix web上可以比较直观的看到结果,也可以使用zabbix_get在agent端进行测试:

zabbix_get -s 127.0.0.1 -p 10050 -k mysql.status[Com_select]

期间可能会遇到各种其他的问题,但主要的几个点就是这些,举一反三。

本文章来源blog地址:https://www.jianshu.com/p/1c5850a6b70c,谢绝转载。

你可能感兴趣的:(zabbix监控配置及调试)