我们有一个多租户Kubernetes集群,并使用Prometheus Alertmanager通过松弛将警报发送给那些租户。
所以我们有包含以下内容的配置:
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,但似乎所有示例的松弛通道名称都有简单的固定名称