简介:
如何使用 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 $ in
Com_select)
command $ ;;
Com_insert)
command $ ;;
Com_update)
command $ ;;
Com_delete)
command $ ;;
Com_begin)
command $ ;;
Com_commit)
command $ ;;
Com_rollback)
command $ ;;
Questions)
command $ ;;
Slow_queries)
command $ ;;
Bytes_received)
command $ ;;
Bytes_sent)
command $ ;;
Uptime)
command $ ;;
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 $
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
## 可以获取到 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、先把这个放一放,去搞别的!( 监控已经完成,后面的部分放别的地方继续 )