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触发)


配置成功