Alertmanager

Prometheus говорит, что сломалось. Nerve помогает решить, что делать дальше.

Оставьте Alertmanager для routing, grouping, silences и inhibition. Nerve используйте для encrypted phone signal и подтвержденных runbook actions.

Архитектура

Alertmanager должен оставаться источником alert truth. Nerve не заменяет labels, silences, grouping или resolved notifications. Интеграционная точка не прямой Nerve webhook: Alertmanager отправляет JSON в ваш локальный receiver/bridge, а bridge форматирует короткий текст и вызывает nerve send. Так e2e-модель сохраняется: шифрование происходит на вашей стороне до Nerve relay.

Маршрутизируйте только page-worthy alerts

В примере ниже 127.0.0.1:8099 — это не публичный API Nerve. Это маленький сервис рядом с Alertmanager или внутри вашей private network. Если bridge работает на другом host, используйте внутренний HTTPS URL, доступный Alertmanager.

route:
  receiver: default
  routes:
    - matchers:
        - severity="critical"
      receiver: nerve-phone

receivers:
  - name: nerve-phone
    webhook_configs:
      - url: http://127.0.0.1:8099/alertmanager
        send_resolved: true

Где происходит e2e encryption

Alertmanager сам не шифрует payload для Nerve. Bridge получает Alertmanager webhook, выбрасывает лишние labels, собирает короткое сообщение и запускает echo "$TEXT" | nerve send с NERVE_DSN из своего environment. Nerve relay видит только encrypted envelope и delivery metadata.

Action mapping

Не привязывайте каждый alert к исправлению. Маппинг нужен только для стабильных, хорошо понятных сигналов, где runbook уже проверен.

InstanceDownRead-only status, journal tail, cloud console link. Обычно не auto-restart.
ApiErrorRateHighDiagnostics, current deploy SHA, иногда restart одного stateless service.
DiskWillFillSoonTop directories, inode usage, возможно очистка только documented cache path.

Payload для телефона

[{{ .Status }}] {{ .CommonLabels.alertname }}
severity={{ .CommonLabels.severity }}
instance={{ .CommonLabels.instance }}
runbook={{ .CommonAnnotations.runbook_url }}

Когда action не нужен

Не добавляйте remediation button к неизвестным симптомам, security alerts, риску потери данных или массовому отказу сразу многих сервисов. Хорошее действие уменьшает рутину, но не прячет incident от человека.

Audit fields

Для каждого подтвержденного действия пишите Alertmanager fingerprint, action name, target host, pipe, approver identity, start time, exit code и короткий output. Это сильно помогает при postmortem.

Тестовый alert перед production

Перед включением боевого receiver отправьте synthetic alert с отдельным label вроде env=staging. Так можно проверить шаблон сообщения, resolved notification и ссылку на runbook без шума в production escalation.

Checklist безопасного remediation

Похожие страницы