Sobes.tech
Назад к вопросам
Senior
8

Как были настроены метрики? Сервис пушил метрики или их пулили?

Компании, где спрашивали
OkkoOkko

Ответ от нейросети

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)
}

Таким образом, сервис сам предоставляет метрики, а система мониторинга их собирает.