基于飞书WebHook机器人的Alert Manager报警实现

这篇具有很好参考价值的文章主要介绍了基于飞书WebHook机器人的Alert Manager报警实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

飞书,字节跳动旗下一站式企业协作平台,将即时沟通、智能日历、音视频会议、OKR、云文档、云盘和工作台深度整合,通过开放兼容的平台,集成第三方工具于工作台,让成员在一处即可实现高效的沟通和流畅的协作,全方位提升企业效率,为企业提供安全保障。

告警模板详解

默认情况下Alertmanager使用了系统自带的默认通知模板,模板源码可以从Github获得。Alertmanager的通知模板基于Go的模板系统。Alertmanager也支持用户定义和使用自己的模板,一般来说有两种方式可以选择。
第一种,基于模板字符串
用户可以直接在Alertmanager的配置文件中使用模板字符串,例如:

receivers:
- name: 'slack-notifications'
  slack_configs:
  - channel: '#alerts'
    text: 'https://internal.myorg.net/wiki/alerts/{{ .GroupLabels.app }}/{{ .GroupLabels.alertname }}'

第二种方式,自定义可复用的模板文件
例如,可以创建自定义模板文件custom-template.tmpl,如下所示:

{{ define "slack.myorg.text" }}https://internal.myorg.net/wiki/alerts/{{ .GroupLabels.app }}/{{ .GroupLabels.alertname }}{{ end}}

通过在Alertmanager的全局设置中定义templates配置来指定自定义模板的访问路径:

# 从中读取自定义通知模板定义的文件。
# The last component may use a wildcard matcher, e.g. 'templates/*.tmpl'.
templates:
  [ - <filepath> ... ]

设置了自定义模板的访问路径后,用户则可以直接在配置中使用该模板:

receivers:
- name: 'slack-notifications'
  slack_configs:
  - channel: '#alerts'
    text: '{{ template "slack.myorg.text" . }}'

templates:
- '/etc/alertmanager/templates/myorg.tmpl'

1. 使用

别忘了在群组里面创建机器人呦~
▷ 若选择应用到所有告警,则发送到 Cloud Alert 的所有告警均通过该协作策略通知给所有人;
▷ 若不选择,则可以通过在 分派策略 中自定义配置哪些告警通过该协作策略通知。

docker run -d --name prom-alert-feishu -p 9094:8080 --restart=always \
-e FEISHU_TOKEN=xxxx \
javafamily/prometheus-webhook-feishu:2.3.2-SNAPSHOT

其中 FEISHU_TOKEN 环境变量为可选参数, 为飞书 webhook 最后一部分,即 https://open.feishu.cn/open-apis/bot/v2/hook/${FEISHU_TOKEN}
☑ 如果只对一个飞书群通知,可以添加该环境变量即可;
☑ 如果需要对多个飞书群通知, 需要在 Prometheus 报警 rule 的 annotations中通过指定 token 参数为不同飞书群通知;

2. API

通知的内容通过 Prometheus 的报警规则配置 annotations/template 指定,template 支持 ${xxx} 占位, XXX 取自 annotations/xxx 配置。也可以通过 annotations/content 直接指定,不做任何处理直接展示。《需注意飞书通知如果是关键字通知的话,通知内容中需要包含关键字!》
文本通知

${basePath}/alert/text			
	文本通知只需要指定 template 或者 content定义模板内容即可

POST 通知

${basePath}/alert/post
	飞书的 POST 通知可以指定标题(titleTemplate/title), 通知内容(template/content), 按钮文本(btn), 按钮链接(link)

Card 通知

${basePath}/alert/card
	飞书的 Card 通知可以指定标题(titleTemplate/title), 通知内容(template/content), 按钮文本(btn), 按钮链接(link)

3. 配置报警 Rule

相关的规则设置定义在一个group下。在每一个group中我们可以定义多个告警规则(rule)

