Чтобы ответить на ваши вопросы, есть справочный текст, предоставляемый с каждой выставленной метрикой в формате экспозиции Прометея:
# 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"})