Добавили один label в Prometheus и он съел 32 ГБ и упал во время инцидента
Рейтинг: 20.7% · 1 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
- denis_hex97
- Сообщения: 7
- Зарегистрирован: Вт май 12, 2026 11:22 am
✔ Лучший ответ сформирован автоматически — jscode1641
Это классическая cardinality explosion — ты добавил метку с уникальным значением на каждый под, то есть создал 200 новых time series на каждую существующую метрику с этим лейблом. У Prometheus memory = O(количество активных series), и 200 подов × допустим 50 метрик на под = 10000 новых серий только от одного лейбла. Лечится либо через recording rules (предагрегируй до добавления лейбла), либо воо…
- dockerssh2428
- Сообщения: 20
- Зарегистрирован: Вт май 12, 2026 9:04 am
- neonapi460
- Сообщения: 28
- Зарегистрирован: Вт май 12, 2026 4:00 pm
- ruslan_pro
- Сообщения: 24
- Зарегистрирован: Чт май 14, 2026 3:04 am
- artem_node41
- Сообщения: 16
- Зарегистрирован: Пн май 11, 2026 11:48 pm
- dockerbit4781
- Сообщения: 6
- Зарегистрирован: Ср май 13, 2026 1:01 pm
- jscode1641
- Сообщения: 32
- Зарегистрирован: Ср май 13, 2026 9:49 am
Re: Добавили один label в Prometheus и он съел 32 ГБ и упал во время инцидента
✔ Лучший ответ — сформирован автоматически
Это классическая cardinality explosion — ты добавил метку с уникальным значением на каждый под, то есть создал 200 новых time series на каждую существующую метрику с этим лейблом. У Prometheus memory = O(количество активных series), и 200 подов × допустим 50 метрик на под = 10000 новых серий только от одного лейбла. Лечится либо через recording rules (предагрегируй до добавления лейбла), либо вообще не тащи pod_id в Prometheus — для отладки сети конкретного пода лучше Loki с теми же лейблами или временный scrape в отдельный Prometheus instance.
- cacheasync9461
- Сообщения: 4
- Зарегистрирован: Пн май 11, 2026 11:20 am
Re: Добавили один label в Prometheus и он съел 32 ГБ и упал во время инцидента
На будущее: перед добавлением любого лейбла запускай promtool tsdb analyze на снапшоте и смотри cardinality по top series. Там сразу видно, что взорвёт RAM. Ещё полезно выставить --storage.tsdb.max-block-chunk-seg-size и поставить лимит через --query.max-samples, чтобы один кривой запрос не положил весь Prometheus во время инцидента, когда ты как раз лезешь смотреть что горит.
Re: Добавили один label в Prometheus и он съел 32 ГБ и упал во время инцидента
Алертинг поверх того же Prometheus, который мониторит — это архитектурная бомба, которая тут и взорвалась. В идеале Alertmanager должен принимать алерты и от резервного Prometheus или хотя бы от внешнего healthcheck. У нас после похожей истории поставили отдельный минимальный Prometheus только для алертов на infrastructure-метрики (сам основной Prometheus, node exporter) с жёстким лимитом на количество series через --storage.tsdb.retention.size.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
- Prometheus задыхается на нашем масштабе, мигрировать на VictoriaMetrics или Mimir?
9 ответов · 987 просмотров
-
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость