zabbix微信分组告警(zabbix 微信告警多人接收)

来源网友投稿 1061 2023-02-02

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。
本篇文章给大家谈谈zabbix微信分组告警,以及zabbix 微信告警多人接收对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享zabbix微信分组告警的知识,其中也会对zabbix 微信告警多人接收进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

Zabbix配置企业微信群聊机器人告警

步骤:

[if !supportLists]1、 [endif]在zabbix告警目录新建wxrobot.py脚本

vi /usr/local/zabbix/share/zabbix/alertscripts/wxrobot.py

粘贴以下内容:

#!/usr/bin/python

#-*- coding: utf-8 -*-

import requests

import json

import sys

import os

headers = {'Content-Type': 'application/json;charset=utf-8'}

api_url = "复制群聊机器人Webhook地址到这"
def msg(text):

    json_text= {

     "msgtype": "text",

        "text": {

            "content": text

        },

    }

    print requests.post(api_url,json.dumps(json_text),headers=headers).content
if __name__ == '__main__':

    text = sys.argv[1]

msg(text)
保存退出
需要安装python插件库:pip install requests

授权和更改权限:

chmod +x *.py

chown zabbix:zabbix *.py
2.Zabbix页面配置zabbix微信分组告警,新增告警媒介
配置动作

配置—动作—创建动作 zabbix微信分组告警, 事件源  选择  触发器

1、点击右上角,“ 创建动作  ”填写对应的信息;在 动作 页面填写以下信息,这里例子为以主机内存使用率超过90%为例,

 计算方式:

Aand B,需要同时符合条件里面添加的条件;

条件A:主机群组等于 Linux Servers;

条件B:触发器等于linux模板的物理内存使用率持续3分钟等于90%。

2、切换到 操作

  操作: 也就是在符合动作里面配置好的条件时,做出对应的动作,具体的操作说明,请参考官网指导文档,填写好信息,然后点击 操作细节 里面的 添加
[if !supportLists]1、 [endif]恢复操作配置
到这就触发器告警企业微信群机器人发送配置完成zabbix微信分组告警了,动作日志可以在 

报表 –动作日志  页面查看
附上格式配置,参数说明和其他的格式,请参考  使用宏

操作发送消息内容恢复操作发送消息内容

问题:{EVENT.NAME}

告警信息:{TRIGGER.NAME}

告警地址:{HOST.NAME}

监控项目:{ITEM.NAME}

监控取值:{EVENT.VALUE}

告警严重性:{EVENT.SEVERITY}

当前状态:{EVENT.STATUS}

告警时间:{EVENT.DATE} {EVENT.TIME}

事件ID:{EVENT.ID}

告警信息:{TRIGGER. NAME}

告警地址:{HOST.NAME}

监控项目:{ITEM.NAME}

监控取值:{EVENT.RECOVERY.VALUE}

告警严重性:{EVENT.SEVERITY}

当前状态:{EVENT.RECOVERY.STATUS}

告警时间:{EVENT.DATE} {EVENT.TIME}

恢复时间:{EVENT.RECOVERY.TIME}

持续时间:{EVENT.AGE}

事件ID:{EVENT.RECOVERY.ID}
技术交流欢迎加入Q群:177428068

Zabbix配置企业微信群(机器人)警告

企业微信机器人告警
企业微信群聊里面增加机器人,机器人会提供发送信息的URL

python 脚本进行实现

1、创建企业微信机器人

这个 webhook 后面需要使用到

2、配置 zabbix server

3、zabbix Web 页面配置

默认标题:

恢复操作:

创建动作

4、测试发送告警

zabbix微信 | 微信对接自己服务器(2)

上接使用微信告警

1.本地服务器与微信服务器的信任

2.本地部署微信加密文件
在本地服务器(具有外网ip)部署php+nginx,使其可以在公网访问

3.开启回调模式

zabbix的各种报警机制实战

动作: 指定将报警信息发送给谁/定义报警的信息/定义报警的类型(邮件 微信 电话)
触发器: 设定某个监控项报警的阈值条件,可以实现报警提示(条件表达式),默认页面提示报警

https://www.jianshu.com/p/7d798423ec58

https://www.jianshu.com/p/a6c3a551f2ec

配置 ------ 主机 --- 对应主机的监控项
配置 ---- 主机 ---- 选择相应监控主机触发器 --- 创建触发器
页面正常

把zabbix_agent的nginx停掉

页面出现报错信息

把服务重新启动

报警信息消失

