Zabbix4.0(三)钉钉,邮件,微信报警

一,zabbix 邮件报警设置
原理:触犯告警器之后 可以配置相应的动作,在动作里可以发邮件、微信、钉钉、短信等。
告警脚本的放置位置见配置/usr/local/zabbix/etc/zabbix_server.conf

LogFile=/usr/local/zabbix/zabbix_server.log
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbixpwd
DBPort=3306
Timeout=30
AlertScriptsPath=/usr/local/zabbix/alertscripts  ##触发脚本放置位置
ExternalScripts=/usr/local/zabbix/externalscripts
LogSlowQueries=3000

python 邮件发送脚本

/usr/local/zabbix/alertscripts/zabbix_sendmail.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP_SSL
import sys

smtpaddr = ‘smtp.qq.com‘
myemail=‘[email protected]‘     ##发送邮件的QQ
password=‘mypassword‘         ##填写登陆客户端的授权码,在邮箱里生成同时需要打开POP3,IMAP服务
#f = open(‘/usr/local/zabbix/.passwd‘,‘r‘)
#password = f.readline().strip()

recvmail=sys.argv[1]   ##发送邮件给谁
subject=sys.argv[2]    ## 发送的主题
content=sys.argv[3]   ##发送的内容

msg = MIMEText("""%s"""%(content), "plain", "utf-8")    ##发送的内容
msg[‘Subject‘] = Header(subject, ‘utf-8‘).encode()
msg[‘From‘] = myemail
msg[‘To‘] =  recvmail

try:
  smtp = SMTP_SSL( smtpaddr )
  smtp.login(myemail, password)
  smtp.sendmail(myemail, recvmail.split(‘,‘), msg.as_string())
  smtp.quit()
  print("success")
except Exception as e:
  print("fail: "+str(e))
    ##增加执行权限,测试脚本是否运行正常能发送邮件
    /usr/local/zabbix/alertscripts/zabbix_sendmail.py [email protected] ‘zabbix disk‘ ‘content: disk > 90%‘   

2,报警媒介设置邮件告警

脚本放置的名字,注意是放置在/usr/local/zabbix/alertscripts 目录下,添加三个接受的参数,发送给谁,主题是什么,内容是什么 这地方需要添加三个参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

添加需要发送的用户媒介设置

发送执行的脚本,发送给谁,时间,级别,有多个 以逗号隔开

创建触发器动作 在模板或者主机里

设置触发器触发之后的动作(action)
出问题发送的内容 用户,执行的脚本

故障恢复之后动作 发送一封恢复的邮件


二,告警内容自定义和告警抑制
在报警内容加上自定义内容参数host.name host ip1
Default operation step duration 触发后的操作时间, 通过下面的steps 来实现操作抑制,例如 上面设置30s
步骤 4-4 那么 在4次步骤 4*30 2分钟之后才发送报警邮寄


三,微信告警
注册创建企业微信
在管理后台添加自建应用

创建好后 获取企业微信的agentid和secrct 填写于脚本

跟邮件一样 在同样位置添加微信报警脚本

vim /usr/local/zabbix/alertscripts/zabbix_wx.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import json
import sys
import urllib,urllib2

agentid = ‘xxx‘     ###微信自建应用ID
corpid = ‘xxx‘       ###微信企业ID 在我的企业里面查看
corpsecret = ‘xxx‘    ### 微信自建应用secret

#get tocken
gettoken_url = ‘https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=‘ + corpid + ‘&corpsecret=‘ + corpsecret
token_file = urllib2.urlopen(gettoken_url)
token_data = token_file.read().decode(‘utf-8‘)
token_json = json.loads(token_data)
my_token = token_json[‘access_token‘]

#send wechart
touser=sys.argv[1]  #many user: ‘zhangsan|wangwu‘
content=sys.argv[2] #content
post_content = {
        "touser":touser,
        "agentid":agentid,
        "msgtype": "text",
        "text":{
                "content":content,
        }
}
json_content = json.dumps(post_content)
url = ‘https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=‘ + my_token
response = urllib2.urlopen(url,json_content)
print(response.read().decode(‘utf-8‘))
##测试
/usr/local/zabbix/alertscripts/zabbix_wx.py ‘通讯录里面的微信名‘ ‘disk is not enough‘

