• ADADADADAD

    zabbix监控MySQL多实例实践[ mysql数据库 ]

    mysql数据库 时间:2024-12-25 09:55:46

    作者:文/会员上传

    简介:

    一、实践背景:一台机器上部署了多个MySQL实例,每个实例使用不同的端口,需要通过zabbix将其都纳入监控中。二、实践方法及原理说明:1.在Zabbix上创建监控MySQL数据库使用的模版,导

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    一、实践背景:
    一台机器上部署了多个MySQL实例,每个实例使用不同的端口,需要通过zabbix将其都纳入监控中。

    二、实践方法及原理说明:
    1.在Zabbix上创建监控MySQL数据库使用的模版,导入案例模版:
    链接: https://pan.baidu.com/s/1nXooNPMXrmaAQidRrxVOLg 提取码: ure1

    2.在模版上创建自动发现的规则,在自动发现规则中需要定义两个东西:
    a.键值用来自动获取MySQL实例的端口,需要使用到主机宏{$MYSQLPORT}

    b.监控项原型根据获取的端口来生成对应的监控项,需要使用到自动发现宏{#MYSQLPORT}

    3.在需要监控的主机上定义一个宏{$MYSQLPORT},对应要监控的端口,如3306_3307

    4.在Zabbix agent上创建自动发现端口的脚本、状态监控脚本。

    原理说明:
    通过自动发现规则来获取MySQL实例的端口,自动发现规则上的{$MYSQLPORT}是要传递给agent自动发现脚本的参数,这个值是从主机定义的宏{$MYSQLPORT}获取过来的,自动发现的脚本将其解析成{#MYSQLPORT}: 端口的形式,监控项原型再根据{#MYSQLPORT}的值来生成监控项,大致流程如下:
    主机定义宏{$MYSQLPORT}->自动发现规则键值{$MYSQLPORT}->调用agent上自动发现脚本并解析成{#MYSQLPORT} : 端口 ->监控项原型{#MYSQLPORT}->自动生成主机监控项

    三、环境说明:
    OS:CentOS Linux release 7.6.1810 (Core)
    Zabbix Server 版本:4.2.4
    MySQL端口:3306,3307
    3306 socket:/tmp/mysql3306.sock
    3307 socket:/tmp/mysql3307.sock
    脚本路径:/etc/zabbix/scripts/

    四、在agent创建监控用的脚本
    1.自动发现脚本:/etc/zabbix/scripts/discovery_mysqlport.sh
    #!/bin/bash
    res=`echo $1| sed "s/
    /\n/g"`;
    port=($res)
    printf '{\n'
    printf '\t"data":[\n'
    for key in ${!port[@]}
    do
    if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];
    then
    printf '\t {\n'
    printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n"

    else [[ "${key}" -eq "((${#port[@]}-1))" ]]
    printf '\t {\n'
    printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n"
    fi
    done
    printf '\t ]\n'
    printf '}\n'

    执行效果

    2.状态检查脚本:/etc/zabbix/scripts/mysql_status.sh
    #!/bin/bash
    var=$1
    MYSQL_USER="zabbix"
    MYSQL_PASSWORD=123456
    MYSQL_SOCK_DIR="/tmp/mysql$2.sock"

    ${mysql}-u${MYSQL_USER} -p${MYSQL_PASSWORD} -S ${MYSQL_SOCK_DIR} -e "show global status;" 2> /dev/null |grep -v Variable_name|grep "\b${var}\b"|awk '{print $2}'

    3.在agent上添加监控项
    UserParameter=mysql_discovery[],/etc/zabbix/scripts/discovery_mysql_port.sh $1
    UserParameter=mysql.status[
    ],/etc/zabbix/scripts/mysql_status.sh $1 $2

    4.重启agent服务
    systemctl restart zabbix-agent

    自动生成的监控项效果图:

    zabbix监控MySQL多实例实践.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: zabbixmysql