groups:
  # 组名。报警规则组名称
- name: 内存预警
  rules:
  - alert: 内存使用率预警
    # expr:基于PromQL表达式告警触发条件,用于计算是否有时间序列满足该条件。
    expr: (node_memory_MemTotal_bytes - (node_memory_MemFree_bytes+node_memory_Buffers_bytes+node_memory_Cached_bytes )) / node_memory_MemTotal_bytes * 100 > 98
    # for:评估等待时间,可选参数。用于表示只有当触发条件持续一段时间后才发送告警。在等待期间新产生告警的状态为pending。
    for: 1m # for语句会使 Prometheus 服务等待指定的时间, 然后执行查询表达式。(for 表示告警持续的时长,若持续时长小于该时间就不发给alertmanager了,大于该时间再发。for的值不要小于prometheus中的scrape_interval,例如scrape_interval为30s,for为15s,如果触发告警规则,则再经过for时长后也一定会告警,这是因为最新的度量指标还没有拉取,在15s时仍会用原来值进行计算。另外,要注意的是只有在第一次触发告警时才会等待(for)时长。)
    # labels:自定义标签,允许用户指定要附加到告警上的一组附加标签。
    labels:
      # severity: 指定告警级别。有三种等级,分别为 warning, critical 和 emergency 。严重等级依次递增。
      severity: critical
    # annotations: 附加信息,比如用于描述告警详细信息的文字等,annotations的内容在告警产生时会一同作为参数发送到Alertmanager。
    annotations:
      title: "内存使用率预警"
      serviceName: "{{ $labels.serviceName }}"
      instance: "{{ $labels.instance }}"
      value: "{{ $value }}"
      btn: "点击查看详情 :嘻嘻:"
      link: "http://127.0.0.1/grafana/d/aka/duo-job-ji-cheng-fu-wu-qi-jian-kong"
      # 通过 template 指定通知内容模板
      template: "**${serviceName}**(${instance}) 内存使用率已经超过阈值 **98%**, 请及时处理!\n当前值: ${value}%"
      # 【可选】通过 token 指定通知到不同飞书群
      token: "{{ $labels.feishuToken }}"

- name: 磁盘预警
  rules:
  - alert: 磁盘使用率预警
    expr: (node_filesystem_size_bytes - node_filesystem_avail_bytes) / node_filesystem_size_bytes * 100 > 90
    for: 1m
    labels:
      severity: critical
    annotations:
      title: "磁盘使用率预警"
      serviceName: "{{ $labels.serviceName }}"
      instance: "{{ $labels.instance }}"
      mountpoint: "{{ $labels.mountpoint }}"
      value: "{{ $value }}"
      btn: "点击查看详情 :玫瑰:"
      link: "http://127.0.0.1/grafana/d/aka/duo-job-ji-cheng-fu-wu-qi-jian-kong"
      template: "**${serviceName}**(${instance}) 服务器磁盘设备使用率超过 **90%**, 请及时处理!\n挂载点: ${mountpoint}\n当前值: ${value}%!"
      token: "{{ $labels.feishuToken }}"

- name: 实例存活报警
  rules:
  - alert: 实例存活报警
    expr: up == 0
    for: 30s
    labels:
      severity: emergency
    annotations:
      title: "节点宕机报警"
      serviceName: "{{ $labels.serviceName }}"
      instance: "{{ $labels.instance }}"
      btn: "点击查看详情 :玫瑰:"
      link: "http://127.0.0.1:9090/targets"
      template: "节点 **${serviceName}**(${instance}) 断联, 请及时处理!"
      token: "{{ $labels.feishuToken }}"

There is no won’t do, only don’t want to do.文章来源地址https://www.toymoban.com/news/detail-518395.html

