结果图展现
先让大家看下结果图, 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 监控只需要返回一个数字即可
- [[email protected] ~]# sh mysql_check.sh 3306 Bytes_received
- 439
- [[email protected] ~]# 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 端口的运行结果如下
- [[email protected] ~]# 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 监控的配置截图
来源: http://www.bubuko.com/infodetail-3150213.html