Filter processor

Source:: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/filterprocessor

Filter processor позволяет отбрасывать спаны, метрики и логи по определенным условиям. Процессор использует язык OTTL для определения фильтров. Если любое из условий истина то сущность будет отброшена. Каждая опция конфигурации соотносится с определенным контекстом OTTL:

ConfigOTTL Context
traces.spanSpan
traces.spaneventSpanEvent
metrics.metricMetric
metrics.datapointDataPoint
logs.log_recordLog

Опция error_mode позволяет определить поведение процессора при ошибке обработки OTTL выражений:

  • ignore - процессор игнорирует ошибку записывая её в лог и переходит к следующему правилу.
  • silent - то же самое но без логирования.
  • propogate (default) - ошибка пробрасывается наверх по стеку, что приводит к тому, что вся информация будет отброшена коллектором.

Процессору доступны все Converters функции OTTL, а так же он добавляет две (по состоянию на начало 2025-ого) свои для метрик:

Примеры

Dropping data based on a resource attribute

processors:
  filter:
    error_mode: ignore
    traces:
      span:
        - IsMatch(resource.attributes["k8s.pod.name"], "my-pod-name.*")

Dropping metrics with invalid type

processors:
  filter:
    error_mode: ignore
    metrics:
      metric:
        - type == METRIC_DATA_TYPE_NONE

Dropping specific metric and value

processors:
  filter:
    error_mode: ignore
    metrics:
      datapoint:
        - metric.name == "k8s.pod.phase" and value_int == 4

Dropping non-HTTP spans

processors:
  filter:
    error_mode: ignore
    traces:
      span:
        - attributes["http.request.method"] == nil

Dropping HTTP spans

processors:
  filter:
    error_mode: ignore
    traces:
      span:
        - attributes["http.request.method"] != nil