添加 创建2个变量 发送给谁 发送的内容

报警之后的action(注意更改发送的脚本名称)

user添加 注意填写发送名称,还有报警级别

四:钉钉告警
钉钉告警跟微信告警类似
告警脚本/usr/local/zabbix/alertscripts/

###告警机器人脚本
###安装pip,安装request模块
yum -y install epel-release
yum -y install python-pip
pip install requests
#!/usr/bin/env python
import json
import requests
import sys

def send_msg(url, remiders, msg):
    headers = {‘Content-Type‘: ‘application/json; charset=utf-8‘}
    data = {
        "msgtype": "text",
        "at": {
            "atMobiles": remiders,
            "isAtAll": False,
        },
        "text": {
            "content": msg,
        }
    }
    r = requests.post(url, data=json.dumps(data), headers=headers)
    return r.text

if __name__ == ‘__main__‘:
    msg = sys.argv[1]
    remiders = []
    url = ‘告警机器人webrooturl‘
    print(send_msg(url, remiders, msg))

相关配置参数(发送用户填写admin即可)

钉钉工作通知告警脚本

#!/usr/bin/python
# -*- coding: utf-8 -*-
#curl ‘https://oapi.dingtalk.com/gettoken?corpid=xxx&corpsecret=xxx‘
import json,urllib2,sys

appkey = ‘钉钉自建应用查看‘
appsecret = ‘钉钉自建应用查看‘
agentid = 钉钉自建应用查看‘
touser = sys.argv[1]
content = sys.argv[2]

tockenurl = ‘https://oapi.dingtalk.com/gettoken?corpid=‘ + appkey + "&corpsecret=" + appsecret
tockenresponse = urllib2.urlopen(tockenurl)
tockenresult = json.loads(tockenresponse.read().decode(‘utf-8‘))
tocken =  tockenresult[‘access_token‘]

sendurl = ‘https://oapi.dingtalk.com/message/send?access_token=‘ + tocken
headers = {
        ‘Content-Type‘:‘application/json‘
}
main_content = {
        "touser": touser,
        "toparty": "",
        "agentid": agentid,
        "msgtype": "text",
        "text": {
                "content": content
        }
}
main_content = json.dumps(main_content)
req = urllib2.Request(sendurl,headers=headers)
response = urllib2.urlopen(req, main_content.encode(‘utf8‘))
print(response.read().decode(‘utf-8‘))
##测试
/usr/local/zabbix/alertscripts/zabbix_dd.py 填写钉钉用户ID ‘disk > 90%‘

原文地址:https://blog.51cto.com/1014810/2461148

时间: 2024-11-08 19:52:09

Zabbix4.0(三)钉钉,邮件,微信报警的相关文章

python&powershell&shell三种方式实现微信报警

运维中大家会碰到异常需要告警时,目前流行方式是微信告警,根据运维精简化需要(不安装不必要应用,一般应用服务器默认安装的脚本语言执行,省去过多安装过程),做了以下三种语言脚本供大家参考:实现功能:给微信发短信,三个参数,第一个参数为群发(值为1)还是单独发送(值为2):第二个参数为用户ID,如群发,值为组id号,如网上交易组id为2,,如单独发送,值为账号,如道然id为daoran,无大小写区分.1.python大家最熟悉的语言,跨平台,但需要安装包.#!/usr/bin/python -- co

nagios钉钉报警与邮件报警

由于公司需求,要有一个监控,并且可以钉钉.邮件报警,我就做了.虽然,我是tester,因为公司暂时没运维,我兼职了. 前提条件: * 已经装好naigos,但没配置报警 * 需要linux下有python环境,并且安装requests第三方库 首先,我先感概一下这nagios的配置真有点麻烦,而且没有说明文档参考,靠自己慢慢摸索,当时是搞了很久.不过,挺强大的,这个工具,什么命令都可以自己配置. 1.在commands.cfg文件,配置一下报警命令 python /usr/local/nagio

