apiVersion: monitoring.coreos.com/v1alpha1 kind: AlertmanagerConfig metadata: name: platform-alertmanager namespace: observability labels: observability.hyeonworks.com/instance: home spec: route: receiver: platform-slack groupBy: - cluster - namespace - alertname - severity groupWait: 30s groupInterval: 5m repeatInterval: 4h routes: - receiver: platform-null matchers: - name: alertname matchType: "=" value: InfoInhibitor inhibitRules: - sourceMatch: - name: alertname matchType: "=" value: InfoInhibitor targetMatch: - name: severity matchType: "=" value: info equal: - namespace receivers: - name: platform-null - name: platform-slack slackConfigs: - apiURL: name: alertmanager-slack-webhook key: url sendResolved: true linkNames: false mrkdwnIn: - text - fields fallback: >- {{ if eq .Status "firing" }}FIRING{{ else }}RESOLVED{{ end }}: {{ if .CommonLabels.severity }}{{ .CommonLabels.severity | toUpper }}{{ else }}UNKNOWN{{ end }} · {{ .CommonLabels.alertname }} title: >- {{ if eq .Status "firing" }}[FIRING:{{ .Alerts.Firing | len }}]{{ else }}[RESOLVED]{{ end }} {{ if .CommonLabels.severity }}{{ .CommonLabels.severity | toUpper }}{{ else }}UNKNOWN{{ end }} · {{ .CommonLabels.alertname }} titleLink: https://grafana.learn.hyeonworks.com/ color: >- {{ if eq .Status "resolved" }}good{{ else if or (eq .CommonLabels.severity "emergency") (eq .CommonLabels.severity "critical") }}danger{{ else if eq .CommonLabels.severity "warning" }}warning{{ else }}#439FE0{{ end }} fields: - title: Status value: '{{ .Status | toUpper }}' short: true - title: Severity value: '{{ if .CommonLabels.severity }}{{ .CommonLabels.severity | toUpper }}{{ else }}UNKNOWN{{ end }}' short: true - title: Location value: '{{ if .CommonLabels.cluster }}{{ .CommonLabels.cluster }}{{ else }}unknown-cluster{{ end }} / {{ if .CommonLabels.namespace }}{{ .CommonLabels.namespace }}{{ else }}cluster-scoped{{ end }}' short: true - title: Alert count value: '{{ len .Alerts }}' short: true text: |- {{ range .Alerts }} *Alert status:* {{ .Status | toUpper }} *Target:* {{ $target := .Labels.Remove $.GroupLabels.Names }}{{ if $target }}{{ range $target.SortedPairs }}{{ .Name }}={{ .Value }} {{ end }}{{ else }}unknown{{ end }} *Summary:* {{ with .Annotations.summary }}{{ . }}{{ else }}No summary provided{{ end }} *Details:* {{ with .Annotations.description }}{{ . }}{{ else }}No description provided{{ end }} *Started:* {{ .StartsAt.Format "2006-01-02T15:04:05Z07:00" }} {{ if eq .Status "resolved" }}*Ended:* {{ .EndsAt.Format "2006-01-02T15:04:05Z07:00" }}{{ end }} {{ with .Annotations.runbook_url }}*Runbook:* <{{ . }}|대응 절차 열기>{{ end }} {{ end }} · footer: hyeonworks observability · Alertmanager