Прометей, как получить реальное использование памяти Java Garbage Collector?

Плагин Prometheus в приложении Springboot отправляет тонны данных, я не нахожу никакого смысла в том, что я получаю от экспортера:

1) What does "jvm_gc_memory_allocated_bytes_total" mean?
2) What does "jvm_gc_memory_promoted_bytes_total" mean?

Что мне нужно, так это фактическое использование памяти Java Garbage Collector, поэтому я ожидаю, что значение всегда будет ниже 2 ГБ (максимальный объем памяти), но на данный момент составляет 8 ГБ и продолжает расти.

"jvm_gc_memory_allocated_bytes_total"

а также

"jvm_gc_memory_promoted_bytes_total"

являются единственными двумя переменными, связанными с Garbe Collector, поставляемыми экспортером.

1 ответ

Решение

Чтобы ответить на ваши вопросы, есть справочный текст, предоставленный с каждой выставленной метрикой в ​​формате экспозиции Прометея:

# HELP jvm_gc_memory_allocated_bytes_total Incremented for an increase in the size of the young generation memory pool after one GC to before the next

# HELP jvm_gc_memory_promoted_bytes_total Count of positive increases in the size of the old generation memory pool before GC to after GC

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

Исходя из вашего вопроса, я думаю, что вы на самом деле ищете не "использование памяти Java Garbage Collector", а фактически использование управляемой памяти JVM. Эти управляемые части делятся на "кучу" и "не кучу" (area тег) на первом уровне и может быть углублен в id тег.

Вот метрики, которые вы, вероятно, ищете:

jvm_memory_used_bytes{area="heap|nonheap" id="<depends-on-gc-and-jvm>"}
jvm_memory_committed_bytes{area="heap|nonheap" id="<depends-on-gc-and-jvm>"}
jvm_memory_max_bytes{area="heap|nonheap" id="<depends-on-gc-and-jvm>"}

Поэтому, если вы хотите получить доступ к используемой в данный момент куче, вам нужно объединить метрики области кучи со следующим PromQL:

sum(jvm_memory_used_bytes{job="myjob", instance="myhost", area="heap"})
Другие вопросы по тегам