Prometheus
Что такое Prometheus?
Prometheus — это мощная система мониторинга и алертинга с открытым исходным кодом, разработанная для сбора, хранения и анализа метрик. Она особенно популярна в экосистеме Kubernetes и широко используется для мониторинга инфраструктуры, приложений и сервисов.
Основные возможности:
- Модель хранения временных рядов — Prometheus хранит метрики в формате временных рядов, что позволяет анализировать данные во времени.
- Язык запросов PromQL — мощный инструмент для фильтрации, агрегации и визуализации метрик.
- Автоматическое обнаружение сервисов — поддержка Kubernetes, Consul, EC2 и других.
- Гибкая система алертинга — интеграция с Alertmanager для создания уведомлений.
- Экспорт метрик — поддержка множества экспортеров и кастомных метрик.
Установка
Вы можете запустить Prometheus с помощью Docker:
1 |
docker run -d -p 9090:9090 --name=prometheus -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus |
Либо установить вручную, скачав дистрибутив с официального сайта.
Пример конфигурации Prometheus
Файл prometheus.yml
для мониторинга локального хоста:
1 2 3 4 5 6 7 |
global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] |
Пример экспорта метрик на Go
Пример простого HTTP-сервера на Go, который экспортирует метрики:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
package main import ( "net/http" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" ) var requestCount = prometheus.NewCounter( prometheus.CounterOpts{ Name: "http_requests_total", Help: "Количество обработанных HTTP-запросов", }, ) func init() { prometheus.MustRegister(requestCount) } func handler(w http.ResponseWriter, r *http.Request) { requestCount.Inc() w.Write([]byte("Hello, Prometheus!")) } func main() { http.Handle("/metrics", promhttp.Handler()) http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) } |
Использование
После запуска Prometheus будет доступен по адресу http://localhost:9090
. В интерфейсе можно выполнять PromQL-запросы, просматривать графики и анализировать метрики.
Заключение
Prometheus — это мощная система мониторинга, идеально подходящая для облачных и контейнеризированных сред. Благодаря PromQL, автообнаружению и гибкой системе алертинга, он является стандартом де-факто в мониторинге современных систем.