右上角的小人头--- 正在发送消息
配置 --- 动作 --- 将默认动作进行开启
管理 ---- 报警媒介类型 --- 创建媒介类型
点击右上角的小人头
再点击 添加

点击 更新

停掉nginx

三个用户,均已收到

https://work.weixin.qq.com/wework_admin/loginpage_wx?redirect_uri=https://work.weixin.qq.com/wework_admin/frame#profile
点击 成员加入
选择一种加入方式并加入

成员加入后,点击 通讯录 可查看加入的成员
收集相关程序代理id和密钥和企业id

程序代理id: 1000003
程序密钥: nR0WyfP7251_jg6vOSQ4SpTrZlrWS-SVm_2nyrXTf6Y
企业id: ww7a34cccfb9fd932b

在zabbix_server端找到脚本存放路径

编写脚本,填写对应的企业和程序信息

脚本执行语法格式: 帐号 + 主题 +  内容
用户名可以在通讯录找到
出现报错: ImportError: No module named requests ,缺少 requests 模块
报错解决:

再次测试:

成功收到测试信息!

管理 --- 报警媒介类型 -- 创建媒介类型
配置接收微信的人员
点击 小人头 --- 报警媒介 ---- 添加
点击 添加
点击 更新
把zabbix_agent的nginx服务停掉

发现报错
这是临时生成的日志没有写入权限

解决办法:
在zabbix_server端更改日志所主

再次测试

报警成功!

1).利用阿里大鱼(收费)

https://www.aliyun.com/product/sms?spm=a3142.7791109.0.0.34691fd2OVGqAY

2)利用onealert发送报警

https://caweb.aiops.com/#/integrate/monitor

这里我们使用 onealert
配置 --- 新建通知
集成 --- zabbix
​ 2.获取alert agent包

3.安装配置alert

配置 --- 动作
在动作日志查看,发现已送达,但是我们选择的是免费版的,所以收不到邮件.....

Zabbix监控平台如何通过使用微信接口实现

首先,该操作是非常简单的。而且通过微信辅助邮件报警是一个非常好的选择,现在微信这么普及而且免费。短信报警也是非常好的,只不过都是双刃剑,如果晚上出现网络波动发送报警,那么这个是很头疼的,严重影响睡眠。 下边简单说下zabbix实现微信报警的步骤。

1,申请一个微信企业号。
申请的时候可以自己填写一个XXX工作室之类的名字,这个不影响。具体不做详细阐述,可以参考http://wuhf2015.blog.51cto.com/8213008/1688614说明去申请和设置。我这里创建了两个账号,一个manager01和manager02

2,zabbix server端进行shell脚本设置,这里我们操作的是weixin.sh。

/usr/local/zabbix/alertscripts[root@21yunwei alertscripts]# vim weixin.sh #!/bin/bash CropID='XXXXXXXX'Secret='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropIDamp;corpsecret=$Secret"Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $4}') PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken" function body() {        local int AppID=1        local UserID=$1        local PartyID=2        local Msg=$(echo "$@" | cut -d" " -f3-)        printf '{\n'        printf '\t"touser": "'"$UserID"\"",\n"        printf '\t"toparty": "'"$PartyID"\"",\n"        printf '\t"msgtype": "text",\n'        printf '\t"agentid": "'" $AppID "\"",\n"        printf '\t"text": {\n'        printf '\t\t"content": "'"$Msg"\""\n"        printf '\t},\n'        printf '\t"safe":"0"\n'        printf '}\n'}/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL

chmod +x weixin.sh
脚本是否正常,我们可以先自己执行测试。比如执行:
sh weixin.sh manager01 testsub  testcomtent 看下是否微信可以接收到消息,接收到说明成功,如果接受失败,那么设置有问题,需简单之前的步骤是否都操作对了。

3,创建报警媒介、action和设置报警接收
创建报警媒介,这里相信大家都不陌生。我这里创建的情况是:

创建action:报警步骤这里不详细说了,我只是写一点微信报警的内容,其他的都一样。创建action的步骤可以参考《zabbix 如何通过action进行报警配置》

\n报警问题:{TRIGGER.NAME}\n报警主机:{HOSTNAME}\n报警时间:{EVENT.TIME}\n报警状态:{TRIGGER.STATUS}\n报警级别:{TRIGGER.SEVERITY}

加行\n是为了换行。

好了,设置下微信报警接收人员:

保存后测试下效果。
比如我们useradd  -M test123,添加以后就可以收到微信报警了。

2020-08-25

Prometheus 实现邮件告警(Prometheus+Alertmanager+QQ邮箱或者网易163邮箱,目前测试过这两种邮箱都可以发送告警邮件)

