Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Monitoring
  • Начало работы
    • Обзор
    • Установка и обновление
    • Запуск и остановка
      • Обзор
      • Входы
      • Выходы
      • Маршрутизация
      • Хранилища
      • Фильтры
      • Служебные
    • Рекомендации по использованию агента
    • Возможные ошибки
    • Удаление
  • Управление доступом
  • Справочник Terraform
  • История изменений
  • Обучающие курсы

В этой статье:

  • Фильтр assign
  • Фильтр convert_metrics
  • Фильтр filter_metrics
  • Фильтр match
  • Фильтр transform_metric_label
  • Фильтр transform_metric_labels
  1. Агент сбора метрик
  2. Конфигурирование
  3. Фильтры

Фильтры

Статья создана
Yandex Cloud
Обновлена 18 сентября 2024 г.
  • Фильтр assign
  • Фильтр convert_metrics
  • Фильтр filter_metrics
  • Фильтр match
  • Фильтр transform_metric_label
  • Фильтр transform_metric_labels

Фильтр можно описать в секции routes внутри элемента channel:pipe:filter. Либо в секции именованных цепочек преобразований pipes.

Общий формат описания фильтра:

- filter:
    plugin: ... # имя плагина
    id: ... # (рекомендуемый) идентификатор фильтра, используется в метриках и логах
    config: # конфигурация фильтра
        ...

Фильтр assignФильтр assign

Фильтр для присвоения метаданных сессии или сообщениям.

Значение метаданных формируется при помощи шаблона. Синтаксис шаблона: {key:format|default}. Экранирование фигурных скобок осуществляется при помощи \: "\{\}".

Значение key:

  • _timestamp — временная метка сообщения;
  • _payload — тело сообщения;
  • key — метаданные с ключом key.

Если ключ метаданных не найден на уровне сообщения (в разделе message), будет выполнен поиск ключа в метаданных сессии. Если ключ не найден на уровне сессии, будет использовано значение по умолчанию ({_host|default_host}) или пустая строка, если значение по умолчанию не указано.

Также в качестве значения key можно указывать макросы:

  • $host_name — локальное имя машины;
  • $short_host_name — краткое локальное имя машины (до первой точки);
  • $env('name') — переменная окружения с именем name;
  • $file('name') — содержимое файла с именем name.

Поддерживается подстановка аргумента макроса из метаданных.
Например, в случае $file(name) имя файла будет взято из метаданных с ключом name.

Значение format — строка форматирования в формате strftime. Может быть указана только для _timestamp.

Значение default:

  • Определяет значение по умолчанию, если нет метаданных с таким ключом или пустой _payload.
  • Не может быть указан для _timestamp, так как _timestamp есть всегда.
  • Поддерживается для макросов $env и $file. Применяется, если указанный файл не найден или значение переменной окружения — пустая строка.
  • По умолчанию используется пустая строка.

Описание параметров:

- filter:
    plugin: assign
    config:
        # Должен быть указан хотя бы один из разделов message или session.

        # Значения, которые нужно записать в метаданные сообщения.
        # Внутри message должен быть список одноэлементных функций map, у которых ключ — имя метаданных, значение — шаблон форматирования.
        # Макросы в фигурных скобках в шаблоне могут содержать ключи метаданных ({_host}) и встроенные функции ({$file('test-file')}).
        # Если ключ метаданных не найден на уровне сообщения (в разделе `message`), будет выполнен поиск ключа в метаданных сессии.
        # Если ключ не найден на уровне сессии, будет использовано значение по умолчанию `({_host|default_host})` или пустая строка, если значение по умолчанию не указано.
        # Ниже приведено несколько примеров таких шаблонов.
        message:  # необязательный, по умолчанию не задан
            # Пример результата: 'Nov 27 21:03:24 test-host test-app:test_payload'.
            # Метка времени форматируется в соответствии с форматом strftime (http://man7.org/linux/man-pages/man3/strftime.3.html).
            # В этом примере значение _app 'test-app:', с двоеточием на конце — типичный результат разбора syslog-сообщения.
            - _payload: "{_timestamp:%b %d %H:%M:%S} {_host} {_app}{_payload}"

            # Подставить вместо $file значение из файла 'test-file'.
            # Если содержимое файла test-file равно test-content, то на выходе получится 'prefix_test-content_suffix'.
            - m1: "prefix_{$file('test-file')}_suffix"

            # Подставить значение из файла, имя которого можно взять из метаданных с ключом test-file-name.
            - m2: "prefix_{$file(test-file-name)}_suffix"

            # Подставить значение из переменной окружения 'test-env'.
            - m3: "prefix_{$env('test-env')}_suffix"

            # Подставить значение из переменной окружения, имя которой взять из метаданных с ключом test-env-name.
            - m4: "prefix_{$env(test-env-name)}_suffix"

            # Подставить имя хоста, на котором запущен агент.
            - m5: "$host_name"

            # Аналогично $host_name, только без домена — префикс до первой точки.
            # Например, если $host_name равен 'lbk-dev-02.search.yandex.net', то в $short_host_name будет значение 'lbk-dev-02'.
            - m6: "$short_host_name"

        # Значения, которые нужно присвоить в метаданные сессии.
        session:  # необязательный, по умолчанию не задан
            # Аналогично message.
            - m1: v1
            - m2: v2

Фильтр convert_metricsФильтр convert_metrics

Фильтр для преобразования метрик между разными форматами. Формат сообщений на входе берется из метаданных сессии с ключом _metrics_format (если он существует), либо из метаданных сообщения с тем же ключом (если он существует).

Если формат входящего сообщения определить не удалось (_metrics_format не указан ни на уровне сессии, ни на уровне сообщения), то входящее сообщение отбрасывается и счетчик RejectedMessages этого плагина увеличивается на один.

