Zabbix自动发现监控Mysql数据库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zabbix自动发现监控Mysql数据库相关的知识,希望对你有一定的参考价值。
结果图展现先让大家看下结果图,Zabbix通过自动发现监控mysql每秒的增、删、改、查,通过自动发现监控Mysql的流入流出流量,结果图如下:
Mysql给Zabbix监控的权限
首先创建一个监控用户,usage on为比较小的权限,较安全。sql如下
grant usage on *.* to ‘monitor‘@‘127.0.0.1‘ identified by ‘shijiangepwd‘;
flush privileges;
测试监控用户是否生效,测试结果如下
mysql -umonitor -h 127.0.0.1 -pshijiangepwd -A
mysql> show global status;
+-----------------------------------------------+-------------+
| Variable_name | Value |
+-----------------------------------------------+-------------+
| Aborted_clients | 0 |
| Aborted_connects | 0 |
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
| Binlog_stmt_cache_disk_use | 0 |
| Binlog_stmt_cache_use | 0 |
编写监控的Shell脚本
脚本使用show global status去监控Mysql状态信息mysql_check.sh:
port=$1
key=$2
mysql -umonitor -pshijiangepwd -h 127.0.0.1 -P$port -e "show global status" |grep "$key\s" |awk ‘print $2‘
运行结果如下,Zabbix监控只需要返回一个数字即可
[root@test ~]# sh mysql_check.sh 3306 Bytes_received
439
[root@test ~]# sh mysql_check.sh 3306 Bytes_sent
11935
Mysql的监控端口使用自动发现
Mysql端口使用自动发现的脚本mysql_discovery.py
# -*- coding: utf-8 -*-
try:
import json
except:
import simplejson as json
import commands
(status, output) = commands.getstatusoutput(""" sudo netstat -tlnp|grep mysql|awk ‘print $4‘|awk -F‘:‘ ‘print $2‘|sort -u """)
outputs = output.split(‘\n‘)
result = []
for one in outputs:
result.append( ‘#ONE‘: one )
print( json.dumps(‘data‘:result,sort_keys=True,indent=4) )
默认的Zabbix用户无法使用netstat命令,所以得使用sudo,Zabbix用户需要添加Sudo权限visudo
zabbix ALL= NOPASSWD: /bin/netstat
Defaults:zabbix !requiretty
自动发现Mysql端口的运行结果如下
[root@test ~]# python mysql_discovery.py
"data": [
"#ONE": "3306"
]
被监控的客户端添加自定义Key配置
被监控的客户端需要添加如下配置,然后重启Zabbix Agent
UserParameter=mysql.discovery,python /etc/zabbix/mysql_discovery.py
UserParameter=mysql.check[*],sh /etc/zabbix/mysql_check.sh $1 $2 2>/dev/null
为什么要加个2>/dev/null,这个是预防高版本Mysql把密码直接写在命令里会有以下的安全提示,所以得过滤掉
mysql: [Warning] Using a password on the command line interface can be insecure.
Zabbix监控的配置截图
以上是关于Zabbix自动发现监控Mysql数据库的主要内容,如果未能解决你的问题,请参考以下文章