Prometheus实现邮件告警原理如下:

Prometheus官方有一个附带的中间件:alertmanager,通过设置rules规则和路由转发可以实现邮件告警,前提是你需要有一个可以发送邮件的邮件服务端(可以自建或者使用互联网公司提供的免费邮箱)

告警原理图
Prometheus完整架构图

我之前得出的错误结论如下:

推荐直接在虚拟机操作系统上直接安装Prometheus和Alertmanager,不推荐其中任何一方在容器中运行,因为测试过在容器中运行Prometheus和alertmanager,结果出现如下错误情况

第一种情况是:我的node-exporter掉线跌机了(手动关机,模拟突然掉线跌机),Prometheus却提示节点依然在线?有时候却能够正常显示节点掉线跌机,生成告警发送邮件

第二种情况是:我的node-exporter掉线跌机了(手动关机,模拟突然掉线跌机),Prometheus提示节点掉线,告警生成,但是没有发送邮件,我手动恢复node-exporter后,告警解除,邮件能正常发送邮件提示告警已经解除。。。。

第三种情况是:我的node-exporter掉线跌机了(手动关机,模拟突然掉线跌机),Prometheus提示节点掉线,告警生成,正常成功发送邮件,我手动恢复node-exporter后,告警解除,邮件没有发送出来。。。。

以上三种情况之前经常出现,当时第一步以为是自己设置的scrape_interval不合理导致的,结果调试几次,问题没有解决,第二步以为是自己的服务器时间没有做到精确同步,然后我去设置和阿里云的ntp服务器同步,结果问题依然没有解决,第三步,换个方向,把alertmanager迁移到虚拟机操作系统上安装运行,问题解决!
北京时间是GMT+8小时,有些同志的时间可能是UTC的,但是如果是在要求不太十分精确的情况下,UTC时间是刚刚好等于GMT时间

为了避免时区的混乱,prometheus所有的组件内部都强制使用Unix时间,对外展示使用GMT时间。

要改时区有两个办法

1 .修改源码,重新编译。
2. 使用 docker 运行 Prometheus,挂载本地时区文件

docker run --restart always -e TZ=Asia/Shanghai --hostname prometheus --name prometheus-server -d -p 9090:9090 -v /data/prometheus/server/data:/prometheus -v /data/prometheus/server/conf/prometheus.yml:/etc/prometheus/prometheus.yml -u root prom/prometheus:v2.5.0

正文开始

安装alertmanager

容器安装方式:

docker run -d --name alertmanager -p 9093:9093 -v /usr/local/Prometheus/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager:latest

先在宿主机/usr/local/Prometheus下创建一个文件夹alertmanager,然后在文件夹里创建alertmanager.yml配置文件,待会才能映射到alertmanager容器里的/etc/alertmanager目录下
global:全局配置

   resolve_timeout: 问题解决的超时时间

   smtp_from: 发送告警邮件的邮箱账号

   smtp_smarthost: 邮箱 SMTP 服务地址,这里是以QQ邮箱为例,也可以用网易163邮箱,这个和我之前设置zabbix邮件告警时的配置一样

   smtp_auth_username: 如果没有设置邮箱别名,那就是账户名

   smtp_auth_password:  邮箱的授权码,不是 账户密码,你可以在QQ邮箱或者网易163邮箱网页端设置,开启 POP3/SMTP 服务时会提示,和配置zabbix邮件告警的时候几乎一样

   smtp_require_tls: 是否使用 tls,根据环境不同,来选择开启和关闭。如果提示报错 email.loginAuth failed: 530 Must issue a STARTTLS command first,那么就需要设置为 true。着重说明一下,如果开启了 tls,提示报错 starttls failed: x509: certificate signed by unknown authority,需要在 email_configs 下配置 insecure_skip_verify: true 来跳过 tls 验证。
templates: 告警模板目录,可以不编写模板,有默认模板

    Subject: '{{ template "email.default.subject" . }}'

    html: '{{ template "email.default.html" . }}'
route:报警的分发设置

    group_by:分组

    group_wait: 分组等待时间

    group_interval: 5m 每组时间间隔

    repeat_interval: 10m 重复间隔

    receiver: 接收方式,请注意!这里的名字要对应下面receivers中的任何一个名字,不然会报错,这里其实就是选择方式,有邮箱,企业微信,wehook,victorops等等
receivers:接受方式汇总,即告警方式汇总

例子:

receivers:

- name:'default-receiver' 

email_configs:

