Prometheus Alert Manager通知至Microsoft Teams的指南
1. 项目介绍
Prometheus-msteams 是一个轻量级的 Go 语言编写的 Web 服务器,它能够接收来自 Prometheus Alert Manager 的 POST 请求,并将这些警报消息发送到一个 Microsoft Teams 频道中。这个项目通过使用一个 incoming webhook URL 来实现 Prometheus Alert Manager 与 Microsoft Teams 的集成。
2. 项目快速启动
以下是快速启动 Prometheus-msteams 的步骤:
使用 Docker 启动
运行以下命令,使用 Docker 容器启动 Prometheus-msteams:
docker run -d -p 2000:2000 \
--name="promteams" \
-e TEAMS_INCOMING_WEBHOOK_URL="https://example.webhook.office.com/webhookb2/xxx" \
-e TEAMS_REQUEST_URI="alertmanager" \
quay.io/prometheusmsteams/prometheus-msteams
确保替换 https://example.webhook.office.com/webhookb2/xxx
为你的 Microsoft Teams incoming webhook URL。
使用二进制启动
- 下载对应平台的 Prometheus-msteams 二进制文件和默认的卡片模板文件。
- 在与
default-message-card.tmpl
模板文件相同的目录中运行二进制文件:
./prometheus-msteams -teams-request-uri alertmanager \
-teams-incoming-webhook-url "https://example.webhook.office.com/webhookb2/xxx"
同样,请替换 webhook URL。
Kubernetes 集群部署
如果需要在 Kubernetes 集群中部署 Prometheus-msteams,请查阅官方的 Kubernetes 部署指南。
3. 应用案例和最佳实践
模拟 Prometheus 警报到 Teams 频道
创建一个名为 prom-alert.json
的文件,并填入以下 JSON 数据:
{
"version": "4",
"groupKey": "{}:{alertname=\"high_memory_load\"}",
"status": "firing",
"receiver": "teams_proxy",
"groupLabels": {
"alertname": "high_memory_load"
},
"commonLabels": {
"alertname": "high_memory_load",
"monitor": "master",
"severity": "warning"
},
"commonAnnotations": {
"summary": "Server High Memory usage"
},
"externalURL": "http://docker.for.mac.host.internal:9093",
"alerts": [
{
"labels": {
"alertname": "high_memory_load",
"instance": "10.80.40.11:9100",
"job": "docker_nodes",
"monitor": "master",
"severity": "warning"
},
"annotations": {
"description": "10.80.40.11 reported high memory usage with 23.28%.",
"summary": "Server High Memory usage"
},
"startsAt": "2018-03-07T06:33:21.873077559-05:00",
"endsAt": "0001-01-01T00:00:00Z"
}
]
}
然后使用 curl
发送此文件到 Prometheus-msteams 服务:
curl -X POST -d @prom-alert.json http://localhost:2000/alertmanager
此时,Microsoft Teams 频道应该会接收到一条消息。
发送警报到多个 Teams 频道
Prometheus-msteams 可以配置为服务于多个请求路径,每个路径都可以使用不同的 Teams 频道 webhook URL 来发送警报。
创建配置文件
创建一个 YAML 文件,格式如下:
connectors:
- high_priority_channel: "https://example.webhook.office.com/webhookb2/xxxx/aaa/bbb"
- low_priority_channel: "https://example.webhook.office.com/webhookb2/xxxx/aaa/ccc"
在运行 Docker 容器时,将配置文件挂载到容器内部,并设置 CONFIG_FILE
环境变量。
或者在运行二进制文件时,使用 -config-file
标志。
4. 典型生态项目
Prometheus-msteams 作为 Prometheus 生态系统的一部分,通常与其他开源项目一同使用,例如:
- Prometheus: 用于收集和存储指标的监控系统。
- Grafana: 用于可视化 Prometheus 数据的仪表板工具。
- Alertmanager: Prometheus 的警报管理器,用于处理和路由警报。
结合这些工具,可以实现强大的监控和警报系统。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考