zabbix 6.0结合邮箱进行告警
1、邮箱告警流程
个人邮箱/企业邮箱
开启邮箱 smtp功能,获取授权码
发件人:配置zabbix服务端报警媒介
收件人:配置群组、用户接收报警
报警动作:什么时候发送告警邮件
2、准备邮箱
QQ邮箱地址:https://mail.qq.com/


授权码是QQ邮箱用于登录第三方客户端/服务的专用密码,适用于登录以下服务:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服务。
温馨提醒:为了你的帐户安全,请不要告诉他人你的授权码,更改QQ帐号密码会触发授权码过期,需要重新获取新的授权码登录。
3、测试邮箱使用连接正常
1 2 3 4 5 6
| [root@zabbix-server01 ~]
[root@zabbix-server01 ~] 220 newxmesmtplogicsvrsza29-0.qq.com XMail Esmtp QQ Mail Server.
|
4、设置zabbix 连接邮箱信息







4.1 设定宏


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 信息类型是: 问题( 发生故障 ) 主题: 故障名称: {EVENT.NAME} 消息: 故障始于 时间: {EVENT.TIME} 日期: {EVENT.DATE} 故障名称: {EVENT.NAME} 故障主机: {HOST.NAME} 严重程度: {EVENT.SEVERITY} 额外信息: {EVENT.OPDATA} 故障ID: {EVENT.ID} --- 发器地址: {TRIGGER.URL}
主题: 故障解决 in {EVENT.DURATION}: {EVENT.NAME} 消息: 故障已经解决 时间: {EVENT.RECOVERY.TIME} 日期: {EVENT.RECOVERY.DATE} 故障名称: {EVENT.NAME} 故障持续时间: {EVENT.DURATION} 故障主机: {HOST.NAME} 故障级别: {EVENT.SEVERITY} 故障ID: {EVENT.ID} {TRIGGER.URL}
|
5、设置用户组和用户
5.1 创建用户组
针对不同的告警,发送至不同的用户组。



5.2 创建用户


设置用户的告警媒介

用户配置权限

查看新增用户

5.3 赋予用户组相关主机群组的权限





6、设置告警动作






条件解释:
基于模版:当指定某个监控模板时,该模板所设定的全部触发器触发时,都会发送告警信息;
基于主机:当指定某个主机时,该主机的所设定的全部触发器触发时,都会发送告警信息;
基于触发器:当指定某个触发器时,该触发器触发时,才会发送告警信息;
基于主机群组:当指定某个主机群组时,该主机群组所有的模板中的触发器所设定的全部触发器触发时,都会发送告警;

zabbix 6.0结合企业微信进行告警
1、注册企业微信
略
2、创建群组机器人



3、web界面配置


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| var Wechat = { token: null, to: null, message: null, parse_mode: null,
sendMessage: function() { var params = { msgtype: "markdown", chat_id: Wechat.to, markdown: { content:Wechat.message }, disable_web_page_preview: true, disable_notification: false }, data, response, request = new CurlHttpRequest(), url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=5043aed8-f801-4410-b4d3-82ac4e214883';
if (Wechat.parse_mode !== null) { params['parse_mode'] = Wechat.parse_mode; }
request.AddHeader('Content-Type: application/json'); data = JSON.stringify(params);
Zabbix.Log(4, '[Wechat Webhook] URL: ' + url.replace(Wechat.token, '<TOKEN>')); Zabbix.Log(4, '[Wechat Webhook] params: ' + data); response = request.Post(url, data); Zabbix.Log(4, '[Wechat Webhook] HTTP code: ' + request.Status()); Zabbix.Log(4, '[Wechat Webhook] response: ' + response);
try { response = JSON.parse(response); } catch (error) { response = null; Zabbix.Log(4, '[Wechat Webhook] response parse error'); }
if (request.Status() !== 200 || response.errcode !== 0 || response.errmsg !== 'ok') { if (typeof response.errmsg === 'string') { throw response.errmsg; } else { throw 'Unknown error. Check debug log for more information.' } } } }
try { var params = JSON.parse(value);
if (typeof params.Token === 'undefined') { throw 'Incorrect value is given for parameter "Token": parameter is missing'; }
Wechat.token = params.Token;
if (['Markdown', 'HTML', 'MarkdownV2'].indexOf(params.ParseMode) !== -1) { Wechat.parse_mode = params.ParseMode; }
Wechat.to = params.To; Wechat.message = params.Subject + '\n' + params.Message; Wechat.sendMessage();
return 'OK'; } catch (error) { Zabbix.Log(4, '[Wechat Webhook] notification failed: ' + error); throw 'Sending failed: ' + error + '.'; }
|
注意修改其中的Key值

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| 主题:【监控告警】主机: <font color="warning">{HOST.NAME}</font> IP地址:<font color="warning">{HOST.IP}</font> 消息: >主机名称:**<font color="comment">{HOST.NAME}</font>** >主机IP:<font color="comment">{HOST.IP}</font> >告警时间:<font color="comment">{EVENT.DATE}-{EVENT.TIME}</font> >问题名称:<font color="warning">{EVENT.NAME}</font> >问题详情:<font color="comment">{ITEM.NAME}:{ITEM.VALUE}</font> >目前状态:<font color="comment">{TRIGGER.STATUS}</font> >操作数据:<font color="comment">{EVENT.OPDATA}</font>
主题:
消息: >主机名称:**<font color="comment">{HOST.NAME}</font>** >主机IP:<font color="comment">{HOST.IP}</font> >告警时间:<font color="comment">{EVENT.DATE}-{EVENT.TIME}</font> >问题名称:<font color="warning">{EVENT.NAME}</font> >问题详情:<font color="comment">{ITEM.NAME}:{ITEM.VALUE}</font> >目前状态:<font color="comment">{TRIGGER.STATUS}</font> >操作数据:<font color="comment">{EVENT.OPDATA}</font>
|
4、报警媒介测试