- to:'whiiip@163.com'    

  html: '{{ template "alert.html" . }}'    

  headers: { Subject: "[WARN] 报警邮件test"}
inhibit_rules:   抑制规则

当存在与另一组匹配的警报(源)时,抑制规则将禁用与一组匹配的警报(目标)。

包括源匹配和目标匹配

alertmanager官方是这样说的

Inhibition

Inhibition is a concept of suppressing notifications for certain alerts if certain other alerts are already firing.

Example:  An alert is firing that informs that an entire cluster is not reachable. Alertmanager can be configured to mute all other alerts concerning this cluster if that particular alert is firing. This prevents notifications for hundreds or thousands of firing alerts that are unrelated to the actual issue.

Inhibitions are configured through the Alertmanager's configuration file.

当存在与另一组匹配器匹配的警报(源)时,禁止规则会使与一组匹配器匹配的警报(目标)静音。目标警报和源警报的equal列表中的标签名称都必须具有相同的标签值。

在语义上,缺少标签和带有空值的标签是同一件事。因此,如果equal源警报和目标警报都缺少列出的所有标签名称,则将应用禁止规则。

为了防止警报禁止自身,与规则的目标和源端 都 匹配的警报不能被警报(包括其本身)为真来禁止。但是,我们建议选择目标匹配器和源匹配器,以使警报永远不会同时匹配双方。这很容易进行推理,并且不会触发此特殊情况。

接着是规则rules
不解释了,自己研究官方文档
alertmanager的非容器安装方式是

 wget https://github.com/prometheus/alertmanager/releases/download/v0.20.0/alertmanager-0.20.0.linux-amd64.tar.gz

tar xf alertmanager-0.20.0.linux-amd64.tar.gz
mv alertmanager-0.20.0.linux-amd64 /usr/local/alertmanager
vim /usr/lib/systemd/system/alertmanager.service
[Unit]
Description=alertmanager

Documentation=https://github.com/prometheus/alertmanager

After=network.target

[Service]

Type=simple

User=root

ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml

Restart=on-failure

[Install]

WantedBy=multi-user.target

Alertmanager 安装目录下默认有 alertmanager.yml 配置文件,可以创建新的配置文件,在启动时指定即可。

其余方式和上面一样

接着是Prometheus,我之前的博客里有写了容器安装和非容器安装的方法,自己去翻阅

然后是在prometheus.yml里修改相关配置

首先去掉alertmanager的注释,改成IP加你设置的端口号,默认是9093
接着在rule_files: 下面写下规则文件的绝对路径,可以是具体文件名,也可以是*,也可以分几级文件,*默认是全部匹配
接着是被监控项的设置,这里设置完成可以在Prometheus网页里的targets里看得到

请注意,这里设置的参数名字要和rule规则中设置的参数名字一模一样,否则你的prometheus服务会无法启动,然后报错

如果不在特定的job下设置scrape_interval(优先级高于全局),则默认采用gobal下的scrape_interval
最后模拟节点掉线,手动关闭node-exporter或者Cadvisor

docker stop node-exporter 或者容器ID

docker stop cadvisor 或者容器ID

或者把up{{job='prometheus'}} == 1 设置成1,反向设置,不用关掉服务,就可以看看告警成不成功
说明一下 Prometheus Alert 告警状态有三种状态:Inactive、Pending、Firing。

Inactive:非活动状态,表示正在监控,但是还未有任何警报触发。

Pending:表示这个警报必须被触发。由于警报可以被分组、压抑/抑制或静默/静音,所以等待验证,一旦所有的验证都通过,则将转到 Firing 状态。

Firing:将警报发送到 AlertManager,它将按照配置将警报的发送给所有接收者。一旦警报解除,则将状态转到 Inactive,如此循环。
没有配置告警模板时的默认告警格式是这样的
节点恢复后邮件告知是这样的
写了模板后是这样的
还要重新映射模板文件夹路径到alertmanager容器里的相对路径,然后重启alertmanager,当然,如果目录下没有模板文件,则不显示
告警模板
在alertmanager.yml中修改相关设置

重启alertmanager

docker restart alertmanager

最终效果不是很好

关于zabbix微信分组告警和zabbix 微信告警多人接收的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 zabbix微信分组告警的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于zabbix 微信告警多人接收、zabbix微信分组告警的信息别忘了在本站进行查找喔。
上一篇:zabbix微信告警(zabbix微信告警收不到消息)
下一篇:包含系统性能指标测试工具包的词条
相关文章

 发表评论

暂时没有评论,来抢沙发吧~