zabbix自定义监控mysql主从状态,并做邮件告警

 通过zabbix自定义监控mysql主从状态,并做邮件告警

分析: mysql主要是通过主从来提供安全性,一个完整的主从体系,就应该包括数据同步、开启二进制日志、全备、还有对Slave_IO_Running和Slave_SQL_Running两个线程的实时监测,并做告警,而zabbix监控软件就提供了很好的方法;对于zabbix这个监控软件,个人来说也是比较熟悉,现在的企业们都基本用的是zabbix软件来做系统的资源的监控,zabbix的强大不仅仅体现于,它自身自带的监控模板比较全面,而是通过它,我们可以自己自定义获取我们想要的参数,并且出图做邮件告警。

实现过程:

一、添加mysql主从状态自定义监控

1、修改客户端:首先需要在mysql的从库上安装zabbix客户端(安装这里不再演示,我这里使用的是一键安装的,详细可以参考文章:使用ansible一键实现zabbix源代码安装  我们直接进入我们的主题)。我们需要在zabbix的客户端更改文件一些参数。

进入zabbix_agentd.conf文件,usr/local/zabbix/为我的安装路径

#vim /usr/local/zabbix/etc/zabbix_agentd.conf

编辑文件,向文件添加如下:

UnsafeUserParameters=1
UserParameter=slavestatus,mysql -uroot -p123456  -e "show slave status\G" |grep "Running" |awk '{print $2}' | grep Yes | wc –l

解析:UnsafeUserParameters=1,意思是开启自定义监控,UserParameter为获取的数据结果,slavestatus为名字,后面的是获取slave_IO状态的命令

2、测试命令,是否能获取到数据,且获取的数据信息是否正确。

[[email protected] ~]# mysql -uroot -p123456  -e "show slave status\G" |grep "Running" |awk '{print $2}' | grep Yes | wc -l
2

#获取Yes的个数的命令写法有很多,按你喜欢的获取就好,我这里可以知道,命令,命令获取状态是没问题的。

3、重启客户端,添加自定义监控

[[email protected] mysql]# service zabbix_agentd restart
Restarting zabbix_agentd (via systemctl):                  [  确定  ]

#我们去到zabbix服务端,看看能不能,获取到数据

[[email protected] bin]# pwd
/usr/local/zabbix/bin
[[email protected] bin]# ./zabbix_get -s 192.168.1.220  -k slavestatus
2

#可以获取到数据,证明我们可以在web端可以添加监控,并出图了,这里的-k 指的是你在zabbix客户端上设置UserParameter参数的名字,这个名字可以随意。

4、zabbix服务端监控出图

去到zabbix的web页面创建新的模板,点击:配置à模板à创建模板,如下图所示

5、创建监控项,点击:mysql-slavestatusà监控项à创建监控项,如下图所示:

6、添加监控项名称为slavestatus,键值为slavestatus。

注意,所为的键值就是你写在zabbix_agentd.conf的自定义keys名称

7、添加图像,绑定监控项,(监控项是我们刚创建的slavestatus的监控项)

8、添加新的触发条件,过程如下

因为是自定义keys监控,所以我们没有定义触发器,触发器一般是为了做告警用的,如果在是使用自定义keys的时候,只为了出图,而没有定义触发条件的做法是没有意义的,所以,我们需要定义一个触发条件。

#然后继续添加表达式,并设置严重性

设置T值不为N时,触发告警。N为2,如下图所示:(这个要根据实际情况而定的)

添加完的结果如下图:

9、绑定主机,出图,出数据。

到了这一步,我们的自定义keys监控就基本完成了;但是,我们的自定义keys毕竟只是一个模板,并不能够出图出数据,所以,这就需要人为的让主机绑定模板,这样才能出图出数据,注意的是,绑定模板的主机必须要有自定义keys的定义,否则都是啥扯淡。

#点击:配置à主机(自定义keys主机)à模板,如下图所示

#点击:选择à选择群组找到模板à选择,如下图所示

注:linux server是我在新建模板的时候绑定的群组,绑定群组的好处就是,方便查找。

#添加完毕后,点击更新。

#查看图像,查看获取的数据,是否正确

#可以发现,获取的数据和出图都已经达到我们的目的了。自动义监控mysql-slavestatus的状态已经成功了。

二、邮件告警的实现

