Ищете, например, как отслеживать использование памяти контейнера с помощью Prometheus.

Он сообщает обо всех контейнерах в порядке, если мы используем этот запрос:

(container_memory_usage_bytes / container_spec_memory_limit_bytes) * 100 > 90

Однако работает нормально, если для контейнера не определен предел памяти. Делитель равен 0, а результат равен + Inf, что означает, что предупреждение срабатывает неправильно, поскольку + Inf соответствует> 90.

Есть предложения, как правильно использовать мониторинг использования памяти контейнера?

2
user3360847 3 Окт 2020 в 00:06

1 ответ

Лучший ответ

Я задал тот же вопрос с другой точки зрения всего несколькими днями ранее здесь. Пока не нашел ответа. Я решил добавить еще один ярлык has_memory_limit, который я использую для оповещения только о контейнерах, для которых определен лимит.


Хорошо, я разобрался:

((container_memory_usage_bytes / container_spec_memory_limit_bytes) != +Inf)  * 100 > 52

Поскольку положительная бесконечность, отрицательная бесконечность и NaN являются числами в Prometheus, вы можно просто отфильтровать их с помощью != +Inf.

1
trallnag 5 Окт 2020 в 18:31