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

 

 

 

 配置成功

posted @ 2021-03-02 21:51  烟头001  阅读(244)  评论(0编辑  收藏  举报