Я хочу отправить уведомление о разрешении, чтобы оно ослабло на основании предупреждения. Поэтому я создал аннотацию («разрешить») для каждого оповещения, которая должна определять, следует ли отправлять разрешенное уведомление.
Вот как выглядят мои оповещения:
- alert: JobsFailing
expr: rate(failed_jobs_submitter{job="my_job"}[10m]) > 0
for: 5m
labels:
severity: slack_critical
service: my_service
annotations:
identifier: 'my_service_jobs_failing'
description: 'Jobs are failing'
resolve: true
Это мой alertmanager.yaml:
global:
resolve_timeout: 5m
slack_api_url: 'https://hooks.slack.com/services/...'
http_config:
proxy_url: 'some_proxy'
templates:
- /etc/config/notifications.tpl
route:
receiver: 'default-receiver'
group_wait: 5s
group_interval: 1m
repeat_interval: 6h
routes:
- receiver: slack_critical
match:
severity: slack_critical
receivers:
- name: default-receiver
- name: slack_critical
slack_configs:
- channel: '#alert_channel'
username: "Alert"
icon_emoji: ":monkey:"
send_resolved: {{ .Annotations.resolve }}
title: '{{ template "custom_title" . }}'
text: '{{ template "custom_slack_message" . }}'
Я попытался использовать строку вместо логического значения для .Annotations.resolve
Я попытался использовать шаблон:
{{ define resolve_alert }}{{ if eq .Annotations.resolve "true"}}{{ else }}{{ if eq .Annotations.resolve "false" }}{{ end }}
и
send_resolved: {{ template resolve_alert . }}
Я пробовал предложения if:
{{ if eq .Annotations.resolve true }}send_resolved: true{{else}}send_resolved: false{{end}}
send_resolved: {{ if or .Annotations.resolve | default false }}
Я ожидаю, что слабая конфигурация подберет значение .Annotations.resolve и отправит разрешенное сообщениепровисать в соответствии со значением, указанным в предупреждении. Что я получаю при использовании .Annotations.resolve:
level=error ts=2019-10-01T09:08:12.284Z caller=coordinator.go:124 component=configuration msg="Loading configuration file failed" file=/etc/config/alertmanager.yml err="yaml: unmarshal errors:\n line 28: cannot unmarshal !!map into bool"
Что я получаю при использовании шаблона:
level=error ts=2019-09-30T14:39:29.294Z caller=coordinator.go:124 component=configuration msg="Loading configuration file failed" file=/etc/config/alertmanager.yml err="yaml: line 27: did not find expected key"
Любой вклад очень ценится ...