为什么好做告警呢?一个监控系统,往往离不开“告警”,总的来说,在zabbix应用中,我们通过zabbix来做监控,我们的最终目的并不是,让它出图,让我们来观察。你可以想像,作为一个运维人员,讲究的是自动化,简单,便捷。你是不会那么有空去时刻看着你所监控的服务的状态的,当然,你喜欢这样,那也没办法。不再废话了,今天的目的是,为了实现告警部署,完善整个监控系统的部署。

告警方式有很多,我这里提供的是邮件告警,如果你有时间的,也可以弄一个微信告警也可以,接下来,进入我们的主题,部署邮件告警。

1、zabbix Server端修改配置文件创建自定义媒介,发送邮件

[[email protected] ~]# vim /usr/local/zabbix/etc/zabbix_server.conf

找到AlertScriptsPath选项,添加媒介

AlertScriptsPath=/usr/local/zabbix/alertscripts

2、创建目录和邮件告警文件。

[[email protected] ~]# mkdir /usr/local/zabbix/alertscripts 
[[email protected] ~]# cd /usr/local/zabbix/alertscripts/
[[email protected] alertscripts]# ls

我这里提供一个python邮件发送脚本:

[[email protected] alertscripts]## cat  send_mail.py
#!/usr/bin/python
#coding: utf-8
import smtplib
import sys
from email.mime.text import MIMEText
_user = "847536**@qq.com"    ##这里填写你的邮件号
_pwd  = "ilbsly******"   
##这里填写你邮件的密码 ,我这里使用的是qq邮箱(其他邮箱也可以),qq邮箱密码是要到QQ邮箱里面申请的,然后它会生成一个密码的
#_to   = "[email protected]"    ##这里是发送给谁,这个一般注释掉,在执行脚本的时候指定发给谁就可以了
def send_mail(to,subject,contain):
    msg = MIMEText(contain)
    msg["Subject"] = subject
    msg["From"]    = _user
    msg["To"]      = to
    try:
        s = smtplib.SMTP_SSL("smtp.qq.com", 465)
        s.login(_user, _pwd)
        s.sendmail(_user, to, msg.as_string())
        s.quit()
        with open('/tmp/zabbix.log', 'w') as f:
            f.write("%s\n%s\n%s\n"%(to,subject,contain))
#        print "Success!"
    except smtplib.SMTPException,e:
        print "Falied,%s"%e
if __name__ == "__main__":
    send_mail(sys.argv[1], sys.argv[2], sys.argv[3])

4、测试脚本邮件

 [[email protected] ~]# python "/usr/local/zabbix/alertscripts/send_mail.py" "84753***@qq.com" "xiaozhang" "xiaozhang"

查看是否收到;可以发现脚本是没问题的。

5、报警媒介创建。在zabbix web端创建媒介类型,点击:管理à报警媒介类型à创建媒介类型,如图所示:

#定义媒体类型,我们可以看一下定义的参数

名称:python_send_mail (名称可以随意指定,后期调用)

类型:脚本

脚本名称: send_mail.py  ##这个要跟你的邮件脚本的名称一样。

添加脚本参数(在 3.0 版本之前默认传值不用添加):

{ALERT.SENDTO}  ####发送地址

{ALERT.SUBJECT}  ###主题

{ALERT.MESSAGE}  ###发送内容

配置结果如下图:

6、添加用户操作命令,作用该发送给谁,什么时段发送:

1)、步骤:   管理à用户àAdminà报警示警媒介à创建示警媒介:

备注: 类型选择添加的示警媒介名称,收件人表示要发送到哪个地方: 启用时间:表示可以发送邮件的时间段。

2)添加结果。添加完成后如下:

7、添加要执行的动作

1)、步骤: 配置à动作à添加”触发器”动作:

2)、动作选择项:

定义动作名称、使用默认选项,然后勾选恢复通知和已启用。 条件选择默认即可 操作主要定义发送步骤,选择发送用户和发送脚本: 操作步骤定义(时间假如我定义为 60s):然后操作不走选择 1-2 说明前面 120 两次发送 的告警都会发送到 zabbix 这个用户。

动作操作结果如下:

配置消息恢复结果:

备注:操作类型:可以是发送命令或者邮件。例如操作命令可以在监控服务的适合发送 一条 restart 命令重启服务。

8、查看动作结果。

从图上可以发现,已经可以添加动作完成了,并且动作状态是已经启用的了。整个告警部署就完成了。(因为业务不允许,我这里就不演示,触发告警的结果)

三、总结

