keep/drop

Тема дорожной карты · Prometheus

Действия keep и drop — два наиболее часто используемых действия перемаркировки в relabel_configs и metric_relabel_configs Prometheus. Эти действия позволяют переписывать метки (и сам список таргетов) до и после опроса. Действие keep сохраняет только те цели или временные ряды, метки которых соответствуют заданному регулярному выражению, тогда как действие drop удаляет все цели или ряды, совпадающие с регулярным выражением, отбрасывая их до опроса или сохранения. Эти действия применяются к значению поля source_labels, объединённому разделителем, и результат сопоставляется с полем regex для принятия решения об оставлении или удалении цели. Например, использование drop с регулярным выражением, соответствующим известному «шумному» имени метрики, может значительно снизить кардинальность хранилища в Prometheus, что улучшает производительность и управляемость данных.

Как это работает

Действия keep и drop позволяют переписывать метки (и сам список таргетов) до и после опроса. Распространённое применение — удаление высококардинальных меток через metric_relabel_configs с использованием action: labeldrop. Также можно переименовывать метки (action: replace), фильтровать таргеты (action: keep или drop по регулярному выражению) и объединять метки (action: labelmap). Порядок важен, поскольку relabel_configs обрабатываются последовательно, и первое совпадающее правило, применяющее keep или drop, завершает дальнейшую обработку данной цели.

Когда применять

metric_relabel_configs применяются для удаления меток, которые не должны экспонироваться. Например, метка pod_template_hash в Kubernetes генерируется и бесполезна для экспонирования. relabel_configs используются для фильтрации таргетов; keep оставляет только те таргеты, которые совпадают с регулярным выражением. Перед деплоем изменений следует тестировать их с помощью promtool check rules и promtool query.

Типичные ошибки

Типичные ловушки при использовании keep и drop включают сложные цепочки relabel_configs, которые становятся непонятными через 6 месяцев (следует документировать их комментариями). Также важно избегать удаления меток (labeldrop) после сохранения метрик, поскольку relabel происходит при опросе (scrape), а не при запросе (query), и исторические данные всё ещё будут содержать эти метки. Кроме того, регулярное выражение может матчит больше, чем задумано, поэтому следует тщательно тестировать его с помощью promtool.

Связанные понятия

Полезные ресурсы