Zabbix 监控 Mysql 状态


简介:mysql

如何使用 Zabbix 来监控 Mysql 状态 ?正则表达式

Zabbix 有自带监控 Mysql 的模板,可是却不能直接使用.. 须要咱们根据模板提供的 Key 本身写脚本获取数据sql

一、查看都有哪些 Keyshell

> Configuration -> Templatesvim

## 在此模板页中,能够看到 Template App MySQL 模板中有 14 个 Items ,咱们须要本身写脚本获取这 14 个值bash

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

二、根据 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 的值spa

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

三、添加自定义 key 配置文件rest

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

## 添加上面配置

四、重启 Zabbix_agentd

shell > service zabbix_agentd restart

## 注意,上面所有操做都是在被监控端

五、Zabbix 服务端测试可否拿到 Key

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

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

六、Zabbix 监控 Mysql 状态

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

七、为这些监控项添加 Graph

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

八、测试 Trigger 告警

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

> Configuration -> Templates -> Trigger

Severity :   ## 事件告警级别

    Not classified 未知安装等级,灰色

    Information 通常信息,亮绿

    Warning 警告信息,黄色

    Average 通常故障,橙色

    High 高级别故障,红色

    Disaster 致命故障,亮红

Name :   ## Trigger 名称

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

Status :        ## 触发器开关

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

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

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

相关文章
相关标签/搜索