我们有一个多租户 Kubernetes 集群,并使用 Prometheus Alertmanager 通过 slack 向这些租户发送警报。
所以我们的配置包括:
slack_configs:
- send_resolved: true
channel: '{{ printf "topic-svc-%.11s" (index (index .Alerts 0).Labels "namespace") }}'
(%.11s 确保频道名称保持在 21 个字符的限制内)
如果存在松弛通道,则此方法非常有用,但如果通道不存在,则警报最终会出现在以太网中(不利于警报!)。
Alertmanager 日志告诉您的内容非常有限,例如,这是一个没有用户数据的通用错误:
alertmanager-k8s-0 alertmanager level=error ts=2018-11-09T15:01:52.134984182Z caller=dispatch.go:280 component=dispatcher msg="Notify for alerts failed" num_alerts=3 err="cancelling notify retry for \"slack\" due to unrecoverable error: unexpected status code 404"
尝试了各种选项,检查了 StackOverflow,但似乎所有示例都有简单的固定名称用于松弛通道