zabbix自动发现监察和控制mysql,zabbix自定义监察和控制mysql质量

By admin in 美高梅手机版4858 on 2019年4月16日

壹、 数据库给只读权限

1.1  grant usage on *.* to 'zabbix'@'127.0.0.1' identified by 'zabbix';
flush privileges;
1.2  mysql -uzabbix -pzabbix -h 127.0.0.1 -e "show global status"
Com_select从mysql启动以来接收的select语句的数量,它是一直往上增的。
Threads_connected获取的是一种当前的状态
1.3  mysql -uzabbix -pzabbix -h 127.0.0.1 -e "show global status"|grep 'Threads_connected' 

背景:

ZABBIX 3.0 配置监察和控制MYSQL品质【OK】,zabbixmysql

Zabbix三.0自带了MySQL插件来监督mysql数据库的沙盘,只供给配备好agent客户端,然后在web端给主机扩充模板就行了。
参考:   首假使3点:
1.agent端增加/etc/zabbix/.my.cnf文件,加多帐号/密码 二.agent端施行grant
all on *.*授权给帐号
三.agent端修改userparameter_zabbix自动发现监察和控制mysql,zabbix自定义监察和控制mysql质量。mysql.conf文件之中的门径  
登入agent端实践以下操作:   一.设置好zabbix服务端和agent端:(略)  
二.登入zabbix客户端:   yum -y install zabbix2贰-agent systemctl enable
zabbix-agent systemctl start zabbix-agent   cat > /etc/zabbix/.my.cnf
<< end [client] host=客户端IP
//host语句可选。不填则私下认可为:host=localhost。则后边的grant那样写:grant
all on *.* to
[email protected]’localhost’
//假使填了IP,则前边的grant那样写:grant all on *.* to
[email protected]’客户端IP’
socket=/var/lib/mysql.sock //可选 user=zabbix
password=02捌TpeG二G05柒W四M八四壹 end   登入agent端的MYSQL,增加帐号: grant
all on *.* to
[email protected]’localhost’
identified by ’02八TpeG二G0伍柒W肆M八四壹’; flush privileges; exit  
注:实践后在服务端实行以下命令测试:

zabbix_get -s agent端IP -p10050 -k "mysql.status[Uptime]" ,如果zbx抓不到数据或报错,则试试:

grant all on *.* to [email protected]'127.0.0.1' identified by 'zabbix'; //再不行,将127.0.0.1换成 agent端的IP 或 % 试试 

美高梅手机版4858 1
    三.登6agent端修改配置:   vim /etc/zabbix/zabbix_agentd.conf
Include=/etc/zabbix_agentd.conf.d/
//二四叁行,撤消注释。也说不定是:/etc/zabbix/zabbix_agentd.d/,无所谓。
保存退出   mkdir -p /etc/zabbix_agentd.conf.d/ cp
/usr/share/doc/zabbix22-agent-2.2.18/userparameter_美高梅手机版4858 ,mysql.conf
/etc/zabbix_agentd.conf.d/   sed -i
‘[email protected]/var/lib/[email protected]/etc/[email protected]’
/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
//修改路线为zabbix主配置目录:/etc/zabbix ,conf文件路径大概有两样。
注:最棒将里面包车型客车 mysql和 mysqladmin
命令加上全路径,不然存在只怕无法赢获得数量的或然。
美高梅手机版4858 2
  肆.重启agent端服务:   systemctl restart zabbix-agent  
在zabbix服务端测试: zabbix_get -s 192.168.1.25 -p 10050 -k
“mysql.status[Uptime]” 12085434
//借使出现类似这一串key的数字,就表达配置ok,服务端能监察和控制到agent端的mysql数据了!
  五.给agent端主机添加MYSQL监控模板(模板是自带的):  
美高梅手机版4858 3
 
美高梅手机版4858 4
    给MYSQL监察和控制绘图:
美高梅手机版4858 5
 
美高梅手机版4858 6
  效果图:
