Как работает Prometheus

«Как работает Prometheus» — вопрос из категории DevOps, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Prometheus — это система мониторинга и алертинга с открытым исходным кодом. Она собирает метрики по HTTP-протоколу (pull-модель), хранит их в временной базе данных и позволяет выполнять запросы с помощью PromQL.

Основные компоненты:

  1. Prometheus Server — собирает и хранит метрики.
  2. Экспортеры — предоставляют метрики (например, Node Exporter для мониторинга сервера).
  3. Alertmanager — обрабатывает алерты.
  4. Pushgateway — для кратковременных задач (batch jobs).

Пример метрики в Go (используя prometheus/client_golang):

import (
    "net/http"
    "github.com/prometheus/client_golang/prometheus"
    "github.com/prometheus/client_golang/prometheus/promhttp"
)

var (
    requests = prometheus.NewCounter(
        prometheus.CounterOpts{
            Name: "http_requests_total",
            Help: "Total HTTP requests",
        },
    )
)

func init() {
    prometheus.MustRegister(requests)
}

func handler(w http.ResponseWriter, r *http.Request) {
    requests.Inc()
    w.Write([]byte("OK"))
}

func main() {
    http.HandleFunc("/", handler)
    http.Handle("/metrics", promhttp.Handler())
    http.ListenAndServe(":8080", nil)
}

Prometheus периодически запрашивает /metrics и сохраняет данные.