zabbix监控mysql多实例自发现监控

系统运维工程师   李超

1、定义每个实例的端口

cat mysql_port 
33063307330833093310
 331133123313

2、给所有实例创建一个zabbix用户只允许本地访问,生产环境具体权限各位看官自己看着给吧O(∩_∩)O

GRANT ALL PRIVILEGES ON *.* TO [email protected]'127.0.0.1' IDENTIFIED BY 'zabbix';

3、创建自动发现MySQL端口脚本

cat /data/PRG/zabbix/scripts/discovery_mysql.sh

#!/bin/bash
# -------------------------------------------------------------------------------# Script_name: discovery_mysql.sh # Revision:    1.0# Date:        2017/03/09# Author:      kbsonlong
# Email:       [email protected]
# Website:     www.along.party
# -------------------------------------------------------------------------------res=`cat /data/PRG/zabbix/scripts/mysql_port|grep -v "^#"`
port=($res) 
printf '{\n' printf '\t"data":[\n' for key in ${!port[@]} 
do 
    if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then 
        printf '\t {\n' 
        printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n" 
    else [[ "${key}" -eq "((${#port[@]}-1))" ]] 
        printf '\t {\n' 
        printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n" 
    fi doneprintf '\t ]\n' printf '}\n'

4、创建MySQL检测脚本

# cat /data/PRG/zabbix/scripts/check_Multimysql.sh #!/bin/bash
# -------------------------------------------------------------------------------# FileName:    check_Multimysql.sh# Revision:    1.0# Date:        2017/03/09# Author:      kbsonlong
# Email:       [email protected]
# Website:     www.along.party
# License:     GPL
# -------------------------------------------------------------------------------
 # 用户名
MYSQL_USER='zabbix'
 # 密码
MYSQL_PWD='zabbix'
 # 主机地址/IP
MYSQL_HOST='127.0.0.1'
 # 端口
MYSQL_PORT=$2
 # 数据连接
MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}"##help函数
help() {        echo "Usage:$0  [ping|Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin]  port"}

# 参数是否正确if [ $# -lt "2" ];then 
    echo "参数缺失!"
    help 
    exit 2fi 
 # 获取数据case $1 in 
    ping) 
        result=`${MYSQL_CONN} ping | grep -c alive` 
        echo $result 
        ;; 
    Uptime) 
        result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"` 
        echo $result 
        ;; 
    Com_update) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3` 
        echo $result 
        ;; 
    Slow_queries) 
        result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"` 
        echo $result 
        ;; 
    Com_select) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3` 
        echo $result 
                ;; 
    Com_rollback) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3` 
                echo $result 
                ;; 
    Questions) 
        result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"` 
                echo $result 
                ;; 
    Com_insert) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3` 
                echo $result 
                ;; 
    Com_delete) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3` 
                echo $result 
                ;; 
    Com_commit) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3` 
                echo $result 
                ;; 
    Bytes_sent) 
        result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3` 
                echo $result 
                ;; 
    Bytes_received) 
        result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3` 
                echo $result 
                ;; 
    Com_begin) 
        result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3` 
                echo $result 
                ;; 
                        
        *) 
        help 
        ;; 
esac

5、测试脚本是否正常

# bash discovery_mysql.sh {        "data":[
         {                        "{#MYSQLPORT}":"3306"},
         {                        "{#MYSQLPORT}":"3307"},
         {                        "{#MYSQLPORT}":"3308"},
         {                        "{#MYSQLPORT}":"3309"},
         {                        "{#MYSQLPORT}":"3310"},
         {                        "{#MYSQLPORT}":"3311"},
         {                        "{#MYSQLPORT}":"3312"},
         {                        "{#MYSQLPORT}":"3313"}
         ]
}

# bash check_Multimysql.sh 参数缺失!Usage:check_Multimysql.sh  [ping|Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin]  port
# bash check_Multimysql.sh ping 33061# bash check_Multimysql.sh Uptime 330618180446

6、zabbix agent配置文件添加自定义脚本,并重启zabbix agent

vim /data/PRG/zabbix/etc/zabbix_agentd.conf

UserParameter=mysql_discovery[*],/bin/bash /data/PRG/zabbix/scripts/discovery_mysql.sh#####$1==command   $2===port
UserParameter=mysql.status[*],/data/PRG/zabbix/scripts/check_mysql.sh $1 $2 UserParameter=mysql.ping[*],/data/PRG/zabbix/scripts/check_mysql.sh ping $1

/etc/init.d/zabbix_agentd restart

7、使用zabbix_get检查定义的key是否生效

