Files
chef/site-cookbooks/kosmos_prometheus/templates/default/alertmanager.yml.erb
T

48 lines
2.4 KiB
Plaintext

global:
resolve_timeout: 5m
route:
<% @route.each do |k, v| %>
<% if k == "routes" && v.is_a?(Array) && !v.empty? %>
routes:
<% v.each do |child| %>
- receiver: <%= child["receiver"] %>
<% child.each do |ck, cv| %>
<% next if ck == "receiver" %>
<%= ck %>: <%= cv.is_a?(Array) ? cv.inspect : cv %>
<% end %>
<% end %>
<% else %>
<%= k %>: <%= v.is_a?(Array) ? v.inspect : v %>
<% end %>
<% end %>
receivers:
<% @receivers.each do |receiver| %>
- name: <%= receiver["name"] %>
<% if receiver["webhook_configs"] %>
<% receiver["webhook_configs"].each do |wc| %>
webhook_configs:
- url: "<%= @webhook_url %>"
send_resolved: <%= wc["send_resolved"] %>
payload:
room: "<%= wc["room"] %>"
message: '{{ if eq .Status "resolved" }}✅{{ else if eq .CommonLabels.severity "warning" }}⚠️{{ else }}🚨{{ end }} {{ if eq .Status "resolved" }}RESOLVED{{ else if .CommonLabels.severity }}{{ .CommonLabels.severity | toUpper }}{{ else }}ALERT{{ end }}: {{ .CommonLabels.alertname }} {{ if eq .Status "resolved" }}({{ len .Alerts }} resolved){{ else if eq (len .Alerts.Firing) (len .Alerts) }}({{ len .Alerts }} firing){{ else }}({{ len .Alerts.Firing }} firing, {{ len .Alerts.Resolved }} resolved){{ end }}{{ range $i, $a := .Alerts }}{{ if lt $i 5 }}{{ "\n" }} - {{ $a.Labels.instance }}{{ if $a.Labels.vm_host }} ({{ $a.Labels.vm_host }}){{ end }}: {{ if eq $a.Status "resolved" }}resolved{{ else }}{{ $a.Annotations.summary }}{{ end }}{{ end }}{{ end }}{{ if gt (len .Alerts) 5 }}{{ "\n" }} ... and more{{ end }}'
<% end %>
<% end %>
<% if receiver["email_configs"] %>
<% receiver["email_configs"].each do |ec| %>
email_configs:
- to: "<%= ec["to"] %>"
from: "<%= ec["from"] %>"
smarthost: "<%= ec["smarthost"] %>"
require_tls: <%= ec["require_tls"] %>
send_resolved: <%= ec["send_resolved"] %>
text: '{{ if eq .Status "resolved" }}RESOLVED{{ else if .CommonLabels.severity }}{{ .CommonLabels.severity | toUpper }}{{ else }}ALERT{{ end }}: {{ .CommonLabels.alertname }} {{ if eq .Status "resolved" }}({{ len .Alerts }} resolved){{ else if eq (len .Alerts.Firing) (len .Alerts) }}({{ len .Alerts }} firing){{ else }}({{ len .Alerts.Firing }} firing, {{ len .Alerts.Resolved }} resolved){{ end }}{{ range .Alerts }}
---{{ range .Labels.SortedPairs }}
{{ .Name }}: {{ .Value }}{{ end }}{{ range .Annotations.SortedPairs }}
{{ .Name }}: {{ .Value }}{{ end }}{{ end }}'
<% end %>
<% end %>
<% end %>