添加自定义监控项目
场景:监控某台web的80端口连接数,并出图
方案:1)zabbix监控中心创建监控项目;2)针对该监控项目以图形展现
1.针对上面解决方案我们分步分析,对于第一步需要在客户端定义脚本文件,/usr/local/sbin/estab.sh,内容如下:
#!/bin/bash##获取80端口并发连接数netstat -ant |grep ':80 ' |grep -c ESTABLISHED
2.修改脚本权限:
chmod 755 /usr/local/sbin/estab.sh
3.客户端编辑配置文件 /etc/zabbix/zabbix_agentd.conf ,找到并修改以下参数:
UnsafeUserParameters=1 #表示使用自定义脚本#自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,如果没有参数则可以省略,脚本为/usr/local/sbin/estab.shUserParameter=my.estab.count[*],/usr/local/sbin/estab.sh
如图所示:
ps:需要注意iptables规则,以及脚本的执行权限是否755
4.重新客户端zabbix-agent
systemctl restart zabbix-agent
5.服务端进行验证
1)windows浏览器zabbix端创建监控项
下面红色的框内自定义名称即可,然后选择添加
2)创建图形
填写名称,选择监控项,最后选择添加按钮:
点击创建好的图形预览进行查看
3)创建触发器
选择告警,添加规则:比如最新的值大于200时告警,点击添加按钮保存
配置邮件告警
使用163或者QQ邮箱发告警邮件,本篇教程我们使用163邮箱;
1.登录163邮箱,点击设置选择下拉的POP3/SMTP/IMAP选项
2.检查两选项都已勾选
3.第一次开启需要客户端授权码,如图:
4.设置完成之后进来windows浏览器zabbix服务端,选择管理-->> 报警媒介类型
5.创建媒体类型
6.选择脚本,填写三个脚本参数:
- {ALERT.SENDTO} :接收邮箱地址
- {ALERT.SUBJECT} :主题
- {ALERT.MESSAGE} :邮件内容
7.服务端编写脚本mail.py
文件地址:/usr/lib/zabbix/alertscripts/mail.py
脚本内容:
#!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfrom email.MIMEText import MIMETextfrom email.MIMEMultipart import MIMEMultipartfrom subprocess import *def sendqqmail(username,password,mailfrom,mailto,subject,content): gserver = 'smtp.163.com' #定义发件人服务器,网易邮箱smtp.163.com,腾讯邮箱smtp.qq.com gport = 25 try: # msg = MIMEText(unicode(content).encode('utf-8')) //如果发送的邮件有乱码,可以尝试把这行改成如下: msg = MIMEText(content,'plan','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" % errdef main(): to=sys.argv[1] subject=sys.argv[2] content=sys.argv[3]##定义QQ邮箱的账号和密码,你需要修改成你自己的账号和密码(请不要把真实的用户名和密码放到网上公开,否则你会死的很惨) sendqqmail('你的邮箱@163.com','客户端授权码','你的邮箱@163.com',to,subject,content)if __name__ == "__main__": main() #####脚本使用说明#######1. 首先定义好脚本中的邮箱账号和密码#2. 脚本执行命令为:python mail.py 目标邮箱 "邮件主题" "邮件内容"
8.修改脚本权限
chmod 755 /usr/lib/zabbix/alertscripts/mail.py
9.测试一下是否能正常发送
python /usr/lib/zabbix/alertscripts/mail.py 自己的邮箱@163.com "i'm yolks" "bilibilibili"
效果图
10.windows浏览器端使用zabbix创建用户
选择红色标记出的位置,填写完成点击添加按钮完成用户添加
配置用户告警媒介,完成添加
还需要设置用户所属群组的权限,否则还是无法接收邮件
必须点击添加
查看是否显示为读写
11.添加动作
执行原理即: 先监控-->> 然后创建触发器 -->> 配置好收邮件的人信息及权限 -->> 动作(即触发之后的行为)
修改动作里的默认信息,内容如下:
HOST:{HOST.NAME} {HOST.IP}TIME:{EVENT.DATE} {EVENT.TIME} LEVEL:{TRIGGER.SEVERITY} NAME:{TRIGGER.NAME}messages:{ITEM.NAME}:{ITEM.VALUE}ID:{EVENT.ID}
并且修改操作细节
修改恢复操作,默认信息和上面代码一致
12.看到动作列表如下则准备工作完成
测试告警
为了测试告警,我们需要手动制造故障,以模拟实现告警功能;
1.创建自定义触发器:
2.默默喝杯水等几分钟,刷新下zabbix主页
不发邮件的问题处理
检查脚本,权限,查看教程对比检查问题