#go #prometheus #metrics
#Вперед #prometheus #метрики
Вопрос:
Я предоставил стандартные и некоторые пользовательские метрики из своего приложения Go. Я могу просматривать метрики в браузере как :
# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
# TYPE go_memstats_alloc_bytes gauge
go_memstats_alloc_bytes ***********
Я хочу иметь доступ к этим метрикам, возможно, запрашивать их из кода моего приложения.
Я изучал пакет client_golang от prometheus и HTTP API prometheus, но не смог найти обходной путь.
Как этого можно достичь?
Комментарии:
1. Когда вы говорите, что использовали HTTP API, вы запрашивали клиента (т. Е.
localhost
Или сервер Prometheus, который собирает метрики? Вам нужно будет вызвать API на сервере. Если вы не хотите выполнять внешний вызов, вы можете установить сервер локально, очистить его от localhost и вызвать API на локально размещенном сервере. Или просто вызовите конечную точку в своем коде и выполните синтаксическийgo_memstats_alloc_bytes
анализ .
Ответ №1:
Если вы хотите получить доступ к информации о памяти вашего запущенного приложения из этого приложения, рассмотрите возможность ссылки на время выполнения.ReadMemStats.
var m runtime.MemStats
runtime.ReadMemStats(amp;m)
// reference m.HeapAlloc or m.TotalAlloc, etc.
Обратите внимание, что текущая реализация «останавливает мир», поэтому может быть слишком дорогой для внутреннего цикла.