У нас есть мультитенантный кластер 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, но, похоже, все примеры имеют простое фиксированное имя для слабых каналов