юмор
March 22, 2022
"Нейронка" для определения ответственного за сервис
Недавно в одном из разговоров я упоминал, что на Prometheus-based стеке смог каждый алерт ассоциировать с командой, которая обслуживает сервис и в случае критических событий эта самая команда меншенится в Slack, чтобы привлечь её внимание. Что ж, показываю как это выглядит в реальности.
Суровая реальность такова – заводится вот такая вот структура (крутите по горизонтали, там 500+ символов):
owner_team: - &owner_team_by_labels_exported_namespace | {{if (match "finance" $labels.exported_namespace)}}finance_duty{{else if (match "storage|warehouse" $labels.exported_namespace)}}warehouse_duty{{else if (match "sso" $labels.exported_namespace)}}sso_duty{{else if (match "crm|bff-self-service-form|bff-offers" $labels.exported_namespace)}}crm_duty{{else if (match "loyalty-bonus" $labels.exported_namespace)}}finance_duty{{else if (match "loyalty" $labels.exported_namespace)}}crm_duty{{else if (match "communications-gateway|sms-sender|contractor-app-bff" $labels.exported_namespace)}}infogate_duty{{else}}-{{end -}}
В массиве, на самом деле, множество записей, чтобы определять команду по тому или иному признаку. После этого в лейблы алерта добавляем признак команды:
owner_team: *owner_team_by_labels_exported_namespace
В конфигурации ресивера включаем линк по именам:
slack_configs: - channel: "#alerts" link_names: true
В качестве шаблона футера определяем следующее:
{{ define "slack.default.footer" }}{{ if .CommonLabels.owner_team }}{{ if not (eq .CommonLabels.owner_team "-") }}Команда: @{{ .CommonLabels.owner_team }}{{ end }}{{ end }}{{ end }}