整个告警系统依赖的是我们定义的触发器的触发条件,一但我们监控的数据不满足或者超出我们设定的监控外,系统就会执行动作:发送消息给用户: Admin (Zabbix Administrator) 通过 python_send_mail,接着我们也就可以收到邮件告警。

原文地址:http://blog.51cto.com/xiaozhagn/2068965

时间: 2024-12-02 01:46:10

zabbix自定义监控mysql主从状态,并做邮件告警的相关文章

Zabbix自定义监控MySQL性能状态

环境是CentOS 6.5 x86_64系统 Zabbix版本:3.0.4 MySQL Server 版本:5.6.29 二进制安装 zabbix_agentd.conf的配置文件如下: [[email protected] alertscripts]# cat  /usr/local/zabbix/etc/zabbix_agentd.conf | grep -v '^#' | grep -v '^$'LogFile=/tmp/zabbix_agentd.logEnableRemoteComma

使用zabbix监控mysql主从状态

公司mysql架构为一主多从.在日常使用过程中我们经常会遇到主从不同步的情况,为了及时处理此问题现使用zabbix监控mysql主从状态并设置触发器,如有异常则发送邮件报警. 我们都知道使用命令"show slave status \G"可以查看mysql从的状态,下面用脚本方式检查其状态. 在mysql-slave中进入zabbix-agent目录创建脚本文件. cat mysql_slave_status.sh #!/bin/bash /usr/local/mysql/bin/my

shell监控MySQL主从状态脚本两则

内容为自己的一点总结,如有不对欢迎狠劲儿拍砖 本文来自http://yijiu.blog.51cto.com/转载请经博主同意,翻版可耻 监控主从复制正常与否 相比各位都应该知道,监控主从是否工作正常,涉及命令如下: show slave status\G; 那么,我们需要关注的参数如下: 1. 首先查看SQL和IO线程是否为YES状态(想必各位都明白了) 2. 是否有延迟 是否大于0   #一般生成环境延迟是否大于500秒,如果大于500则报警,如大于1000则严重报警 #比如传递一个sql到

zabbix监控mysql主从状态

首先上监控的脚本: #!/bin/bash status=`mysql -u root -p123 -e "show slave status\G" | egrep "Slave_IO_Running|Slave_SQL_Running" | awk -F: '{print $2}' | tr "\n" " "` arr_status=(`echo $status`) [[ ${arr_status[0]} =~ "

python实战系列之MySQL主从状态监控(09)

1. 需求说明 由于openstack底层中MySQL使用了主从AB复制,为了监控数据库的主从状态信息,需要对MySQL的主从状态进行监控,从而保障数据库底层正常运行,为openstack提供更好的功能.本文对数据库执行监控,具体内容参考下面. 2. 程序内容 #!/usr/bin/env python #_*_ coding:utf8 _*_ #author:happyliu #用于监控MySQL主从复制状态 import os import sys import os.path import

如何实时检测mysql主从状态,并做邮件告警?

实时检测mysql主从状态,并做邮件告警 需求分析: 当我们做完主从后,主从成功的话,Slave_IO_Running和Slave_SQL_Running两个进程的状态就为yes,但是在做主从同步时也不排除,会发生一些意外的情况,所以我们需要写个脚本来实时检测Slave_IO_Running和Slave_SQL_Running的状态,一旦mysql主从状态出现了状况,就通过邮件发送告警,然后再做维护. 脚本思路: 定时检测mysql主从状态,说白的了就是通过脚本让系统去自我检测主从状态,如果是主

监控mysql主从同步状态是否异常,如果异常,则发生短信或邮寄给管理员

阶段1:开发一个守护进程脚本每30秒实现检测一次. 阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),请跳过错误 阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分) [[email protected] ~]# mysql -u root -proot -e "show slave status\G;" *************************** 1. row ***************************       

shell编程之【zabbix自定义监控网卡流量脚本】

之前写了一篇文章主要介绍zabbix的搭建使用http://msiyuetian.blog.51cto.com/8637744/1705396 下面这篇文章主要介绍zabbix自定义监控网卡流量的脚本实现 前期准备 1.说明 server ip :192.168.0.115 client ip :192.168.0.114 2.开启服务 因为之前搭建过zabbix环境,这里就不重复了,直接开启服务端的所需服务: [[email protected] ~]# /etc/init.d/httpd s

监控MySQL主从同步

脚本监控数据库主从同步 来源:http://oldboy.blog.51cto.com/2561410/1632876 来源: (生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员.提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟: 阶段1:开发一个守护进程脚本每30秒实现检测一次. 阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误. 阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分 [[em