Описание параметров:

- filter:
    plugin: convert_metrics
    config:
        # Выходной формат, в который нужно преобразовать входящий набор метрик.
        # Должен быть указан ровно один из вложенных элементов.
        format:  # обязательный
          # Преобразовать в JSON-формат Yandex Monitoring (../../../api-ref/MetricsData/write.md)
          json:
              # Нужно ли склеивать метрики с одним и тем же набором меток.
              # Возможные значения: default (не склеивать), merge_metrics (склеивать).
              merging_mode: default  # необязательный, значение по умолчанию default (не склеивать)

              # Нужно ли форматировать JSON в человекочитаемый формат (с переносами строк и отступами).
              # Задает размер отступов, если 0 — форматировать не нужно.
              indentation: 0  # необязательный, по умолчанию форматирование выключено

        # Набор меток, которые дополнительно нужно добавить к выходному набору метрик.
        labels:  # необязательный, по умолчанию не указан
            l1: v1
            l2: v2

        # Значение времени по умолчанию, которое нужно добавить к выходному набору метрик.
        # Поддерживаются два варианта синтаксиса значений этих параметров — абсолютный и относительный.
        # В абсолютном формате ожидается значение времени в формате ISO 8601.
        # Примеры: 2014-03-25 03:59:56.654563, 2012-11-23 11:12:13, 2012-11-23, 1990-03-15T15:10:12.
        # В относительном формате требуется указать смещение от одного из предопределенных значений:
        # * now — текущее время;
        # * today — начало текущих суток;
        # * yesterday — начало предыдущих суток;
        # * tomorrow — начало следующих суток.
        # Смещение состоит из произвольного числа временных дельт, разделенных операторами + или -.
        # Возможные значения для дельты:
        # * m — минута;
        # * h — час;
        # * d – сутки;
        # * w – неделя;
        # Например, --since yesterday оставит сообщения за вчера и сегодня, а --since now-5m --until now-5m+10s — за интервал в 10 секунд, который начался пять минут назад.
        # По умолчанию дельты отсчитываются от now, то есть вместо now-2m можно указать -2m.
        common_time: null  # необязательный, по умолчанию не задан

Фильтр filter_metricsФильтр filter_metrics

Фильтр позволяет сократить набор передаваемых метрик на основе значений меток.

- filter:
    plugin: filter_metrics
    config:
        # Условие на метрики, которые нужно оставить. Все остальные будут отфильтрованы.
        match: "{name=gauge-*}"  # обязательный

См. также описание синтаксиса запросов.

Фильтр matchФильтр match

Фильтрация сообщений по метаданным — фильтр пропускает только те сообщения, которые содержат все перечисленные метаданные.

Описание параметров:

- filter:
    plugin: match

    config:
        # Метаданные сессии в формате `ключ:значение`.
        session:  # необязательный
            a: b

        # Метаданные сообщения в формате `ключ:значение`.
        message:  # необязательный
            c: d
            e: f

        # В приведенной выше конфигурации фильтр будет пропускать только те сообщения, у которых:
        # * метаданные сессии содержат ключ "a" со значением "b";
        # * метаданные сообщения содержат ключ "c" со значением "d" и ключ "e" со значением "f" (обязательно оба).
        # При этом метаданные могут дополнительно содержать любые другие ключи.

Фильтр transform_metric_labelФильтр transform_metric_label

Фильтр позволяет переименовать или добавить префикс к метке для метрики.

Описание параметров:

- filter:
    plugin: transform_metric_label
    config:
        # Имя метки, которую нужно преобразовать.
        label: name  # обязательный

        # Добавить префикс к значению метки.
        add_value_prefix: ua  # необязательный

        # Переименовать метку.
        rename_to: second_name  # необязательный

        # Разделитель, который нужно использовать между добавляемым префиксом и текущим значением метки.
        delimiter: .  # необязательный, по умолчанию '.'

Фильтр transform_metric_labelsФильтр transform_metric_labels

Фильтр позволяет добавлять к метрикам новые метки, удалять и заменять существующие. В качестве значения метки можно указать фиксированную строку или текстовое выражение с использованием других меток. С помощью выражения match можно ограничить набор метрик, к которым применяется преобразование.

Описание параметров:

- filter:
    plugin: transform_metric_labels

    config:
      # Ограничить применение фильтра только теми метриками, которые удовлетворяют данному условию.
      match: "{name=gauge-*}"  # необязательный параметр, по умолчанию не задан, фильтр применяется ко всем метрикам

      # Описание преобразований меток в формате "имя метки: выражение".
      # Имя метки — метка, которой присваивается новое значение.
      # Выражение — текстовая строка с описанием нового значения.
      # В этой строке с помощью синтаксиса "{my_label}" можно ссылаться на текущие значения меток,
      # включая ту метку, которая изменяется в данный момент. В таком случае будет использовано ее предыдущее значение.
      # Преобразования выполняются в заданном порядке, в последующих выражениях
      # можно ссылаться на результаты предыдущих.
      # Синтаксис выражений аналогичен тому, который используется в фильтре assign.
      # С помощью {my_label|default_value} можно указать значение по умолчанию, если метка my_label не найдена.
      # Чтобы удалить метку, используйте синтаксис my_label: "-".
      labels:
        - l2: "prefix_{l1}_suffix"                # обязательный
        - l3: "prefix2_{l2}_s_{l1|default_value}" # обязательный
        - l4: "-" # обязательный

См. также описание синтаксиса запросов.

Была ли статья полезна?

Предыдущая
Хранилища
Следующая
Служебные
Проект Яндекса
© 2025 ООО «Яндекс.Облако»