Concepts

Data model

Prometheus хранит все данные как timeseries потоки timestamped значений пренадлежащих некоторой метрике и некоторому набору labeled dimensions
Кроме того он может генерировать временные timeseries из результатов запросов

Каждый временной ряд уникально идентифицируется по имени метрики и опциональных key-value пар, называемых labeles

Имя метрики может содержать буквы, цифры, подчеркивания и точки
[a-zA-Z_:][a-zA-Z0-9_:]*

Изменение лейбла включает добавление или удаление лейблов, а это влечет создание нового временного ряда
На картинке ниже видно как после изменения лейбла vandud_label, графиков стало два

Screenshot_2021_02_02-12_49_03-2021-06-20-at-0.png

Имя лейбла может содержать буквы, цифры и подчеркивание
[a-zA-Z_][a-zA-Z0-9_]*
Начинающиеся с двойного подчеркивания лейблы считаются зарезервированными для внутреннего использования

Значение лейбла может содержать любые unicode символы

Metric types

Jobs and instances

В терминах prometheus'a, эндпоинты, с которых он собирает метрики, называются instance
Инстансы могут иметь реплики, например для масштабируемости или доступности. Коллекция таких инстансов называется - job

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus' # <--- job

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
      labels:
        vandud_label: 'vandud2'

scrape_configs:
  - job_name: 'test1'
    static_configs:
    - targets: ['localhost:9091', 'localhost:9092']
      labels:
        vandud_label: 'vandud2'
  - job_name: 'test2'
    static_configs:
    - targets: ['localhost:9093']
      labels:
        vandud_label: 'vandud2'
    - targets: ['localhost:9094']
      labels:
        vandud_label: 'vandud2'

Разницы нет:
Screenshot_2021_02_02-12_49_03-2021-06-20-at-1008.png


Когда prometheus собирает данные, он вешает некоторые лейблы автоматически

Если какой-то из этих лейблов уже есть на метрике, то поведение зависит от опции honor_labels

Для каждого инстанса хранятся такие таймсерии: