我有 Grafana 向 Slack 发出警报,现在我想添加其他注释:
traces
以显示在警报中。由于某种原因,它没有显示在警报中,但我可以在 UI 的 Grafana 警报中看到这个新注释。
我的 Grafana Slack 模板:
{{ define "alert_severity_prefix_emoji" -}}
{{- if ne .Status "firing" -}}
:white_check_mark:
{{- else if eq .CommonLabels.severity "critical" -}}
:red_circle:
{{- else if eq .CommonLabels.severity "warning" -}}
:warning:
{{- end -}}
{{- end -}}
{{ define "slack.title" -}}
{{ template "alert_severity_prefix_emoji" . }}
[{{- .Status | toUpper -}}{{- if eq .Status "firing" }} x {{ .Alerts.Firing | len -}}{{- end }}]: {{ .CommonLabels.alertname -}}
{{- end -}}
{{- define "slack.text" -}}
{{- range .Alerts -}}
{{ if gt (len .Annotations ) 0 }}
*Description*: {{ .Annotations.description }}
*Instance*:
{{ range .Labels.SortedPairs }}{{ if or (eq .Name "env") (eq .Name "instance") (eq .Name "cluster") (eq .Name "http_host")}}• {{ .Name }}: `{{ .Value }}`
{{ end }}{{ end }}
*Silence alert*: {{ .SilenceURL }}
*Go to dashboard*: {{ .DashboardURL }}
*Go to panel directly*: {{ .PanelURL }}
*Go to traces*: {{ .Annotations.traces }}
{{ end }}
{{ end }}
{{ end }}
在警报规则中我有:
resource "grafana_rule_group" "prometheus_metrics_rule_group" {
name = "Prometheus metrics"
folder_uid = grafana_folder.prometheus_rule_folder.uid
interval_seconds = 300
org_id = 1
rule {
name = "5xx HTTP server side errors"
for = "2m"
condition = "B"
no_data_state = "OK"
exec_err_state = "Alerting"
annotations = {
__dashboardUid__ = grafana_dashboard.prometheus_http_errors.uid
__panelId__ = "1"
"description" = "{{ with $values }} 5xx server side HTTP errors have exceeded 10% of all requests within the last 10 minutes {{ end }}"
"traces" = "{{ graphLink \"{\"expr\": \"up\", \"datasource\": \"Tempo\"}\" }}"
出于测试目的,我尝试将“traces”注释设置为“test”字符串,但没有成功。我在这里做错了什么?
因此,在我的反复试验中,我发现替换/移动:
*Go to traces*: {{ .Annotations.traces }}
与:
*Silence alert*: {{ .SilenceURL }}
有效,现在我可以在 Slack 警报消息中看到它。我怀疑单个 Slack 消息中存在某种字符限制,但事实并非如此。我想说这是一个错误,除非有另一种解释。