Демистифицируем Прометея: фильтрация метрик при парсинге

Prometheus — это набор инструментов для мониторинга и оповещения с открытым исходным кодом, который завоевал популярность среди команд DevOps. Одной из его ключевых особенностей является возможность собирать метрики из различных целей, таких как приложения и серверы, и сохранять их в базе данных временных рядов. Однако в реальных сценариях не все показатели актуальны или необходимы для целей мониторинга. В этой статье блога мы рассмотрим несколько методов фильтрации метрик при парсинге с помощью Prometheus, используя разговорный язык и предоставив примеры кода, чтобы сделать концепции более доступными.

Метод 1. Фильтры черного списка

Один из способов фильтрации показателей – использование фильтров черного списка. Эти фильтры исключают сбор и сохранение определенных показателей Prometheus. Давайте посмотрим на пример фрагмента файла конфигурации (prometheus.yml):

scrape_configs:
  - job_name: myapp
    metrics_path: /metrics
    static_configs:
      - targets:
          - myapp:8080
    metric_relabel_configs:
      - source_labels: [__name__]
        regex: 'unwanted_metric_.*'
        action: drop

В этом примере любая метрика с именем, соответствующим шаблону «нежелательнаяметрика.*», будет удалена, что приведет к ее эффективной фильтрации.

Метод 2. Фильтры белого списка

В качестве альтернативы вы можете использовать фильтры белого списка, чтобы включать в процесс очистки только определенные показатели. Такой подход позволяет вам более избирательно выбирать метрики, которые вы хотите сохранить. Вот пример фильтрации белого списка в конфигурации Prometheus:

scrape_configs:
  - job_name: myapp
    metrics_path: /metrics
    static_configs:
      - targets:
          - myapp:8080
    metric_relabel_configs:
      - source_labels: [__name__]
        regex: 'wanted_metric_.*'
        action: keep

В этом случае будут сохранены только метрики с именами, соответствующими шаблону «wantedmetric.*», а все остальные будут удалены.

Метод 3. Изменение метки

Переименование метрик обеспечивает гибкий способ манипулирования названиями и метками метрик перед их сохранением. Его можно использовать как для фильтрации, так и для переименования метрик. Вот пример:

scrape_configs:
  - job_name: myapp
    metrics_path: /metrics
    static_configs:
      - targets:
          - myapp:8080
    metric_relabel_configs:
      - source_labels: [__name__]
        regex: 'unwanted_metric_.*'
        action: drop
      - source_labels: [__name__]
        regex: 'renamed_metric_(.*)'
        replacement: 'new_metric_$1'
        target_label: __name__

В этом примере первое правило изменения меток удаляет любую метрику с именем, соответствующим шаблону «нежелательнаяметрика.». Второе правило переименовывает метрики, соответствующие шаблону «renamedmetric(.)» на «newmetric$1».

Отфильтрация нерелевантных показателей — важный аспект эффективного мониторинга с помощью Prometheus. В этой статье мы рассмотрели три метода достижения этой цели: фильтры черного списка, фильтры белого списка и перемаркировка метрик. Используя эти методы, вы можете гарантировать, что будут сохранены только необходимые показатели, что приведет к более целенаправленной и управляемой системе мониторинга.