Introduction
Overview
Особенности
- Многомерная (dimensions) модель данных с time series данными, которые идентифицируются по имени метрики и key value парам
- PromQL, гибкий язык запросов с помощью которого можно использовать многомерность данных
- Независимость от стораджа, каждая нода автономна
- Данные собираются по pull модели по http
- Push модель доступна с использованием push gateway
- Цели отыскиваются через service discovery или берутся из статической конфигурации
- Поддерживается возможность использования нескольких рисовалок графиков и дашборд систем
Компоненты
Экосистема Prometheus содержит множество компонентов, многие из которых опциональны
- Prometheus server, который собирает и хранит данные
- Библиотеки под разные языки программирования которые позволяют писать софт который может работать с prometheus'ом
- Push gateway для поддержки маложивущих джоб
- Экспортеры специального назначения для различных сервисов
- Alertmanager для алертов
- Множество инструментов для поддержки
Архитектура
Prometheus собирает метрики с каждой цели отдельно или через промежуточный push gateway (нужен для short-lived jobs)
Сохраняет их данные локально и запускает правила поверх этих данных для аггрегации или генерации алертов
Grafana или что-то другое работающее через API, может быть использовано для визуализации данных
Так как prometheus автономный, он не зависит от сетевых хранилищ (БД) или других удаленных сервисов
На него можно положиться когда вся инфраструктура сломана
А еще он не требует большой инфраструктуры для себя
First steps
Скачай: https://prometheus.io/download/
По ссылке полно всего разного
Можно сразу запускать
root@two:~/prometheus-2.27.1.linux-amd64# ./prometheus
...
В этом случае конфиг возьмется из файла-примера prometheus.yml
Сам конфиг с комментариями
Секция global отвечает за глабальную конфигурацию prometheus сервера. Например интервал сбора данных
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
Частоту сбора можно переопределить на уровне таргетаevaluation_interval
- отвечает за частоту запуска правил для алретинга и создания новых временных рядов
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files
- содержит расположение файлов с правилами которые подгрузит prometheus
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
Последний раздел содержит информацию о том какие ресурсы мониторит prometheus
Также после запуска он автоматически мониторит сам себя
На 9090 вместе с вебней доступны и метрики на http://prometheus.host:9090/metrics
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
Текущий конфиг можно смотреть тут - http://prometheus.host:9090/config