• Zabbix 监控 Mysql 状态



    简介:

    如何使用 Zabbix 来监控 Mysql 状态 ?

    Zabbix 有自带监控 Mysql 的模板,但是却不能直接使用.. 需要我们根据模板提供的 Key 自己写脚本获取数据

    1、查看都有哪些 Key

    > Configuration -> Templates

    ## 在此模板页中,可以看到 Template App MySQL 模板中有 14 个 Items ,我们需要自己写脚本获取这 14 个值

    ## 分别是:Com_select、Com_insert 、Com_update 、Com_delete 、Com_begin 、Com_commit 、Com_rollback
                     Questions 、Slow_queries 、Bytes_received 、Bytes_sent 、Ping 、Uptime 、Version

    2、根据 Key 编写 Shell 脚本

    shell > mysql -uroot -p -e "grant usage on *.* to zabbix@localhost identified by 'zabbix_password';" # 建立监控用户
    
    shell > vim /script/mysql_status.sh
    
    #!/bin/bash
    
    User='you_user'
    Password='you_password'
    
    Mysql='/usr/local/mysql/bin/mysql'
    Mysqladmin='/usr/local/mysql/bin/mysqladmin'
    
    command(){
      $Mysql -u $User -p$Password -e "show global status" | awk '$1 ~ /'"$1"'$/ {print $2}'
    }
    
    case $1 in
      Com_select)
        command $1 ;;
      Com_insert)
        command $1 ;;
      Com_update)
        command $1 ;;
      Com_delete)
        command $1 ;;
      Com_begin)
        command $1 ;;
      Com_commit)
        command $1 ;;
      Com_rollback)
        command $1 ;;
      Questions)
        command $1 ;;
      Slow_queries)
        command $1 ;;
      Bytes_received)
        command $1 ;;
      Bytes_sent)
        command $1 ;;
      Uptime)
        command $1 ;;
      Version)
        $Mysql -V | awk -F '[ ,]' '{print $6}' ;;
      Ping)
        $Mysqladmin -u$User -p$Password ping | wc -l ;;
      *)
        echo "Usage: $0 { Com_select|Com_insert|Com_update|Com_delete|Com_begin|Com_commit|Com_rollback|Questions|Slow_queries|Bytes_received|Bytes_sent|Ping|Uptime|Version }" ;;
    esac

    ## 关于两个命令路径,我使用 `which mysql` 这样的操作没有成功
    ## 写完先测试一下,能不能获取各 Key 的值

    shell > chmod a+x /script/mysql_status.sh

    3、添加自定义 key 配置文件

    shell > vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/mysql_status.conf
    # Mysql_status
    UserParameter=mysql.status[*],/script/mysql_status.sh $1
    UserParameter=mysql.ping,/script/mysql_status.sh Ping
    UserParameter=mysql.version,/script/mysql_status.sh Version

    ## 注意模板里 Key 的取值方式
    ## 也可以直接加到 /usr/local/zabbix/etc/zabbix_agentd.conf 末尾

    shell > vim /usr/local/zabbix/etc/zabbix_agentd.conf
    
    Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
    
    UnsafeUserParameters=1 # 允许自定义 Key

    ## 添加上面配置

    4、重启 Zabbix_agentd

    shell > service zabbix_agentd restart

    ## 注意,上面全部操作都是在被监控端

    5、Zabbix 服务端测试能否拿到 Key

    shell > /usr/local/zabbix/bin/zabbix_get -s 14.25.97.14 -k mysql.ping
    1

    ## 可以获取到 key 的值,说明配置没有问题了
    ## 被监控端记得要开启 10050 端口

    6、Zabbix 监控 Mysql 状态

    ## 接下来把 Zabbix 自带的监控模板链接到主机即可
    ## 过上一小会,就能看到效果了,version 可能比较时间长点,因为模板里设的时间范围是 3600 秒,ping 会误报一次 Mysql Down ,因为只前是没有值的。

    7、为这些监控项添加 Graph

    ## 自带的模板已经做好了两张图,所以直接使用即可,我这里是空载,所以啥也看不出来..

    8、测试 Trigger 告警

    ## 很遗憾,自带的模板中也已经定义好了 Trigger 告警条件,来瞅瞅

    > Configuration -> Templates -> Trigger

    Severity :   ## 事件告警级别

        Not classified 未知安装等级,灰色

        Information 一般信息,亮绿

        Warning 警告信息,黄色

        Average 一般故障,橙色

        High 高级别故障,红色

        Disaster 致命故障,亮红

    Name :   ## Trigger 名称

    Expression :   ## 对触发器状态计算的逻辑正则表达式

    Status :        ## 触发器开关

    ## 怎么设置触发告警条件下次写 ^_^

    ## 好了,如果 Mysql 处于 down 状态时会触发条件,但是,触发之后呢 ?( 当然是要发送事件通知啦,或执行远程命令 )

    9、先把这个放一放,去搞别的!( 监控已经完成,后面的部分放别的地方继续 )

  • 相关阅读:
    Linux网络基础配置
    UVA 116 Unidirectional TSP(dp + 数塔问题)
    修改Hosts文件
    倒排索引
    可以把阿里云上面的一些介绍和视频都看看
    练练脑,继续过Hard题目
    explicit的用法
    auto_ptr的使用和注意
    我写的快排程序
    快速排序、查第k大
  • 原文地址:https://www.cnblogs.com/wangxiaoqiangs/p/5412135.html
Copyright © 2020-2023  润新知