Запрос в PromQL может выглядеть просто, но скрывать подводные камни. Например, он должен возвращать сведения об использовании памяти пода, но выдает ошибку.
container_memory_working_set_bytes{pod="agency-dashboard-api-89b7f557c-xd4l7"}
Вот какие ошибки есть в этом запросе.
🔹 Дубликаты временных рядов. Если в запросе не учтены все метки, Prometheus может вернуть несколько значений вместо одного. Например, один и тот же под может быть измерен разными заданиями мониторинга. Решение — уточнять фильтрацию, добавляя ключевые метки.
🔹 Неверная агрегация. Попытка исправить дубли суммированием и усреднением (sum() by (pod) / 2) не решает проблему, а запутывает данные. Прежде чем агрегировать, стоит разобраться, почему появились дубликаты.
🔹 Pause-контейнеры. В Kubernetes у каждого пода есть вспомогательный контейнер Pause. Если запрос не фильтрует его, метрики будут включать лишние значения. Добавляем условие container!="" — и дубликаты исчезают.
Мы разобрали ошибки на конкретном примере, но эти же принципы можно использовать и в других запросах.
#DevOps #Kubernetes
@digitize_IT — мнения и управленческий опыт ИТ-лидеров