我有这样的普罗米修斯警报:
- alert: NginxCrashLoop
annotations:
description: Nginx at {{ $labels.pod }} is in Crash Loop
identifier: '{{ $labels.node }}'
runbook_url: https://sites.google.com/a/domain.com/bi/faq/nginx
expr: |
rate(kube_pod_container_status_restarts_total{container="frontend"}[2m]) * on(namespace, pod) group_left(node) kube_pod_info * 3600 > 3
labels:
severity: critical
和一个用于 Slack 自定义警报的 Go 模板:
{{ define "__single_message_title" }}{{ range .Alerts.Firing }}{{ .Labels.alertname }} at {{ .Annotations.identifier }}{{ end }}{{ range .Alerts.Resolved }}{{ .Labels.alertname }} at {{ .Annotations.identifier }}{{ end }}{{ end }}
{{ define "custom_title" }}[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ if or (and (eq (len .Alerts.Firing) 1) (eq (len .Alerts.Resolved) 0)) (and (eq (len .Alerts.Firing) 0) (eq (len .Alerts.Resolved) 1)) }}{{ template "__single_message_title" . }}{{ end }}{{ end }}
{{ define "faqURL" }}{{ range .Alerts.Firing }}{{ .Annotations.runbook_url }}
{{ end }}{{ end }}
{{ define "custom_slack_message" }}
{{ if or (and (eq (len .Alerts.Firing) 1) (eq (len .Alerts.Resolved) 0)) (and (eq (len .Alerts.Firing) 0) (eq (len .Alerts.Resolved) 1)) }}
{{ range .Alerts.Firing }}{{ .Annotations.description }}{{ end }}{{ range .Alerts.Resolved }}{{ .Annotations.description }}{{ end }}
{{ else }}
{{ if gt (len .Alerts.Firing) 0 }}
*Alerts Firing:*
{{ range .Alerts.Firing }}- {{ .Annotations.identifier }}: {{ .Annotations.description }}: <{{ template "faqURL" . }}|Quick FAQ>
{{ end }}{{ end }}
{{ if gt (len .Alerts.Resolved) 0 }}
*Alerts Resolved:*
{{ range .Alerts.Resolved }}- {{ .Annotations.identifier }}: {{ .Annotations.description }}
{{ end }}{{ end }}
{{ end }}
{{ end }}
我希望它能够向我发送一个常见问题解答文档的链接以缓解问题,在描述之后显示。但是,松弛消息仍然不包含链接。我究竟做错了什么?