添加自定义监控项目

例如 需求:监控某台web的80端口连接数,并出图 两步:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现 对于第一步,需要到客户端定义脚本 [root@localhost ~]# 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下 首先进入到目录下 [root@linletao-001 ~]# cd /usr/lib/zabbix/alertscripts [root@linletao-001 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(): to=sys.argv[1] subject=sys.argv[2] content=sys.argv[3] ##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨) sendqqmail('1234567@qq.com','aaaaaaaaaa','1234567@qq.com',to,subject,content) 输入邮箱 输入授权码 输入邮箱 if name == "main": main() #####脚本使用说明###### #1. 首先定义好脚本中的邮箱账号和密码 #2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容" 保存退出。 然后更改脚本的权限 chmod 755 mail.py 然后测试一下脚本是否会发邮件 python mail.py 2008llt@163.com "邮件标题" "邮件内容" 然后我们去邮箱验证一下即可。

然后我们创建一个用户,这个用户是用来接收邮件的 在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有问题了,重新恢复快照,再安装一遍。