二、zabbix基础3-通知(告警)

文章目录

  • 3. 通知(告警)
    • 3.1 什么是事件通知
    • 3.2 如何实现事件通知
    • 3.3 配置邮件通知方式
      • 3. 3.1 定义媒介(发件人)
      • 3.3.2 配置动作(发送给谁)
      • 3.3.3 配置媒介(收件人)
      • 3.3.4 测试邮件告警
    • 3.4 基于微信通知方式
      • 3.4.1 编写脚本
      • 3.4.2 定义媒介(发件人)
      • 3.4.3 配置动作(发送给谁)![在这里插入图片描述](https://img-blog.csdnimg.cn/83b962bf39ca4830aef0b36c1a6bef40.png)
      • 3.4.4 配置媒介(收件人)
      • 3.4.5 测试微信告警
  • 4.通知升级
    • 4.1 通知升级的作用
    • 4.2 通知升级示例
      • 4.2.1 通知升级示例1
      • 4.2.2 通知升级示例2
      • 4.2.3 通知升级示例3
      • 4.2.4 通知升级示例4
    • 4.3 事件通知升级实践
      • 4.3.1 创建用户及用户组
      • 4.3.2 配置通知升级动作
      • 4.3.3 测试升级结果

3. 通知(告警)

3.1 什么是事件通知

首先,我们不希望一直盯着触发器或者事件列表。最好是在发生比较严重的事情(如问题)的时候能够接收到通知。并且,当发生问题时,我们希望所有相关人员都能收到通知。
也就是说,当配置的监控超过触发器设定的阈值则触发动作,这个动作可以是(发送消息|执行命令)

3.2 如何实现事件通知

为了能够实现发送和接受zabbix的通知,则必须:

  • 定义媒介:(发件人)
  • 配置动作:使用媒介(用户发送信息→收件人)向已定义的媒介发送消息

动作由“触发器条件”和操作组成。总的来说,当条件满足时,则执行相应的操作。

3.3 配置邮件通知方式

3. 3.1 定义媒介(发件人)

点击管理→报警媒介类型,设定发送消息的介质email、定制Zabbix报警的内容
二、zabbix基础3-通知(告警)_第1张图片
二、zabbix基础3-通知(告警)_第2张图片
二、zabbix基础3-通知(告警)_第3张图片

# 告警
告警主机:{HOST.NAME1}
告警服务: {ITEM.NAME1}
告警Key1: {ITEM.KEY1}:{ITEM.VALUE1}
告警Key2: {ITEM.KEY2}:{ITEM.VALUE2}
严重级别: {TRIGGER.SEVERITY}

# 恢复
恢复主机:{HOST.NAME1}
恢复服务: {ITEM.NAME1}
恢复Key1:{ITEM.KEY1}:{ITEM.VALUE1}
恢复Key2: {ITEM.KEY2}:{ITEM.VALUE2}

3.3.2 配置动作(发送给谁)

配置→动作→创建动作,以及对应的操作:

1.创建动作
二、zabbix基础3-通知(告警)_第4张图片
2.点击操作,选择接受的用户
二、zabbix基础3-通知(告警)_第5张图片
3.配置故障告警内容,恢复告警内容
二、zabbix基础3-通知(告警)_第6张图片

3.3.3 配置媒介(收件人)

二、zabbix基础3-通知(告警)_第7张图片

3.3.4 测试邮件告警

模拟恢复故障,收到告警邮件
在这里插入图片描述
通过,报表→动作日志,可以查看报警内容
二、zabbix基础3-通知(告警)_第8张图片

3.4 基于微信通知方式

3.4.1 编写脚本

下载脚本,并赋予对应的执行权限

[root@zabbix-server ]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix-server alertscripts]# vim weixin.py
#!/usr/bin/env python3
#-*- coding: utf-8 -*-
#comment: zabbix接入微信报警脚本

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'),
                filemode = 'a')


corpid='ww8cff74fbad8af888'
appsecret='eleCzxftc11NP9zPmdeIklhNg2ZiplJsUS2S8ELq8yT'
agentid=1000004
#获取accesstoken
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]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]

