Как были настроены метрики? Сервис пушил метрики или их пулили?
Answer from AI
sobes.tech AI
Метрики в сервисах обычно настраиваются двумя основными способами: push и pull.
-
Push-модель: сервисы сами отправляют (push) метрики в систему мониторинга или промежуточный сборщик (например, Prometheus Pushgateway). Это удобно для кратковременных или нестабильных сервисов, которые не могут быть постоянно доступны для опроса.
-
Pull-модель: система мониторинга периодически опрашивает (pull) сервисы по HTTP или другому протоколу, чтобы получить актуальные метрики. Это стандартный подход в Prometheus, где сервисы экспонируют метрики на специальном endpoint (
/metrics).
В моих проектах чаще использовалась pull-модель с Prometheus: сервисы на Go экспонировали метрики через HTTP, а Prometheus регулярно их собирал. Это упрощает архитектуру и снижает нагрузку на сервисы.
Пример экспонирования метрик в Go с использованием библиотеки Prometheus:
import (
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
"net/http"
)
var opsProcessed = prometheus.NewCounter(prometheus.CounterOpts{
Name: "myapp_processed_ops_total",
Help: "The total number of processed events",
})
func init() {
prometheus.MustRegister(opsProcessed)
}
func main() {
http.Handle("/metrics", promhttp.Handler())
go func() {
for {
opsProcessed.Inc()
time.Sleep(time.Second)
}
}()
http.ListenAndServe(":2112", nil)
}
Таким образом, сервис сам предоставляет метрики, а система мониторинга их собирает.