Zabbix通过网易邮箱、企业微信、钉钉整合实现实时告警

Zabbix可以通过多种方式将告警信息发送到指定人,常用的报警方式有邮件.微信.钉钉等.本次博文主要介绍这三种报警方式. 一.配置网易邮箱实现报警 本篇博文采用网易邮箱的方式实现报警!操作如下: zabbix server需进行以下配置: [[email protected] ~]# yum -y install perl-Net-SSLeay perl-IO-Socket-SSL //安装所需依赖 [[email protected] ~]# wget http://caspian.dotco

Linux----------zabbix监控-微信、钉钉告警

目录 一,zabbix配置微信告警 1.1 设置微信企业号 1.2.1 设置微信通讯录 1.2.2 创建新的应用 1.2.3 应用权限管理 1.2.4 收集微信相关信息 1.3 微信脚本 1.3.1 安装依赖 1.3.2 下载安装脚本 1.3.3 填写微信脚本参数 1.4 添加zabbix示警媒介 1.5 添加用户-示警媒介 1.6 添加到动作 1.7 自行测试 二.钉钉告警 2.1 配置钉钉 2.2 编写告警脚本 2.3 添加示警媒介 2.4 添加用户-示警媒介 2.5 添加到动作 2.6 自

Zabbix配置钉钉的带图片报警

实现思路: 首先报警信息里要有itemid,这是前提,根据信息里传入的参数使用正则匹配到itemid 构建一个session会话,或者使用cookie来进行登录,根据itemid去请求图片,并将获取到的图片保存到本地,由于markdown的图片链接需要被访问到,我的zabbix是在内网中,所以需要将图片传到图床或者传到一个具有公网IP的web服务器,我这里传到了我的个人服务器 将报警信息转换成markdown语法格式 构造请求利用钉钉的webhook发送消息 设置钉钉机器人 钉钉机器人需要进行安

Zabbix-3.0.3实现钉钉告警

版本:v1.0 作者:白树潮 Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是越来越多的企业开始使用zabbix结合钉钉作为主要的告警方式,这样可以及时有效的把告警信息推送到接收人,方便告警的及时处理. 一.创建钉钉机器人推送告警信息 添加一个机器人即可 复制webhook API后面会调用接口去推送告警信息 配置zabbix 下载程序:go语言写的一个api程序 https://cucc.file.qiansw.com:1443/2017/02/golang

zabbix 3.0.2微信报警

一.注册微信公众号 首先申请微信公众平台https://mp.weixin.qq.com/一个人最多申请5个公众号,所以还是可以的 申请完之后就可以根据腾讯的提示使用微信公众号了,然后用你自己的微信扫描关注微信号. 就可以看到用户数了,接下来的就要使用的用户的微信ID号了.点击用户查看用户的微信ID号.在浏览器查看用户的微信ID号.就是那个红色的ID了. https://mp.weixin.qq.com/cgi-bin/singlesendpage?t=message/send&action=i

使用钉钉自定义应用的方式实现zabbix报警

先给大家展示一下完成后的效果图 下面我们就按照下面的步骤来实现我们想要的效果 首先去钉钉后台管理添加自定义应用,关于如何创建自定义应用可以咨询钉钉客服或者查看钉钉相关文档,创建好应用后我们需要获取三个信息: AgentID:创建好应用后再点击应用进去就可以查看 CorpId:管理员才可以查看 CorpSecret:需要最高管员才可以查看 然后在附件中下载我们对应的程序到我们的zabbbix server的AlertScriptsPath目录,可以通过以下命令查看目录所在位置 grep "Aler

zabbix使用微信报警(三)

https://qy.weixin.qq.com/  企业号注册 http://qydev.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5    微信调用接口说明 http://qydev.weixin.qq.com/debug 微信企业号接口调试地址 一.首先申请企业公众号 二.获取AccessToken 使用微信,应该最重要的就是这个了,下面是如何获取他,在他的接口文档中,有说明: 首先测试一下,看通过接口调试工具,如何获取Acce