TGViewer
Make. Build. Break. Reflect. Make. Build. Break. Reflect. @makebreakreflect · 1.37K subscribers
Post #46 349
#victoriametrics

Итак, кросс-алёртинг.
Название мною выдуманное, я не знаю как такие вещи должны называться, может давно уже другое официальное слово есть.

Допустим у вас есть система мониторинга, трейсинга и алёртинга.
Это может быть kube-prometheus-stack или victoria-metrics-k8s-stack или любой другой стек или оператор.
Она работает в кластере или нескольких.
Оповещает по алёртам ваш Slack/PagerDuty/telegram etc.
Всё работает и всё отлично.
А что делать, если POD с Alertmanager упал? Что делать, если у вас накрылся весь кластер?
Вы ведь даже не узнаете об этом - некому сообщить о том, что всё упало.

Есть готовые реализации, но нам не подошло большинство из-за цены, способа интеграции или недостаточного для меня функционала. А что это значит? Прааааавильно, пишем свой велосипед😅.

У Alertmanager есть механизм, который называется Watchdog.
Этот алёрт горит ВСЕГДА.
То есть "если у алёртменеджера всё хорошо" - значит горит алерт.
Если "если вочдог не горит" - алертменеджер умер/конфиг с ошибкой/недоступен и так далее.
Логика наоборот.

В зависимости от вашей системы обсервабилити и способа установки он может быть включен по умолчанию, но если его нет, то вы его легко можете добавить(пример для VM стека):
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMRule
...
spec:
groups:
...
- name: "alertmanager"
rules:
- alert: Watchdog
expr: vector(1)
for: 5m
labels:
severity: info
annotations:
summary: "This is an Watchdog alert that is always firing."
...

Итак, алёрт у нас есть.
Дальше что?

А дальше идея такая:
- мы пишем новый микросервис, пусть будет на Python, все переменные в хардкоде для удобства этого демо
https://github.com/kruchkov-alexandr/cross-alerting/blob/main/main.py
- пишем докерфайл для запуска в кубах (я вообще не заморачивался с оптимизацией тут)
https://github.com/kruchkov-alexandr/cross-alerting/blob/main/Dockerfile
- деплоим его в ДРУГОЙ/ДРУГИЕ кластера кубернетиса, можно хоть хелм чарт на него написать, если есть желание, у меня сделано через ArgoCD - путь к имаджу и переменные и всё
- в конфиг алертменеджера добавляем новый route и receiver чтобы watchdog alert отправлялся в новый микросервис
route:
...
routes:
##############################################################
# Watchdog #
##############################################################
# DO NOT REMOVE THIS ROUTE!!!
# DO NOT ADD ROUTES ABOVE!!!
- receiver: 'webhook-receiver'
group_wait: 10s
group_interval: 30s
repeat_interval: 30s
matchers:
- alertname = "Watchdog"
continue: true
...
receivers:
...
- name: 'webhook-receiver'
webhook_configs:
- url: 'https://cross-alerting.domain.io/api/alert'
send_resolved: true
....
  • ✍ 3
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 →