5、用户配置


6、动作配置



7、测试微信告警
1 2
| [root@web-01 zabbix_agent2.d]
|


zabbix 6.0 结合飞书进行告警
1、操作步骤
1.1 webhook介绍
飞书中的自定义机器人Webhook地址用于接收和响应群组中的消息。
在飞书平台中,创建群组并添加自定义机器人后,会得到一个webhook地址。这个地址是一个HTTP接口,它的主要作用如下:
消息推送:当你需要将外部系统的信息自动推送到飞书群组时,可以通过调用这个webhook地址来实现。例如,你可以使用它来发送天气预报、日程提醒或者工作状态更新等信息。
自动化流程:结合其他工具或服务,webhook可以实现工作流程的自动化。例如,当某个任务在外部系统中完成时,通过webhook通知群组成员,实现任务的自动跟进和管理。
集成第三方服务:通过webhook地址,可以将飞书群组与其他第三方服务(如GitHub、Jira等)集成,使得群组成为各种信息交流和协作的中心。
总的来说,自定义机器人的webhook地址是实现飞书群组智能自动化功能的关键,它允许用户根据自己的需求定制机器人的行为,从而提高工作效率和群组互动的质量。
2、飞书相关操作





设置机器人名称、描述,复制保存生成的webhook地址。


1
| https://open.feishu.cn/open-apis/bot/v2/hook/2e9b42ff-6977-4bbd-80b1-cd796787fb5c
|
3、创建飞书脚本文件
登录zabbix服务器,进入到/usr/lib/zabbix/alertscripts/目录,新建feishu.py文件。
1
| [root@zabbix-server01 ~]
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| import requests import json import sys import os import datetime
url = "https://open.feishu.cn/open-apis/bot/v2/hook/2e9b42ff-6977-4bbd-80b1-cd796787fb5c"
def send_message(message): payload_message = { "msg_type": "text", "content": { "text": message } } headers = { 'Content-Type': 'application/json' }
response = requests.request("POST", url, headers=headers, data=json.dumps(payload_message)) return response
if __name__ == '__main__': text = sys.argv[1] send_message(text)
|
1 2 3 4 5
| [root@zabbix-server01 ~] [root@zabbix-server01 ~]
[root@zabbix-server01 ~]
|
4、zabbix web配置报警媒介


配置Message template


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
异常通知: {EVENT.NAME}
告警主机:{HOSTNAME1} 告警时间:{EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息:{EVENT.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}
------------------------------------------------------------
恢复通知: {EVENT.NAME}
告警主机:{HOSTNAME1} 告警时间:{EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息:{EVENT.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}
|




5、创建用户群组和用户
详细请见zabbix 6.0 结合邮箱告警用户组和用户创建
6、触发器动作创建




7、测试飞书告警


1 2
| $ systemctl start nginx
|
