Модель данных
Тема дорожной карты · Prometheus
Модель данных Prometheus представляет собой многомерную структуру временных рядов, где каждый временной ряд уникально идентифицируется именем метрики и набором пар «ключ–значение», называемых метками. Точка данных в Prometheus состоит из значения типа float64 и временной метки Unix с миллисекундной точностью. Все образцы с одинаковым именем метрики и набором меток образуют единый временной ряд, хранящийся вместе в TSDB. Имя метрики описывает то, что измеряется (например, http_requests_total), и должно соответствовать регулярному выражению [a-zA-Z_:][a-zA-Z0-9_:]*, тогда как имена меток следуют шаблону [a-zA-Z_][a-zA-Z0-9_]*. Метки с префиксом __ зарезервированы для внутреннего использования Prometheus. Понимание модели данных Prometheus является основой для написания эффективных PromQL-запросов, проектирования схем меток с низкой кардинальностью и создания надёжных систем мониторинга.
Модель данных Prometheus играет ключевую роль в сборе и хранении данных для анализа. Она позволяет организовать данные таким образом, чтобы они были структурированы и легко доступны для анализа. Это делает Prometheus мощным инструментом для мониторинга и анализа производительности систем.
Как это работает
Модель данных в Prometheus основана на временных рядах, которые уникально идентифицируются именем метрики и набором меток. Формат уникального идентификатора временного ряда выглядит следующим образом: metric_name{label1="value1", label2="value2"}. Каждая точка данных состоит из значения типа float64 и временной метки Unix с миллисекундной точностью.
Прометей поддерживает четыре типа метрик: Counter, Gauge, Histogram, и Summary. Counter используется для измерения увеличивающихся значений, таких как количество запросов или ошибок. Gauge может расти или убывать, что делает его идеальным для отслеживания текущих значений, таких как температура или уровень памяти. Histogram используется для измерения распределений значений, таких как задержки запросов, где каждое значение может быть отнесено к одному из бакетов. Summary также используется для измерения распределений значений, но он вычисляет квантили на стороне клиента.
Когда применять
Выбор типа метрики зависит от того, что вы пытаетесь измерить. Например, Histogram лучше всего подходит для измерения задержек запросов, так как он агрегирует данные между репликами. В то время как Summary не агрегирует данные между репликами, что делает его менее подходящим для этого вида измерений. Counter используется для отслеживания увеличивающихся значений, таких как количество запросов или ошибок. Gauge используется для отслеживания текущих значений, таких как температура или уровень памяти.
Когда вы добавляете метки к метрике, важно выбрать их так, чтобы они не создавали слишком высокую кардинальность. Например, использование меток для уникальных пользователей или запросов может привести к тому, что каждый пользователь или запрос будет представлен отдельным временным рядом, что может привести к проблемам с производительностью и хранением данных.
Типичные ошибки
Одна из распространённых ошибок при использовании модели данных Prometheus — это использование меток с неограниченной кардинальностью, таких как user_id, request_id, или полные URL. Это может привести к тому, что каждый уникальный идентификатор будет представлен отдельным временным рядом, что может привести к проблемам с производительностью и хранением данных. Другой распространённой ошибкой является использование имен метрик без единиц измерения. Например, метрика http_request_duration может быть измерена в секундах или миллисекундах, и её значение будет неизвестно без указания единицы измерения. Важно также следить за последовательностью имен меток между метриками и приложениями, чтобы избежать проблем с объединением данных.