美高梅手机版4858 7
 
美高梅手机版4858 8

 

三.0 配置监察和控制MYSQL品质【OK】,zabbixmysql
Zabbix3.0自带了MySQL插件来监督mysql数据库的模版,只供给配置好agent客户端,然后在web端给主机增…

查看zabbix_agentd.conf配置文件:

二、zabbix监控mysql脚本(check_mysql.sh)

#!/bin/sh
while getopts "u:p:P:k:" opt
do
        case $opt in
                u ) user=$OPTARG;;
                p ) password=$OPTARG;;
                P ) port=$OPTARG;;
                k ) key=$OPTARG;;
                ? )
                echo 'parameter is wrong!'
                exit 1;;
        esac
done
if [ ! "${user}" ] || [ ! "${password}" ] || [ ! "${port}" ];then
        echo "parameter is null"        
        exit 1
fi

mysql -u ${user} -p${password} -h 127.0.0.1 -P${port} -e "show global status"|grep "${key}[[:space:]]"|awk '{print $2}'

zabbix自己提供了广大可选的监察项,可以满意绝当先50%的监督检查供给。有时候是因为业务要求,要求自定义监控项。
下边以成立mysql自定义监察和控制项为例,分享什么创建zabbix自定义监察和控制项。

PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=127.0.0.1    //当系统设置有多个IP时,需要指定一个IP与二级代理或服务端通信,若系统只有一个IP,也建议指定一个IP
ListenPort=10050
ServerActive=127.0.0.1   //在主动模式下,ServerActive为二级代理服务器或服务器,默认端口为10051
Hostname=127.0.0.1    //手工自定义一个主机名,可以和系统的主机名一样,也可以不一样,此参数可根据实际情况启用或关闭,建议关闭此参数,并启用HostnameItem参数
Include=/etc/zabbix/zabbix_agentd.d/*.conf

三、zabbix自定义监察和控制mysql的agent配置(vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/mysql.conf)

UserParameter=mysql.status[*],sh /usr/local/zabbix/check_mysql.sh -u zabbix -p zabbix -P $1 -k $2 2>/dev/null
配置完需要重启zabbix_agentd(pkill zabbix_agentd; sleep 3; /usr/local/zabbix/sbin/zabbix_agentd)

条件认证:

开班mysql质量监察和控制

此处能够运用zabbix自带的mysql模版,不过也急需在mysql服务器上准备获取mysql
status的脚本chk_mysql.sh,zabbix通过调用那个脚本来获取mysql的周转音信。

1、在布署文件zabbix_agentd.conf里面增多mysql监察和控制新闻:

# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=mysql.version,mysql -V
UserParameter=mysql.status[*],/root/chk_mysql.sh $1         //chk_mysql.sh路径根据实际情况
UserParameter=mysql.ping,mysqladmin -uzabbix -pzabbix -P3306 -h127.0.0.1  ping | grep -c alive
 //mysql数据库名:zabbix,密码:zabbix;主机地址和zabbix_agentd.conf中Hostname一致

2、初叶化数据库并加上三个mysql帐号:

[root@localhost ~]# mysqladmin -uroot -h 127.0.0.1 password 123456
[root@localhost ~]# mysql -u root -p
Enter password:
mysql>GRANT PROCESS,SUPER,REPLICATION CLIENT ON *.* TO zabbix@'127.0.0.1' IDENTIFIED BY 'zabbix';                              
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye

叁、mysql监察和控制脚本chk_mysql.sh

#!/bin/bash
# -------------------------------------------------------------------------------
# FileName:    check_mysql.sh
# Revision:    1.0
# Date:        2015/06/09
# Author:      DengYun
# Email:       dengyun@ttlsa.com
# Website:     www.ttlsa.com
# Description: 
# Notes:       ~
# -------------------------------------------------------------------------------
# Copyright:   2015 (c) DengYun
# License:     GPL

# 用户名
MYSQL_USER='zabbix'

# 密码
MYSQL_PWD='zabbix'

# 主机地址/IP
MYSQL_HOST='127.0.0.1'

# 端口
MYSQL_PORT='3306'

# 数据连接
MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}"

# 参数是否正确
if [ $# -ne "1" ];then 
    echo "arg error!" 
fi 

# 获取数据
case $1 in 
    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 
                ;; 

        *) 
        echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)" 
        ;; 
esac

增多check脚本权限:
[root@localhost~]#chmod u+x
/root/chk_mysql.sh
[root@localhost~]#chown -R zabbix.zabbix
chk_mysql.sh

4、去zabbix服务器上边防检查查基本mysql服务器音讯是不是能常常获取到:
[root@localhost~]# zabbix_get -s 127.0.0.1 -p10050 -k
“system.cpu.load[all,avg15]”; //127.0.0. 1 与zabbix_agentd.conf 中
server一致
0.050000

④、测试下看能或不能够得到到值

zabbix_get -s 172.16.0.3 -k mysql.status[3306,Com_select]

zabbix版本:叁.0.3 操作系统:CentOS 7
mysql版本:5.7.1

zabbix web设置

一,建立mysql host groups组模板是 zabbix系统提供的,进入 zabbix web
后台,Configuration–>Hosts groups–>点击“Create host
group”–>采用template选项卡,采纳模板“TemplateApp MySQL,Templdate OS
Linux”,最终点击update 就可以

美高梅手机版4858 9

二,建立hosts模板是 zabbix系统提供的,进入zabbix web
后台,configuration–>hosts–>点击你的主机
name–>选取template选项卡,选拔模板“Template App
MySQL”,最后点击左侧的“Add”按键,末了点击“update”按键就能够

  

美高梅手机版4858 10

三,监察和控制质量视图监察和控制脚本运转不奇怪化后,就会在zabbix-server的host上边包车型大巴graph里面来看mysql的监督质量视图,monitoring–>Graphs–>Host(采取mysql服务器)
Graph(选拔mysql选项),能够看来品质监察和控制视图,zabbix自带模版暗中同意有1个属性图,那几个图要等运维壹段时间后手艺画出来

  

美高梅手机版4858 11

附:查看zabbix web管理段工程上边的数据库配置音信
[root@localhost~]# vim /xxxx/zabbix.conf.php

<?php
// Zabbix GUI configuration file.
global $DB;

$DB['TYPE']                              = 'MySQL';
$DB['SERVER']                         = '127.0.0.1';
$DB['PORT']                              = '3306';
$DB['DATABASE']                       = 'zabbix';
$DB['USER']                              = 'zabbix';
$DB['PASSWORD']                       = 'zabbix';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA']                   = '';

$ZBX_SERVER                     = 'localhost';
$ZBX_SERVER_PORT                = '10051';
$ZBX_SERVER_NAME                = '';

$IMAGE_FORMAT_DEFAULT   = IMAGE_FORMAT_PNG;
?>

5、网页上增加监察和控制

net.tcp.service.perf[tcp,,3306]
mysql.status[3306,Threads_connected]
mysql.status[3306,Com_select]
mysql.status[3306,Com_update]
mysql.status[3306,Com_insert]
mysql.status[3306,Com_delete]
mysql.status[3306,Slow_queries]

福寿年高步骤:

陆、创制图形实行查看

1、修改 zabbix_agentd.conf,添加zabbix_agent
配置目录,以下是本人本机的zabbix的布署: 将以下行的解说去掉

7、触发器的增加

#Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf

八、可设置成模板

变成:

九、补充

zabbix自动发现监控mysql思路:
为什么要自动发现?
如果mysql监听的端口不同
如果一台机器上有多台mysql

不管你mysql监听在哪个端口,也不管一台机器部署了几个mysql,我都可以把它监控起来。

1: 自动发现脚本(/usr/local/zabbix/discover_mysql.py)
# -*- coding: utf-8 -*-
try:
import json
except:
import simplejson as json
import commands

(status, output) = commands.getstatusoutput("""sudo netstat -tlnp|grep 'mysqld'|awk '{print $4}'|awk -F':' '{print $(NF)}'|sort -u|grep -v '^1'""")
outputs = output.split('\n')
ports = []
for port in  outputs:
ports += [{'{#PORT}': port}]

print json.dumps({'data':ports},sort_keys=True,indent=4)

2: zabbix discover配置(vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/mysql.conf):
UserParameter=mysql.discover,python /usr/local/zabbix/discover_mysql.py

3: 测试:
zabbix_get  -s 172.16.0.3 -k mysql.discover
{
    "data": [
        {
            "{#PORT}": "sudo: sorry, you must have a tty to run sudo"
        }
    ]
}

4: 添加sudo权限(visudo):
zabbix ALL= NOPASSWD: /bin/netstat
Defaults:zabbix   !requiretty
添加完成后再测试。

5: zabbix网页上添加自动发现
添加主机
添加自动发现
添加监控项原型

6: 演示端口新增,去除。

 

Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf

将此行注释去掉后,zabbix_agentd运转后会自动扫描/usr/local/etc/zabbix_agentd.conf.d/目录下全数的.conf文件,并加载。

二、编写监察和控制脚本/usr/local/zabbix/zabbix-script/get_mysql_status.sh,脚本如下(脚本存放目录能够自定义):

#!/bin/sh

case $3 in
uptime)
mysqladmin -u$1 -p$2 status 2>/dev/nul | awk -F '[:| ]'+ '{print $2}'
;;
threads)
mysqladmin -u$1 -p$2 status 2>/dev/nul | awk -F '[:| ]'+ '{print $4}'
;;
question)
mysqladmin -u$1 -p$2 status 2>/dev/nul | awk -F '[:| ]'+ '{print $6}'
;;
sq)
mysqladmin -u$1 -p$2 status 2>/dev/nul | awk -F '[:| ]'+ '{print $9}'
;;
open)
mysqladmin -u$1 -p$2 status 2>/dev/nul | awk -F '[:| ]'+ '{print $11}'
;;
ftable)
mysqladmin -u$1 -p$2 status 2>/dev/nul | awk -F '[:| ]'+ '{print $14}'
;;
opent)
mysqladmin -u$1 -p$2 status 2>/dev/nul | awk -F '[:| ]'+ '{print $17}'
;;
qps)
mysqladmin -u$1 -p$2 status 2>/dev/nul | awk -F '[:| ]'+ '{print $22}'
;;
*)

剧本表达,脚本须求输入多个参数分别是:mysql用户、mysql用户密码、mysql状态各类指标如下:
uptime:运维时间长度单位s、 threads:开启的对话数、
question(questions):服务器运维以来客户的标题(查询)数目 sq(Slow
queries): 慢查询数量 open(opens):服务器已经开垦的数量库表的数目
ftable(Flush tables):服务器已经试行的flush
…、refresh和reload命令的多少 opent(open
tables):通过命令是用的数据库的表的数码,以服务器运行上马 qps(Queries
per second avg):select语句平均查询时间

3、在/usr/local/etc/zabbix_agentd.conf.d/目录下加多监察和控制项配置文件get_mysql_status.conf,内容如下:

UserParameter=get_mysql_status[*],/usr/local/zabbix/zabbix-script/get_mysql_status.sh $1 $2 $3

4、重启zabbix_agent和zabbix_server,使用zabbix_get测试,如下:

#zabbix_get -s 127.0.0.1 -k get_mysql_status[root,weiming,open]
   679

五、web端增添监控项: 在主机上加多监控项:
美高梅手机版4858 12

加上完毕后方可知见新增加监察和控制项如下:

美高梅手机版4858 13

增加图形:

美高梅手机版4858 14

图形预览:

美高梅手机版4858 15

原来的书文来自:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有