zabbix邮件报警+微信报警
zabbix添加自定义监控项
监控nginx web的80端口连接数,zabbix监控中心创建监控项目,针对监控以图形展现
需要到客户端zabbix_agent定义脚本
vim /usr/local/sbin/estab.sh //内容如下 #!/bin/bash ##获取80端口并发连接数 netstat -ant |grep ':80 ' |grep -c ESTABLISHE
chmod a+x /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 120.78.91.23 -p 10050 -k 'my.estab.count'
然后在zabbix监控中心(浏览器)配置增加监控项目
键值写my.estab.count
添加该项目后,到“监测中” “最新数据”查看刚添加的项目是否有数据出现
有了数据就可以添加图形了
“配置”-“主机” -“图形” -“创建图形”
使用163或者QQ邮箱发告警邮件
首先登录你的163邮箱,设置开启POP3、IMAP、SMTP服务
开启并记录授权码
然后到监控中心设置邮件告警
“管理”,“报警媒介类型”,“创建媒体类型”
{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}
创建一个接受告警邮件的用户,“管理”,“用户”,“创建用户”,“报警媒介”,类型选择“baojing”,注意用户的权限,如果没有需要到用户组去设置权限
设置动作,“配置”,“动作”,“创建动作”,名称写“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}
“新的触发条件”,A维护状态 非在 维护,B触发器示警度>=未分类
“操作”,选择发送的用户为刚创建的用户,仅送到选择“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}
点击“新的”,“操作”,选择发送的用户为刚创建的用户,仅送到选择“baojing”
我这里直接使用py脚本,借助阿里云发信地址
# cd /usr/lib/zabbix/alertscripts # vim mail.py #!/usr/bin/python #coding:utf-8 import smtplib from email.mime.text import MIMEText import sys #发信地址 mail_user = 'yantou@222' #发信地址的SMTP密码 mail_pass = '123456' def send_mail(to_list,subject,content): me = "aliyun告警平台"+"<"+mail_user+">" msg = MIMEText(content, 'plain', 'utf-8') msg['Subject'] = subject msg['From'] = me msg['to'] = to_list try: #定义阿里云提供的SMTP服务地址 s = smtplib.SMTP("smtpdm.aliyun.com", 80) s.login(mail_user,mail_pass) s.sendmail(me,to_list,msg.as_string()) s.close() return True except Exception,e: print str(e) return False if __name__ == "__main__": send_mail(sys.argv[1], sys.argv[2], sys.argv[3]) # chmod a+x mail.py
测试
特意改小
恢复
邮件报警完成。
2.zabbix微信+邮件
在指定的告警目录下/usr/local/zabbix/alertscripts,创建weixin.py脚本,在企业微信里找到agentid、企业ID以及企业秘钥
#!/usr/bin/python #coding:utf-8 import requests import sys import os import json import logging logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s', datefmt = '%a, %d %b %Y %H:%M:%S', filename = os.path.join('/tmp','weixin.log'), # 指定临时weixin的日志路径 filemode = 'a') corpid='xxx' # 需要修改企业ID appsecret="xxx" # 企业的secret秘钥 agentid="xxx" # 修改agentid token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret req=requests.get(token_url) accesstoken=req.json()['access_token'] msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken touser=sys.argv[1] subject=sys.argv[2] message=sys.argv[2] + "\n\n" +sys.argv[3] params={ "touser": touser, "msgtype": "text", "agentid": agentid, "text": { "content": message }, "safe":0 } req=requests.post(msgsend_url, data=json.dumps(params)) logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
对weixin.py脚本加上执行权限,并将属组和属主加上
# chmod a+x weixin.py # chown zabbix:zabbix weixin.py
服务端上测试
[root@zabbix-server alertscripts]# python wechat.py YanTou "测试" "WCAO" YanTou 企业微信号 "测试" 主题 "WCAO" 内容
发送成功!!
1、配置发件人
进入:配置——> 报警媒介类型 ——> 创建媒体类型
脚本参数:{ALERT.SENDTO}, {ALERT.SUBJECT} , {ALERT.MESSAGE}
2.配置收件人
给用户添加报警媒介,也可以新建一个用户用来专门来用于微信报警,我这里直接使用 yantou 用户了(说明:这里收件人对应企业微信号中的应用ID)
3、创建动作
配置——>动作——>创建动作
操作-》如下配置
默认操作步骤持续时间 60
主题 : {TRIGGER.STATUS}:{TRIGGER.NAME}
消息:
告警主机:{HOST.NAME}
主机IP:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}
====操作细节=====
操作类型:发送消息
发送到用户:yantou ll
恢复操作:
主题:{TRIGGER.STATUS}:{TRIGGER.NAME}
恢复信息:
恢复主机:{HOST.NAME}
恢复 IP:{HOST.IP}
恢复时间:{EVENT.DATE} {EVENT.TIME}
恢复等级:{TRIGGER.SEVERITY}
恢复信息:{TRIGGER.NAME}:{ITEM.VALUE}
恢复 ID:{EVENT.ID}
====操作细节=====
操作类型:发送消息
发送到用户:yantou ll
测试结果如下:(负载小于1触发)
配置成功