Тысячи строк экспортёра читаются одинаково: имя, метки, число.
Каждая строка без # — одна метрика со значением. Вот две строки о процессоре вместе с описанием:
Сначала имя, в фигурных скобках — метки, в конце — число. Метки уточняют, о чём число: здесь — какое ядро и в каком режиме провело эти секунды. Строки # HELP и # TYPE описывают метрику: что она считает и какого она типа.
Имя вместе с набором меток — временной ряд: Prometheus хранит его значения во времени, как столбик чисел с метками времени. Рядов у метрики столько, сколько разных сочетаний меток: у процессора — ядра на режимы, у дисков — по ряду на диск, у файловых систем — на каждую точку монтирования. Отсюда тысячи строк у одной машины.
Числа экспортёр пишет с плавающей точкой: 2.88198656e+08 — это 288 198 656. Единица измерения — в конце имени: _bytes, _seconds. Поэтому строки о памяти находятся по началу имени, а сравнивать их с free -b можно прямо в байтах.
На машине с двумя ядрами node_cpu_seconds_total считает время в 8 режимах (idle, user, system…). Сколько строк со значениями у этой метрики отдаст экспортёр?
-
По строке на ядро было бы при одной метке cpu. Вторая метка — mode, и строк 2 × 8.
-
Имя у метрики одно, но каждое сочетание меток — свой ряд и своя строка: пара cpu и mode.
-
8 строк — у машины с одним ядром, как эта:
curl -s localhost:9100/metrics | grep -c '^node_cpu_seconds_total'. Второе ядро добавляет ещё 8.
Каждое сочетание меток cpu и mode — отдельный временной ряд и отдельная строка: 2 ядра × 8 режимов = 16. Поэтому у машины с десятками ядер, дисков и разделов строк тысячи.
Главное в шаге
-
Строка метрики — имя, метки в фигурных скобках и число;
# HELPи# TYPEописывают метрику. - Имя с набором меток — отдельный временной ряд: у метрики столько строк, сколько сочетаний меток.
-
Единица — в конце имени (
_bytes,_seconds), число может быть записано как2.88e+08.