params={
        "touser": touser,
#       "toparty": toparty,
        "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)
[root@zabbix-server alertscripts]# chmod +x weixin.py 

安装脚本环境依赖

[root@zabbix-server alertscripts]# yum install python3 python3-devel python3-pip -y
完毕!
[root@zabbix-server alertscripts]# pip3 install requests

修改脚本如下内容:

corpid='企业ID'
appsecret='自定义app的secret'
'eleCzxftc11NP9zPmdeIklhNg2ZiplJsUS2S8ELq9Uc'
agentid=自定义应用的agentid

执行脚本,参数1:用户微信,参数2:消息主体,参数3:消息内容

[root@zabbix-server alertscripts]# ./weixin.py MaHuTeng  主题  "设备无故障,只是测试发送信息"

#切记一定要删除,否知会导致权限问题
[root@zabbix-server alertscripts]# rm -f /tmp/weixin.log

二、zabbix基础3-通知(告警)_第9张图片

执行结果:
二、zabbix基础3-通知(告警)_第10张图片

3.4.2 定义媒介(发件人)

管理→报警媒介类型,设定发送消息的介质-微信,然后设定发送内容;
二、zabbix基础3-通知(告警)_第11张图片
定义告警及恢复内容
二、zabbix基础3-通知(告警)_第12张图片

{ALERT.SENDTO} #发送的用户
{ALERT.SUBJECT} #发送的主题
{ALERT.MESSAGE} #发送的内容
# 告警
告警主机:{HOST.NAME1}
告警服务: {ITEM.NAME1}
告警Key1: {ITEM.KEY1}:{ITEM.VALUE1}
告警Key2: {ITEM.KEY2}:{ITEM.VALUE2}
严重级别: {TRIGGER.SEVERITY}
# 恢复
恢复主机:{HOST.NAME1}
恢复服务: {ITEM.NAME1}
恢复Key1:{ITEM.KEY1}:{ITEM.VALUE1}
恢复Key2: {ITEM.KEY2}:{ITEM.VALUE2}

3.4.3 配置动作(发送给谁)二、zabbix基础3-通知(告警)_第13张图片

二、zabbix基础3-通知(告警)_第14张图片
二、zabbix基础3-通知(告警)_第15张图片

3.4.4 配置媒介(收件人)

配置接受的企业微信号(收件人是企业中微信名称)
二、zabbix基础3-通知(告警)_第16张图片

3.4.5 测试微信告警

二、zabbix基础3-通知(告警)_第17张图片

4.通知升级

4.1 通知升级的作用

  • 用户可以在一定时间内重复收到通知,直到问题解决;
  • 对于已知故障,或者长期存在的故障,可以延迟发送通知消息
  • 对于长期没有解决的故障,可以升级至另一个“更高级别的”用户组,比如leader;
    • 1,2发邮件; ops;
    • 3,4发哟件;leaders

4.2 通知升级示例

4.2.1 通知升级示例1

每30分钟向Mysql Administrators组发送一次重复的通知(共5次)。配置如下:

  • 在操作选项卡中,将Default operation step duration设置为’30m’(即,30分钟)
  • 将升级不走设置为1-5
  • 选择Mysql Administrator组作为消息的接受者

通知将分别在问题发生后的第一时间(0:00)以及30分钟(0:30)、1小时(1:00)、1个半小时(1:30)和2个小时(2:00)发送(当然,除非问题提前解决)
二、zabbix基础3-通知(告警)_第18张图片

4.2.2 通知升级示例2

将问题升级到领导那里
如果监控长时间处于一个报警的状态,可能是没有人去解决也可能是他们无法解决。在这种情况下,将问题升级到经理那里之前,运维人员会收到四条消息。
注意: 只有在问题尚未被确认的情况下(假设没有人处理这个问题),第五条消息经理才会收到。

二、zabbix基础3-通知(告警)_第19张图片

4.2.3 通知升级示例3

本示例展示了一个更为复杂的场景。在向Mysql管理员发送了多个消息后并升级到经理那之后,Zabbix将尝试重启Mysql数据库。如果该问题持续了两个半小时还没的的到确认,就会进行重启操作。
如果问题仍然存在,则再过30分钟,Zabbix将向所有来宾用户发送一条消息。
如果还没有解决,则再过一个小时,Zabbix将使用命令重启Mysql数据库服务器。
二、zabbix基础3-通知(告警)_第20张图片

4.2.4 通知升级示例4

发送一个关于长期存在的问题的延迟通知:

  • 在操作选项卡中,将Default operation step duration设置为10h
  • 将升级步骤设置为从2到2

通知只在升级场景的第二步发送,或者在问题发生10小时后发送
二、zabbix基础3-通知(告警)_第21张图片

4.3 事件通知升级实践

当一个问题如果长时间没有被解决,则将该问题升级到Leader那里

4.3.1 创建用户及用户组

点击管理→用户组,创建ops组,leader组
二、zabbix基础3-通知(告警)_第22张图片
二、zabbix基础3-通知(告警)_第23张图片
二、zabbix基础3-通知(告警)_第24张图片
二、zabbix基础3-通知(告警)_第25张图片
单机管理→用户,创建用户ops1,加入ops组,创建用户boss1加入leader组
二、zabbix基础3-通知(告警)_第26张图片
二、zabbix基础3-通知(告警)_第27张图片

4.3.2 配置通知升级动作

配置→动作,创建邮件通知升级步骤;
二、zabbix基础3-通知(告警)_第28张图片
二、zabbix基础3-通知(告警)_第29张图片
二、zabbix基础3-通知(告警)_第30张图片

请注意{ESC.HISTORY}宏在自定义消息中的使用。该宏将包含关于升级之前操作的所有步骤的信息,例如发送的通知和执行命令。

主题:Problem:{EVENT.NAME}
告警主机:{HOST.NAME1}
告警服务: {ITEM.NAME1}
告警Key1: {ITEM.KEY1}:{ITEM.VALUE1}
告警Key2: {ITEM.KEY2}:{ITEM.VALUE2}
严重级别: {TRIGGER.SEVERITY}
此前步骤:{ESC.HISTORY}

4.3.3 测试升级结果

1)1步是给ops发送消息,立即发送
2)2步是给ops发送消息,2分钟后发送
3)3-4步骤是给leader发送消息,每隔2分钟发送一次,总共2个步骤,所以发送2次
4)5-6步骤是给admin发送消息,每隔2分钟发送一次,,共2个步骤,所以发送2次

你可能感兴趣的:(Zabbix,5.x版本学习,zabbix,前端,服务器)