TGViewer
Make. Build. Break. Reflect. Make. Build. Break. Reflect. @makebreakreflect · 1.37K subscribers
Post #220 1.09K
#troubleshooting #alertmanager

Заметка для самых маленьких.

Прилетает алерт "KubernetesStatefulsetDown".
Брр, ну ок, смотрю что не так.
А, понял! Судя по названию приложения statefulset, это же наш новый тестовый неймспейс test-project.
Там сейчас на пару месяцев будут тесты, нам не нужны эти алерты.
Можно добавить и сайленс, но сайленс работает лишь до первого рестарта алертменеджера и не хранит стейт.
Хочу полностью отключить все алерты на этом неймспейсе.

Иду в алертменеджер, добавляю рут в начале типа
      routes:
...
- receiver: 'null'
matchers:
- namespace = "test-project"
continue: false
....
тут дальше остальные руты на нормальные ресиверы

Применяю, всё ок.
Проходит час - снова этот же алёрт.

Может опечатка? Может конфиг поломанный?
Смотрим что у нас в логах vmalert/alertmanager.
kubectl logs vmalert-podname
...
... Rules reloaded successfully from ... yaml
...

Да не, время совпадает - применилось недавно мной.

Ладно. Идём в git к алёрту, смотрим что там у него в expr.
expr: kube_statefulset_replicas != kube_statefulset_status_replicas_ready > 0

Ну всё эээ понятно. Всё просто. Никаких вопросов.
Пока ковырялся, пришёл ещё алерт, такой же.

Не понял, иду в https://prometheus.io/webtools/alerting/routing-tree-editor/
Копирую туда часть конфига алертменеджера с рутами.
Дальше проверяю на namespace {namespace="test-project").
Матчинг, идёт в null, как и должно.

Бред, возвращаюсь в git к алерту.
Копирую expr
kube_statefulset_replicas != kube_statefulset_status_replicas_ready > 0

иду в prometheus/VM/grafana explore, вставляю:
Да, вижу респонс метрики с лейблами.
kube_statefulset_replicas
{
container="kube-state-metrics",
endpoint="http",
instance="10.0.115.164:8080",
job="kube-state-metrics",
namespace="test-project",
pod="kube-state-metrics-6794d79b55-sf879",
service="kube-state-metrics",
statefulset="fake-app"
}

Хм, всё есть - лейбл namespace и он не пустой.
По второй метрике так же есть лейбл namespace.
Но ведь магии не бывает (ну кроме тех случаях, когда руководство постоянно забывает про наши просьбы поднять зарплату, там точно магия поработала, не иначе)

В третий раз, словно старик закидывает невод в море, иду к алёртам. Теперь смотрю всё и сразу.
- alert: KubernetesStatefulsetDown
expr: kube_statefulset_replicas != kube_statefulset_status_replicas_ready > 0
for: 1m
labels:
...
severity: critical
namespace: '{{ $labels.namespac }}'
statefulset: '{{ $labels.statefulset }}'
...
annotations:
summary: ...

Сразу же видна причина, можно было бы и раньше увидеть🤡.

Зачем-то, скорее всего копипастой, был добавлен лейбл неймспейса. Дубль. С опечаткой в названии.
Лейбла namespac у нас нет в метрике, а значит пустым значением от namespac перетирается значение namespace.
В итоге до алёртменеджера алёрт приходил с пустым значением namespace и все рулсы рутов игнорировались(ведь нет матчинга).
Я такие случаи называю "broken downstream-routing".

Поиском поискал ещё опечатки, нашёл ещё три шутки, поправил(конкретно в этом алерте я просто удалил, он совсем тут не нужен), проверил в ВМ и отправил MR.
Наступила тишина в слак канале и можно попить кофе.☕️
.
..
...
....
А не, хер мне, а не отдых.
Теперь при верном неймспейсе заработали другие три алерта и прилетела новая проблема, ранее не замеченная из-за кривого лейбла. И это уже прод.
Эх, ну значит потом кофе попью😭.
Поехали чинить..
  • ❤ 14
  • 😁 13
More from @makebreakreflect
  1. Sep 25, 2026#пятница Ждём, чо. А вообще да, заебали эти охринительно полезные новости с невероятными д…
  2. Sep 25, 2026#kubernetes - https://laravel-news.com/laravel-health-kubernetes-prometheus Жаль, что тако…
  3. Sep 24, 2026Но стоит взять задачу из смежной области, где общее понимание есть, а глубокой экспертизы…
  4. Sep 23, 2026В удивительнейшее время живём. - https://typesafe.ai/blog/introducing-system-one-models-an…
  5. Sep 22, 2026#aws #elasticache #redis #kubernetes #troubleshooting #devops #sre #longread Ничего не пре…
  6. Sep 18, 2026Вся эта неделя была очень странной. Опус отупел до уровня 3 модели. Фейбл сжигает токены б…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →