SMS-оповещение на мобильный телефон через Prometheus Alertmanager

#linux #yaml #prometheus #prometheus-alertmanager

#linux #yaml #prometheus #prometheus-alertmanager

Вопрос:

Мы настроили Prometheus в нашей среде с помощью Node_exporter. Мы используем AlertManager для отправки сообщений электронной почты нашей команде. Мы можем получить электронное письмо.

Мы также пытаемся настроить SMS в AlertManager так, чтобы мы получали оповещение на наш мобильный телефон, если какие-либо службы не работают и устраняются.

Может кто-нибудь подсказать, как выполнить настройку в Alertmanager для SMS API? У нас есть наш внутренний SMS API, и нам нужно интегрироваться с AlertManager, чтобы получать оповещения на наш номер мобильного телефона.

Файл конфигурации AlertManager

 global:
  resolve_timeout: 1m
  slack_api_url: 'https://hooks.slack.com/services/T01xxxxxxGD/B018ZXXXXXXXXF/Pwxe0xxxxxxxxxxxhiq'
  pagerduty_url: 'https://events.pagerduty.com/v2/enqueue'
route:
  receiver: 'smtp-local'
  routes:
    - match:
        severity: critical,warning
      receiver: 'slack-notifications'
      continue: true
    - match:
        severity: critical,warning
      receiver: 'web.hook'
      continue: true
    - match:
        severity: critical,warning
      receiver: 'pagerduty-notifications'
      continue: true
    - match:
        severity: critical,warning
      receiver: 'smtp-local'
      continue: true      
receivers:
  - name: 'smtp-local'
    email_configs:
    - to: 'xxx@xxx.com'
      from: 'xxx@xxx.com'
      smarthost: localhost:25
      require_tls: false
      send_resolved: true
  - name: 'slack-notifications'
    slack_configs:
    - channel: '#monitoring'
      send_resolved: true
      icon_url: https://avatars3.githubusercontent.com/u/3380462
      title: |-
        [{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .CommonLabels.alertname }} for {{ .CommonLabels.job }}
        {{- if gt (len .CommonLabels) (len .GroupLabels) -}}
          {{" "}}(
          {{- with .CommonLabels.Remove .GroupLabels.Names }}
            {{- range $index, $label := .SortedPairs -}}
              {{ if $index }}, {{ end }}
              {{- $label.Name }}="{{ $label.Value -}}"
            {{- end }}
          {{- end -}}
          )
        {{- end }}
      text: >-
        {{ range .Alerts -}}
        *Alert:* {{ .Annotations.title }}{{ if .Labels.severity }} - `{{ .Labels.severity }}`{{ end }}
      
        *Description:* {{ .Annotations.description }}
      
        *Details:*
          {{ range .Labels.SortedPairs }}  *{{ .Name }}:* `{{ .Value }}`
          {{ end }}
        {{ end }}
  - name: 'web.hook'
    webhook_configs:
    - url: 'http://xxxxxxx:xxxx/xxxx?msisdn=xxxxamp;text=xxxxx.'
  - name: 'pagerduty-notifications'
    pagerduty_configs:
    - service_key: 3a560cxxxxxxxxxxxxxxxx7c198
      send_resolved: true
 

Ответ №1:

IIUC вы можете настроить приемник Webhook на отправку JSON, представляющего оповещение, на конечную точку, которая либо напрямую, либо, что более вероятно, через прокси, к вашему SMS API. Посмотрите примеры по ссылке, чтобы увидеть, как это было достигнуто для других сервисов.

У вас есть конфигурация PagerDuty. Не могли бы вы (также) попросить PagerDuty отправлять вам SMS-уведомления?

Комментарии:

1. спасибо, это было просто, и у меня это сработало: webhook_configs: - url: 'http://10.xx.xx.xx:8082/kundirun'