global: resolve_timeout: 5m smtp_smarthost: '{{ smtp_host }}:{{ smtp_port }}' smtp_from: '{{ smtp_from }}' smtp_require_tls: false route: group_by: ['alertname', 'instance', 'severity'] group_wait: 30s group_interval: 5m repeat_interval: 4h receiver: 'email' routes: - match: severity: critical receiver: 'email-critical' continue: true - match: severity: warning receiver: 'email-warning' continue: true - match: severity: info receiver: 'email-info' repeat_interval: 24h inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname', 'instance'] receivers: - name: 'email-critical' email_configs: - to: 'hostmaster+critical@ouranos.helu.ca' send_resolved: true html: true headers: Subject: '🚨 [CRITICAL] {{ "{{" }} .GroupLabels.alertname {{ "}}" }}' text: |- {{ "{{" }} range .Alerts {{ "}}" }} {{ "{{" }} .Annotations.description {{ "}}" }} Instance: {{ "{{" }} .Labels.instance {{ "}}" }} {{ "{{" }} end {{ "}}" }} - name: 'email-warning' email_configs: - to: 'hostmaster+warning@ouranos.helu.ca' send_resolved: true html: true headers: Subject: '⚠️ [WARNING] {{ "{{" }} .GroupLabels.alertname {{ "}}" }}' text: |- {{ "{{" }} range .Alerts {{ "}}" }} {{ "{{" }} .Annotations.description {{ "}}" }} Instance: {{ "{{" }} .Labels.instance {{ "}}" }} {{ "{{" }} end {{ "}}" }} - name: 'email-info' email_configs: - to: 'hostmaster+info@ouranos.helu.ca' send_resolved: false html: true headers: Subject: '{{ "{{" }} .GroupLabels.alertname {{ "}}" }}' text: '{{ "{{" }} range .Alerts {{ "}}" }}{{ "{{" }} .Annotations.description {{ "}}" }}{{ "{{" }} end {{ "}}" }}' - name: 'email' email_configs: - to: 'hostmaster+alerts@ouranos.helu.ca' send_resolved: true html: true headers: Subject: '[{{ "{{" }} .GroupLabels.severity | default "ALERT" {{ "}}" }}] {{ "{{" }} .GroupLabels.alertname {{ "}}" }}' text: |- {{ "{{" }} range .Alerts {{ "}}" }} {{ "{{" }} .Annotations.description {{ "}}" }} Instance: {{ "{{" }} .Labels.instance {{ "}}" }} Severity: {{ "{{" }} .Labels.severity {{ "}}" }} {{ "{{" }} end {{ "}}" }} # --- Pushover receivers (disabled for smtp4dev testing) --- # To re-enable: uncomment these receivers and update the route receiver names # from email-*/email back to pushover-*/pushover # # - name: 'pushover-critical' # pushover_configs: # - user_key: '{{ pushover_user_key }}' # token: '{{ pushover_api_token }}' # send_resolved: true # html: true # priority: '2' # retry: 30 # expire: 3600 # title: '🚨 [CRITICAL] {{ "{{" }} .GroupLabels.alertname {{ "}}" }}' # message: |- # {{ "{{" }} range .Alerts {{ "}}" }} # {{ "{{" }} .Annotations.description {{ "}}" }} # Instance: {{ "{{" }} .Labels.instance {{ "}}" }} # {{ "{{" }} end {{ "}}" }} # # - name: 'pushover-warning' # pushover_configs: # - user_key: '{{ pushover_user_key }}' # token: '{{ pushover_api_token }}' # send_resolved: true # html: true # priority: '1' # retry: 30 # expire: 3600 # title: '⚠️ [WARNING] {{ "{{" }} .GroupLabels.alertname {{ "}}" }}' # message: |- # {{ "{{" }} range .Alerts {{ "}}" }} # {{ "{{" }} .Annotations.description {{ "}}" }} # Instance: {{ "{{" }} .Labels.instance {{ "}}" }} # {{ "{{" }} end {{ "}}" }} # # - name: 'pushover-info' # pushover_configs: # - user_key: '{{ pushover_user_key }}' # token: '{{ pushover_api_token }}' # send_resolved: false # html: true # priority: '0' # title: '{{ "{{" }} .GroupLabels.alertname {{ "}}" }}' # message: '{{ "{{" }} range .Alerts {{ "}}" }}{{ "{{" }} .Annotations.description {{ "}}" }}{{ "{{" }} end {{ "}}" }}' # # - name: 'pushover' # pushover_configs: # - user_key: '{{ pushover_user_key }}' # token: '{{ pushover_api_token }}' # send_resolved: true # html: true # priority: '1' # retry: 30 # expire: 3600 # title: '[{{ "{{" }} .GroupLabels.severity | default "ALERT" {{ "}}" }}] {{ "{{" }} .GroupLabels.alertname {{ "}}" }}' # message: |- # {{ "{{" }} range .Alerts {{ "}}" }} # {{ "{{" }} .Annotations.description {{ "}}" }} # Instance: {{ "{{" }} .Labels.instance {{ "}}" }} # Severity: {{ "{{" }} .Labels.severity {{ "}}" }} # {{ "{{" }} end {{ "}}" }}