到了这里,关于基于飞书WebHook机器人的Alert Manager报警实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java项目中利用飞书自定义机器人Webhook向飞书群推送告警通知

    今天来看一下如何在Java项目中利用飞书的自定义机器人Webhook向飞书群推送告警通知         企业存在给 特定群组 自动推送消息的需求,比如:监控报警推送、销售线索推送、运营内容推送等。        你可以在群聊中添加一个 自定义机器人 ,通过服务端调用  webh

    2023年04月14日
    浏览(75)
  • 【WeLink群消息机器人webhook介绍】

    WeLink群消息机器人webhook介绍 一、背景:如何理解bot和webhook? 机器人(bot)是一种新型的应用形态,新的协同方式对话即服务,在应用中典型形态即为bot,用户在聊天界面跟一个机器人的虚拟账号,通过对话的方式,实现跟后端系统的交互,如主动发送消息给机器人,机器人

    2024年01月21日
    浏览(27)
  • python 飞书 机器人

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/e4758957286342999266a4ed01e19d59.png

    2024年01月23日
    浏览(42)
  • php对接飞书机器人

    有同事接到对接飞书机器人任务,开发中遇到响应错误: 意思应该就是签名错误或者时间戳不在有效范围内等,官方文档解释: 时间戳是取的实时的,也确认过了没问题,那基本确认就是签名错误了。 按照文档尝试调试了一下还是一样的结果,如果把后台安全设置那个签名

    2024年02月07日
    浏览(29)
  • Alertmanager实现企业微信机器人webhook告警

    由于企业微信更新问题,现在已经无法直接使用创建应用后在alertmanager的配置文件中定义企业id及secret就可以发送告警信息了,除非填写备案后域名;为了我们这种个人开发者非常的不便,所以本文档是为了解决想使用企业微信告警但又无法备案的朋友;下面只是我的操作过

    2024年04月28日
    浏览(25)
  • 飞书ChatGPT机器人 – 打造智能问答助手

    在飞书中创建chatGPT机器人并且对话,在下面操作步骤中,使用到了Git克隆项目,需提前安装好Git,克隆的项目是Go语言项目,所以需提前安装Go语言环境。 Git Go1.20 首次注册飞书,我们可以创建个人账号 进入后 我们创建一个飞书 企业自建项目 然后设置机器人名称和描述,下面

    2024年02月16日
    浏览(70)
  • zabbix对接飞书机器人告警

    一、zabbix后台配置 1. 创建报警媒介类型 2. 导入脚本 目录在/usr/lib/zabbix/alertscripts/feishu.py 二、安装python3.8 1. 安装依赖项: 2. 下载Python 3.8: 3. 解压文件并进入目录: 4. 配置: 5. 编译并安装: 6. 验证安装: 如果输出结果为Python 3.8.0,则表示安装成功。 注意:安装过程可能需

    2024年02月05日
    浏览(33)
  • 飞书自定义机器人消息接入指南

    操作流程 第一步 邀请自定义机器人入群:进入你的目标群组,打开 会话设置 ,找到 群机器人 ,并点击 添加机器人 ,选择 自定义机器人 加入群聊。 为机器人输入一个合适的名字和描述,也可以为机器人设置一个合适的头像,然后点击下一步。 第二部:配置 webhook 获取该

    2024年03月18日
    浏览(127)
  • 飞书机器人小助手@特定人

    文档接口: https://open.feishu.cn/document/ukTMukTMukTM/ucTM5YjL3ETO24yNxkjN 创建机器人小助手   消息推送测试 获取艾特人 open_id @特定人请求

    2024年02月16日
    浏览(92)
  • 飞书接入机器人NODE开发自动回复

    1.登录飞书开放平台 进入开发者后台 创建自建应用 2.添加应用能力 选择机器人添加 3.添加事件订阅并根据权限开通权限  此处只添加获取消息事件 4.配置应用服务端地址(当事件触发 会触发设置的地址 并发送事件数据)开启Encrypt Key 实现回调数据加密 接收到数据后 通过开

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包