添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理

添加自定义监控项目

例如
需求:监控某台web的80端口连接数,并出图
两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现
对于第一步,需要到客户端定义脚本
[[email protected] ~]# vim /usr/local/sbin/estab.sh
#!/bin/bash
##获取80端口并发连接数
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
然后给他定义权限
chmod 755 /usr/local/sbin/estab.sh

客户端上编辑配置文件 vim /etc/zabbix/zabbix_agentd.conf
然后在里面搜索UnsafeUserParameters
找到后将前面的#去掉,然后让他等于1,它的目的是使用自定义脚本
UserParameter=my.estab.count[],/usr/local/sbin/estab.sh
//自定义监控项的key为my.estab.count,后面的[
]里面写脚本的参数,如果没有参数则可以省略,脚本为/usr/local/sbin/estab.sh
重启zabbix-agent服务 systemctl restart zabbix-agent
首先到服务端验证,执行命令
zabbix_get -s 192.168.218.129 -p 10050 -k 'my.estab.count'
如果结果为0,那么证明你的脚本时好用的,如果不为0,则证明脚本有问题
还有一点要注意的是,我们要保持网络畅通,没有防火墙规则,没有selinux。

然后在zabbix监控中心(浏览器)配置增加监控项目
添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理
添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理
剩下的保持默认
添加完后还要给他做一个图形,点击上面的图形,然后点击最右边的创建图形。
在里面输入名称,点击下面的添加,在弹出的对话框中选择并发链接数,确定后点击再点击下面的添加,最后就可以形成新的图表了。
添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理
我们也可以给他做一个触发器,步骤基本相同
首先点击触发器,然后点击最右边的创建触发器,
然后在里面输入名字,然后点击下面,选择严重性,然后点击下面的添加
添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理
这里监控项在弹出的对话框中选择,功能通过点击向下的箭头选择,n=自定义的数值。最后点击添加。

配置邮件告警

使用163或者QQ邮箱发告警邮件
首先进入163邮箱,然后在设置页面中选择
添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理
然后在里面设置
添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理
然后设置客户端授权码,这个密码要尽量复杂,确保安全。
添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理
然后我们进入zabbix监控页面,进行邮箱报警设置
添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理
这里面虽然还有邮箱报警的选项,但是我们不需要那个,我们要重新创建一个邮箱报警。
将里面的选项逐一填写
添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理
然后我们去设定一个脚本,这个脚本要放到/usr/lib/zabbix/alertscripts下
首先进入到目录下
[[email protected] ~]# cd /usr/lib/zabbix/alertscripts
[[email protected] alertscripts]# vim /usr/lib/zabbix/alertscripts/mail.py
#!/usr/bin/env python
#-- coding: UTF-8 --
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from subprocess import *

def sendqqmail(username,password,mailfrom,mailto,subject,content):
gserver = 'smtp.163.com' (这里需要改为你的邮箱,比如163就改为 smtp.163.com)
gport = 25

try:
msg = MIMEText(unicode(content).encode('utf-8'))
msg['from'] = mailfrom
msg['to'] = mailto
msg['Reply-To'] = mailfrom
msg['Subject'] = subject

smtp = smtplib.SMTP(gserver, gport)
smtp.set_debuglevel(0)
smtp.ehlo()
smtp.login(username,password)

smtp.sendmail(mailfrom, mailto, msg.as_string())
smtp.close()
except Exception,err:
print "Send mail failed. Error: %s" % err

def main():br/>to=sys.argv[1]
subject=sys.argv[2]
content=sys.argv[3]
##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨)
sendqqmail('[email protected]','aaaaaaaaaa','[email protected]',to,subject,content)
输入邮箱 输入授权码 输入邮箱
if name == "main":
main()
#####脚本使用说明######
#1. 首先定义好脚本中的邮箱账号和密码
#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"
保存退出。
然后更改脚本的权限
chmod 755 mail.py
然后测试一下脚本是否会发邮件
python mail.py [email protected] "邮件标题" "邮件内容"
然后我们去邮箱验证一下即可。

然后我们创建一个用户,这个用户是用来接收邮件的
在zabbix的浏览器页面中选择管理--用户--创建用户
然后设置
添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理
然后再在用户中点击我们刚才设定的用户,在里面选择报警媒介,在里面填写邮箱
添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理
然后再选择权限,将所有组改为读写。如果不能更改,那我们既要去用户组中改权限,
添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理
然后在选择中选择所有组,再点击添加和更新,这样我们的权限就全部为读写了。
以上步骤一定要检查清楚,否则会收不到报警的。
然后我们设置动作,进入后选择创建动作,然后做如下的配置。
添加自定义监控项目,配置邮件告警,测试告警,不发邮件的问题处理
然后点击操作,将默认信息全部删除,然后黏贴一下的内容
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE} {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
然后在里面点击‘新的’在新的里面选择发送到用户,在里面选择我们自定义的用户,然后点添加,剩下的保持默认,最后点击蓝色方框内的添加。需要注意的是,我们每一个选项都是要点击添加的,如果不点击,就不会增加选项。

然后我们设置恢复操作,也是要将默认信息全部删除,将下面的内容复制进去
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE} {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
然后再操作中选择‘新的’,选择发送发消息给的用户。最后的点击更新即可。

不发送邮件的问题处理

检查发送邮件的脚本,先在命令行里测试一下是否能正常收到。
检查脚本文件的权限,确保能被zabbix用户调用
检查报警媒介中的配置
检查用户中是否有添加报警媒介,并且要具有读写权限
检查动作、操作、恢复操作中的配置

如果从头到尾都仔细检查了,实在是无法收到邮件的话,那就是你搭建的zabbix有问题了,重新恢复快照,再安装一遍。

转载于:https://blog.51cto.com/13067688/2121321