Sobes.tech
Back to questions
Senior
4

Что такое метрики (Prometheus)? Как он собирает данные?

Companies where asked
I-teco

Answer from AI

sobes.tech AI

Prometheus — это система мониторинга и сбора метрик с открытым исходным кодом, широко используемая для наблюдения за состоянием приложений и инфраструктуры.

Метрики в Prometheus — это числовые данные, которые описывают состояние системы в определённый момент времени. Они бывают нескольких типов: счётчики (counter), гистограммы (histogram), сумматоры (summary), и гейджи (gauge).

Сбор данных происходит по модели pull: Prometheus периодически опрашивает (scrape) HTTP-эндпоинты, которые экспортируют метрики в специальном формате. Обычно приложения или сервисы запускают HTTP-сервер с /metrics, где в текстовом формате 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)
}

Таким образом, Prometheus регулярно запрашивает /metrics и собирает актуальные значения для последующего хранения и анализа.