Модуль PrometheusTextFormat
Модуль, отвечающий за сериализацию промежуточного формата метрик в строку в формате Prometheus Text Format.
Входной формат:
- массив семейств метрик;
- каждое семейство — структура с полями:
Имя— имя метрики;Тип—counter,gauge,histogram,summaryилиuntyped;Справка— строка# HELP(опционально);Сэмплы— массив сэмплов.
Сэмпл — структура с полями:
ИмяСэмпла— полное имя сэмпла (например,http_requests_total,metric_bucket);Лейблы— соответствиеимя → значение;Значение— числовое значение;- для histogram:
ВерхняяГраница(опционально, при формировании промежуточного формата); - для summary:
Квантиль(опционально).
Content-Type
Функция ContentType() Экспорт
Возвращает строку HTTP‑заголовка Content-Type:
txt
text/plain; version=0.0.4; charset=utf-8Используется вместе с результатом Сериализовать при отдаче метрик по HTTP.
Сериализация
Функция Сериализовать(Семейства) Экспорт
Принимает массив семейств и возвращает строку в формате Prometheus:
- сортирует семейства по имени;
- для каждого семейства:
- добавляет строку
# HELP(если задана справка, с экранированием\и перевода строки); - добавляет строку
# TYPE(counter,gauge,histogram,summaryилиuntyped); - выводит строки сэмплов.
- добавляет строку
Для histogram и summary выполняется дополнительная сортировка сэмплов:
- Histogram:
- бакеты
_bucketсортируются по возрастаниюle,+Infидёт последним; - затем
_sum, затем_count.
- бакеты
- Summary:
- сэмплы с
quantileсортируются по возрастанию квантиля; - затем
_sum, затем_count.
- сэмплы с
Формат одной строки сэмпла
Строка имеет вид:
txt
имя_сэмпла{лейблы} значениеЛейблы формируются функцией СтрокаЛейблов:
- лейблы сортируются по имени;
- значения экранируются:
\→\\;- перевод строки →
\n; "→\".
Числа форматируются функцией ФорматЧисла:
- приводятся к числовому типу;
- десятичный разделитель — точка (
.).
В конце всегда добавляется перевод строки.
