Kubernetes-алерты

Уведомления о падении подов Kubernetes на телефон.

Crash, OOMKill, failed rollout — зашифрованный push на телефон из одной команды в shell. Без дашбордов и email-дайджестов.

Зачем Nerve для Kubernetes

Типичный мониторинг-стек для K8s — это Prometheus + Alertmanager + Grafana + PagerDuty. Nerve решает более узкую задачу: отправить зашифрованный push на телефон, когда под упал, из одной строки в shell или CronJob.

DSN, который вы храните в кластере, умеет только отправлять сигналы в один pipe. Если он утечёт — старые алерты не будут раскрыты.

Отслеживание failed-подов через kubectl

kubectl get events --field-selector reason=Failed --watch-only \
  -o custom-columns=MSG:.message --no-headers \
  | while read -r line; do echo "$line" | nerve send; done

CronJob: проверка подов каждые 5 минут

apiVersion: batch/v1
kind: CronJob
metadata:
  name: nerve-pod-check
spec:
  schedule: "*/5 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: check
            image: bitnami/kubectl:latest
            env:
            - name: NERVE_DSN
              valueFrom:
                secretKeyRef:
                  name: nerve-credentials
                  key: dsn
            command:
            - /bin/sh
            - -c
            - |
              CRASHED=$(kubectl get pods --all-namespaces \
                --field-selector=status.phase=Failed -o name)
              if [ -n "$CRASHED" ]; then
                echo "crashed pods: $CRASHED" | nerve send --severity critical
              fi
          restartPolicy: Never

DSN как Kubernetes Secret

kubectl create secret generic nerve-credentials \
  --from-literal=dsn="nerve://TOKEN:[email protected]"

OOMKill-алерты

OOMKilled-контейнеры часто рестартятся тихо. Поймайте их до каскадного падения.

kubectl get events --field-selector reason=OOMKilling --watch-only \
  -o custom-columns=MSG:.message --no-headers \
  | while read -r line; do echo "OOMKill: $line" | nerve send --severity critical; done

FAQ

Nerve заменяет PagerDuty для Kubernetes?

Нет. Nerve — это не платформа управления инцидентами, а лёгкий зашифрованный push-канал для уведомлений о падении подов, OOMKill и failed deployment.

Как отправить K8s-алерт в Nerve?

Используйте kubectl или CronJob для отслеживания failed-подов и передайте вывод в nerve send. DSN хранится как Kubernetes Secret.

Алерты зашифрованы?

Да. Payload шифруется до отправки на relay. Sender DSN не может читать историю и выполнять команды.