Introduction

Overview

Особенности

Компоненты

Экосистема Prometheus содержит множество компонентов, многие из которых опциональны

Архитектура

architecture.png

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