添加自定义监控项目:python
需求:监控某台web的80端口链接数,并出图web
步骤:1.zabbix监控中心建立监控项目;vim
客户端定义脚本:vim /usr/local/sbin/estab.sh #添加如下内容:bash
#!/bin/bash ##获取80端口并发链接数 netstat -ant |grep ':80 ' |grep -c ESTABLISHED
修改脚本权限:chmod 755 /usr/local/sbin/estab.sh并发
客户端编辑配置文件: vim /etc/zabbix/zabbix_agentd.conf #搜索UnsafeUserParameters后,添加如下内容:测试
#表示使用自定义脚本 UnsafeUserParameters=1 #自定义监控项的key为my.estab.count,后面的[*]里面写脚本的参数,若是没有参数则能够省略,脚本为/usr/local/sbin/estab.sh UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh
重启zabbix-agent服务: systemctl restart zabbix-agentdebug
服务端验证:zabbix_get -s 192.168.133.132 -p 10050 -k 'my.estab.count‘ #ip为agent的ip,执行后应该与在客户端直接执行estab.sh脚本效果同样rest
zabbix界面配置增长监控项目:配置---主机---点击 客户端主机的 监控项---建立监控项---填写名称为 并发链接数---键值为 my.estab.count---点击 添加code
2.针对该监控项目以图形展示server
配置---主机---点击 客户端主机的 图形---点击 建立图形---填写名称为 并发链接数---点击 监控项的 添加,选中上一步定义的监控项“并发链接数”---点击 添加
点击界面生成的 “并发链接数”跳转到图形---点击预览
添加触发器:
配置---主机---点击 客户端主机的 触发器---点击 建立触发器---填写名称为 并发链接数---严重性选 警告---点击表达式右边 添加---监控项添加,选中上一步定义的监控项“并发链接数”---功能 选最新T值>N(即脚本运行的最新结果的数值为T) ---N填 200 (即脚本运行结果大于200是触发器发出警告)---点击 插入
配置邮件告警:
使用163或者QQ邮箱发送告警邮件
1.首先登陆163邮箱,开启POP三、IMAP、SMTP服务,开启并记住受权码
2。进入zabbix界面设置邮件告警: 管理---报警媒介类型---点击 建立媒体类型---名称 baojing---类型 脚本---脚本名称 mail.py---点击脚本参数的添加,添加三个参数:{ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE} (即发给谁,主题,内容)---点击 添加
3.服务端建立发邮件脚本mail.py: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.qq.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('163或QQ邮箱','受权码','163或QQ邮箱',to,subject,content) if __name__ == "__main__": main()
4.修改脚本权限:chmod 755 /usr/lib/zabbix/alertscripts/mail.py
5.测试发送邮件,执行:python mail.py 收件邮箱 "标题" "内容" #执行后查看对应收件邮箱是否接收到邮件
6.建立告警用户:zabbix界面,管理---用户---建立用户---填写别名,用户名第一部分,姓氏---群组 点添加---选择已有的administrators组---设置密码。
点击 报警媒介---点击 添加---类型 baojing---收件人 填上面申请的邮箱---点击 添加
管理---用户群组---选择上面选好的administrators组---点击 权限---点击 读写---点击 选择,勾选全部---点击 添加---点击 更新
7.设置动做(触发器触发报警后的行动):配置---动做---建立动做---名称为 sendmail---新的触发条件:触发器示警度>=未分类---点击新的触发条件的添加
点击 操做---默认信息清空 并添加下面内容:
HOST:{HOST.NAME} {HOST.IP} TIME:{EVENT.DATE} {EVENT.TIME} LEVEL:{TRIGGER.SEVERITY} NAME:{TRIGGER.NAME} messages:{ITEM.NAME}:{ITEM.VALUE} ID:{EVENT.ID}
---点击 新的---发送到用户 选择第6步建立的用户---仅发送 选择baojing---点击小的添加
点击 恢复操做---默认信息清空 并添加下面内容:
HOST:{HOST.NAME} {HOST.IP} TIME:{EVENT.DATE} {EVENT.TIME} LEVEL:{TRIGGER.SEVERITY} NAME:{TRIGGER.NAME} messages:{ITEM.NAME}:{ITEM.VALUE} ID:{EVENT.ID}
---点击 新的---发送到用户 选择第6步建立的用户---仅发送 选择baojing---点击小的添加---点击大添加
测试告警:
修改原有触发器报警条件或新增触发器,让触发器达到报警状态。查看是否有告警邮件发送。