ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【记录一个问题】alert manager要怎么样才能触发告警到企业微信上?

2022-07-15 17:01:49  阅读:283  来源: 互联网

标签:alertmanager http 微信 webhook alert manager 节点


作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!


花了几个小时仍然是没走通这个流程,把中间结果记录一下。

1.部署了alert manager

部署的架构主要参考这篇文章:Alertmanager高可用
架构图如下:

为了方便prometheus访问alert manager,在alert manager前面还部署了CLB,可以通过VIP访问alert manager集群。
配置的细节如下:

  • --cluster.advertise-address="${POD_IP}:9094": 这个配置是告诉alertmanager它自己的地址是多少,便于gossip协议广播时排除自己。
  • --cluster.peer这个参数填写群集中的其他alertmanager的地址。
    • 一般第一个启动的节点不填这个参数,第二个启动的节点填第一个节点的ip:port,其他节点陆续链上去就行了。
    • 多个容器启动的时候是同时进行的,为了保障其中有一个节点一定是其他所有节点之前启动起来,我用了etctctl lock来保障启动顺序:如何用etcdctl产生分布式环境中的递增ID
    • 最终,gossip协议让所有节点都知道其他的所有节点的存在。
  • alertmanager.yaml配置文件中:
    • 配置webhook来进行告警的投递
    • webhook的链接可以点开任意微信群,然后加个机器人,就得到了链接。
  • 也可以使用amtool命令行工具来查询这些信息:
# 安装amtool
go install github.com/prometheus/alertmanager/cmd/amtool@latest

# 查看服务器端配置
amtool --alertmanager.url=http://9.220.xxx.xxx/ config show

# 查看群集状态
amtool --alertmanager.url=http://9.220.xxx.xxx/ cluster show

2.模拟告警

可以用命令行工具模拟告警:

curl -X POST "http://9.220.xxx.xxx/api/v2/alerts" -H "Content-type: application/json" -d '[{"status": "firing","labels": {"alertname": "name","service": "my-service","severity":"warning","instance": "name.example.net"},"annotations": {"summary": "High latency is high!"},"generatorURL": "http://prometheus.int.example.net/<generating_expression>"}]' -v

打开alert manager的页面,可以看见有这条告警。

3.alertmanager发给webhook的数据是什么格式?

这篇帖子里面有例子:prometheus+alertmanager+webhook实现自定义监控报警系统

json格式如下:

{
    "receiver":"webhook",
    "status":"resolved",
    "alerts":[
        {
            "status":"resolved",
            "labels":{
                "alertname":"hostCpuUsageAlert",
                "instance":"192.168.199.24:9100",
                "severity":"page"
            },
            "annotations":{
                "description":"192.168.199.24:9100 CPU 使用率超过 85% (当前值为: 0.9973333333333395)",
                "summary":"机器 192.168.199.24:9100 CPU 使用率过高"
            },
            "startsAt":"2020-02-29T19:45:21.799548092+08:00",
            "endsAt":"2020-02-29T19:49:21.799548092+08:00",
            "generatorURL":"http://localhost.localdomain:9090/graph?g0.expr=sum+by%28instance%29+%28avg+without%28cpu%29+%28irate%28node_cpu_seconds_total%7Bmode%21%3D%22idle%22%7D%5B5m%5D%29%29%29+%3E+0.85&g0.tab=1",
            "fingerprint":"368e9616d542ab48"
        }
    ],
    "groupLabels":{
        "alertname":"hostCpuUsageAlert"
    },
    "commonLabels":{
        "alertname":"hostCpuUsageAlert",
        "instance":"192.168.199.24:9100",
        "severity":"page"
    },
    "commonAnnotations":{
        "description":"192.168.199.24:9100 CPU 使用率超过 85% (当前值为: 0.9973333333333395)",
        "summary":"机器 192.168.199.24:9100 CPU 使用率过高"
    },
    "externalURL":"http://localhost.localdomain:9093",
    "version":"4",
    "groupKey":"{}:{alertname="hostCpuUsageAlert"}"
}
//版权声明:本文为CSDN博主「昵称2021」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
//原文链接:https://blog.csdn.net/bluuusea/article/details/104619235

然而,企业微信的webhook收的可不是这个格式:消息类型及数据格式

{
    "chatid": "wrkSFfCgAAtMQKg4xqDatM5C9IDHFpTw|@all_subscriber|zhangsan",
	"post_id" : "bpkSFfCgAAWeiHNo2p6lJbG3_F2xxxxx",
	"visible_to_user": "zhangsan|lisi",
    "msgtype": "text",
    "text": {
        "content": "<@zhangsan>广州今日天气:29度,大部分多云,降雨概率:60%",
		"mentioned_list":["wangqing","@all"],
		"mentioned_mobile_list":["13800001111","@all"]
    }
}

很明显,直接把webhook地址配置到alertmanager肯定是发布出去的

4.注册企业微信的开发者

alertmanager里面有很多wechat的配置:

5.使用开源组件来把alert manager webhook 转换为 wechat webhook

还真有,地址在:https://github.com/k8stech/alertmanager-wechatrobot-webhook
后面部署起来试试能不能把alert manager和企业微信串起来。

标签:alertmanager,http,微信,webhook,alert,manager,节点
来源: https://www.cnblogs.com/ahfuzhang/p/16481907.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有