码迷,mamicode.com
首页 > 数据库 > 详细

Zabbix自动发现监控Mysql数据库

时间:2019-08-10 09:20:42      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:安全   cts   自动发现   提示   discover   info   pass   byte   client   

结果图展现

先让大家看下结果图,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数据库

标签:安全   cts   自动发现   提示   discover   info   pass   byte   client   

原文地址:https://blog.51cto.com/zhuangweihong/2428243

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!