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监控只需要返回一个数字即可

[[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监控的配置截图

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

时间: 2024-10-17 00:28:27

Zabbix自动发现监控Mysql数据库的相关文章

使用 zabbix 自动发现监控 MySQL

介绍 使用 zabbix 的 low-level 自动发现功能完成单主机多端口的监控, 详见low_level_discovery, 整体上监控类似 percona 的 zabbix 监控插件, 不过使用 mymonitor.pl 替换了脚本 ss_get_mysql_stats.php, 而且配置有点不同. 具体代码及配置详见: zabbix_mysql 1. 结构说明: zabbix_mysql/ |-- README.md |-- bin | |-- get_mysql_stats_wra

zabbix自动发现监控多台mysql

1: 前言 由于前面写的博客,zabbix自动发现监控redis.zabbix自动发现监控mongo这两篇博客虽然都能自动发现并监控,但是由于每个zabbix_agentd都得配置,监控起来非常不方便,因此,再做了个模板,能够自动发现并监控多台mysql.这个方法在监控mongo.redis或者mysql主从等时候也都适用. 2: 在zabbix_agentd下编写自动发现并监控多台mysql的脚本,脚本如下: #!/bin/sh #zhuangweihong 20160512 zabbix d

zabbix自动发现监控mongo

1: zabbix自动发现mongo监控的端口,并返回zabbix_server需要的格式,脚本部署在zabbix_agent上,路径为/usr/local/zabbix/zabbix_discover_mongo.sh,脚本内容如下: #!/bin/sh #zhuangweihong 20160419 zabbix discover mysql res=`sudo ss -tulnp|grep mongo|grep -v 28107|awk '{print $(NF-2)}'|awk -F':

zabbix自动发现监控redis

1: 在zabbix_agentd端编写自动发现的脚本,主要是自动发现redis的监控端口,脚本如下: vim /usr/local/zabbix/zabbix_discover_redis.sh #!/bin/sh #zhuangweihong 20160419 zabbix discover redis res=`sudo ss -tulnp|grep redis|awk '{print $(NF-2)}'|awk -F':' '{print $(NF)}'|sort -u` if [[ -

zabbix自动发现监控tomcat健康页面

一.背景 公司系统平台有10几个tomcat服务,由于需要服务保持全年无间断服务,特在tomcat中嵌入专门的监控页面,在curl 专用页面返回值为200时,则认定服务正常运行,否则报警发送专门的监控运维的邮箱. 二.原理 正常的tomcat健康状态监控页面如下图 我们利用如下命令判断返回值是否为200 shell>/usr/bin/curl -o /dev/null -s --connect-timeout 5 -w '%{http_code}' http://10.0.0.107:9100/

zabbix 自动发现监控端口(六)

一.配置脚本,将脚本分发到各个minion端 1.1.脚本内容 vim discover_port.sh  #!/bin/bash portarray=(`sudo netstat -tnlp|egrep -i "$1"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`) length=${#portarray[@]} printf "{\n" printf  '\t'&q

zabbix自动发现监控url

1.在监控客户机上 web_site_code_status.sh: #!/bin/bash # function:monitor tcp connect status from zabbix source /etc/bashrc >/dev/null 2>&1 source /etc/profile >/dev/null 2>&1 #/usr/bin/curl -o /dev/null -s -w %{http_code} http://$1/ web_site_

zabbix 自动发现 监控 硬盘读写 disk io

直接 上配置: 1.配置文件 cat userparameter_harddisk.conf #discovery hard diskUserParameter=custom.vfs.discovery.diskname,/opt/app/zabbix-agent/scripts/check_harddisk.sh diskname_discovery#disk status# See https://www.kernel.org/doc/Documentation/ABI/testing/pr

zabbix自动发现oracle表空间并监控其使用率

监控需求 Oracle表空间使用率实时监控,当表空间使用率达到95%时触发告警机制.Oracle表空间分为系统默认表空间和用户创建的表空间,而表空间又有自动扩展和非自动扩展两种类型,用户(DBA)在创建表空间时可以根据应用需求指定是否开启表空间自动扩展.那么在这里我们需要分析一个监控策略,就是当zabbix监控到某个表空间使用率达到95%,那么就让触发器触发警告(Warning)信息,并发送邮件给DBA或管理者.当检测到表空间没有开启自动扩展时,则触发Information信息.说明一下:ora