Ответ
Prometheus — это система мониторинга и алертинга с открытым исходным кодом. Она собирает метрики по HTTP-протоколу (pull-модель), хранит их в временной базе данных и позволяет выполнять запросы с помощью PromQL.
Основные компоненты:
- Prometheus Server — собирает и хранит метрики.
- Экспортеры — предоставляют метрики (например, Node Exporter для мониторинга сервера).
- Alertmanager — обрабатывает алерты.
- 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 и сохраняет данные.