Базы данных: Prometheus

Prometheusopen in new window — база данных типа Time-series database.

Базу данных типа Time-series database можно представить как хранилище для набора key-value в котором ключом будет время, а значением некоторый показатель метрики. Однако, таким образом различные метрики перепутались бы, поэтому временные последовательности (последовательности ключей-времени) группируются по названиям метрики.

Метрики могут быть нескольких типов:

  • Counter — может только увеличиваться
  • Gauge — может уменьшаться и увеличиваться

Запуск

Запустить Prometheus проще всего через docker. Придется поднять два контейнера: Prometheusopen in new window и Pushgatewayopen in new window. Второй нужен чтобы отправлять в Prometheus метрики по http.

Создайте файл prometheus.yml:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'pushgateway'
    static_configs:
      - targets: ['pushgateway:9091']
1
2
3
4
5
6
7
docker network create prometheus-network

docker run -d --name pushgateway --network prometheus-network -p 9091:9091 prom/pushgateway

docker run -d --name prometheus --network prometheus-network -p 9090:9090 -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus --config.file=/etc/prometheus/prometheus.yml
1
2
3
4
5

При такой конфигурации Prometheus будет забирать метрики из Pushgateway каждые 15 секунд.

Web-интерфейс

Prometheus поддерживает web-интерфейс для администрирования. После запуска контейнера интерфейс будет доступен по адресу localhost:9090.

Пример на Python

Пример использования библиотеки esdbclientopen in new window:

from prometheus_client import Counter, push_to_gateway

counter = Counter('errors', 'Errors in my app')

while True:
    counter.inc()
    push_to_gateway('localhost:9091', job='my_job', registry=None)
    input()
1
2
3
4
5
6
7
8

Pushgateway не хранит значения метрик, поэтому их значение нужно сохранять в приложении.

Ссылки

Последниее изменение: 02.01.2025, 16:15:15