# /usr/local/zabbix/bin/zabbix_get -s 192.168.62.200 -k mysql.ping[3307]   
1# /usr/local/zabbix/bin/zabbix_get -s 192.168.62.200 -k mysql.status[Uptime,3307]18180813# /usr/local/zabbix/bin/zabbix_get -s 192.168.62.200 -k mysql.status[Uptime,3306]18180842# /usr/local/zabbix/bin/zabbix_get -s 192.168.62.200 -k mysql.status[Uptime,3310]18180847# /usr/local/zabbix/bin/zabbix_get -s 192.168.62.200 -k mysql.status[Bytes_sent,3310]58803854473

8、导入模板Template Multi Mysql.xml

9、被监控主机关联模板

原文地址:http://blog.51cto.com/13120271/2089704

时间: 2024-11-08 20:32:11

zabbix监控mysql多实例自发现监控的相关文章

zabbix监控mysql多实例和mariadb自定义脚本及其部署

最近新部署zabbix监控,发现有很多DB服务器都是mysql多实例的状态,mpm默认的mysql监控无法有效的监控mysql的运行状态和复制关系,故针对双实例的mysql制作的手工的zabbix脚本监控如下 首先新建新的zabbix的mysql多实例监控模板,操作如下 名称 为模板信息名称 类型 因为使用的脚本出发所以修改成zabbix捉捕器 键值 脚本返回的信息,可以为数值,也可以是字元,这里定义为字元 数据类型 字元 同时也可以设置主动捕捉,如下:监控多实例端口状态 名称 为模板信息名称

zabbix监控MySQL多实例实践

一.实践背景:一台机器上部署了多个MySQL实例,每个实例使用不同的端口,需要通过zabbix将其都纳入监控中. 二.实践方法及原理说明:1.在Zabbix上创建监控MySQL数据库使用的模版,导入案例模版:链接: https://pan.baidu.com/s/1nXooNPMXrmaAQidRrxVOLg 提取码: ure1 2.在模版上创建自动发现的规则,在自动发现规则中需要定义两个东西:a.键值 用来自动获取MySQL实例的端口,需要使用到主机宏{$MYSQLPORT} b.监控项原型

zabbix企业应用:利用自动发现监控IIS站点

如果一台windows server有许多个IIS站点,我们想实现这样一个监控目标:监控每个站点的状态.请求.流量.连接数,而且以后新增加的站点也可以自动加入到监控里,不需要再手动添加. 利用zabbix的自动发现(LLD)功能结合脚本可以实现上面的需求,实现对IIS站点的动态添加,动态监控. 先看一下监控的效果: 上图中的"Web Service(wskh)"是指IIS网站名称为wskh:"Web Service(_Total)"是指IIS下所有的站点. 网站流量

监控MYSQL主从同步配置中监控从库运行状态的脚本

代码如下: [java] view plain copy #!/bin/bash #Check MySQL Slave's Runnning Status #Crontab time 00:10 MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $5}'` MYSQLIP=`ifconfig eth0|grep "inet addr" 

Zabbix监控Mysql多实例自动添加

1.定义每个实例的端口 cat mysql_port 3306 3307 3308 3309 3310 3311 3312 3313 2.给所有实例创建一个zabbix用户只允许本地访问,生产环境具体权限各位看官自己看着给吧O(∩_∩)O GRANT ALL PRIVILEGES ON *.* TO [email protected]'127.0.0.1' IDENTIFIED BY 'zabbix'; 3.创建自动发现MySQL端口脚本 cat /data/PRG/zabbix/scripts

Mysql 监控 支持 mysql 多实例自动发现以及主从监控

在[/usr/local/zabbix327/bin] 目录下新建python文件,并增加执行权限,如下: #!/usr/bin/env /usr/bin/python # _*_ coding:utf-8 _*_ import subprocess import json import re import ConfigParser def main(): # mysqld is started with mysqld_safe ,and with the configfile,or use 3

基于zabbix的Redis、Sentinel、Slave多实例自动发现监控

约定 保证whereis redis-cli 能够正确返回redis-cli程序的路径 保证 redis的配置文件在模板宏{$REDIS_SERVER_CONFIG_PATH}的路径,并且后缀名 为.conf 确保redis-server 配置文件配置:pidfile.requirepass 项,且有配置值 不满足条件会产生告警通知(详细见模板配置) 部署步骤 zabbix_agent 端配置 在/usr/local/zabbix327/bin 下增加lld_redis.py,并配置可执行权限

使用zabbix监控mysql

系统版本: centos6 x86_64 mysql版本: mysql5.6 实施目的: 监控mysql 客户端配置: 1.准备工作:搭建zabbix服务,使服务端客户端连接成功,并有基础监控项 2.使用percona监控服务,因为percona是监控项更全面,原本支持cacti 目前支持zabbix yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.no

zabbix之监控监控MySQL

监控MySQL 1.使用percona监控插件监控MySQL [[email protected] alertscripts]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm 2.percona组成部分 PHP脚本 shell脚本去调用PHP脚本 zabbix配置文件 zabbix模板文件 3.安装percona-zabbix模板