Opentelemetry - Collector filtering span

2023. 8. 28. 17:05·Monitoring

opentelemetry collector를 이용하여 trace 데이터를 수집하다보면, 꼭 수집하지 않아도 되는 데이터를 발견할 수 있습니다.

예를 들어, application health check나 prometheus에서 해당 application의 metric을 scrape할 때 호출하는 request에 대한 것은 이미 정상 작동이 확인되었다면 그 이후에는 trace 데이터를 수집하는 것이 비효율적일 수 있습니다.

(필요 없는 데이터가 너무 많아지기 때문)

 

따라서, span 이름을 기반으로 filter하는 방법을 알아보게 되었고, 여러 방법 중 opentelemetry collector에서 filtering을 하는 방법으로 적용했습니다.

apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
  name: otel-collector
  namespace: otel
spec:
  config: |
    receivers:
      otlp:
        protocols:
          grpc:
          http:
      jaeger:
        protocols:
          thrift_compact:
    processors:
      batch:
        timeout: 10s
        send_batch_size: 100
        send_batch_max_size: 100

      filter/spans:
        spans:
          exclude:
            match_type: regexp
            span_names:
              - .*health.*
              - .*/actuator/prometheus.*
              - .*OperationHandler.handle.*

    exporters:
      otlp:
        endpoint: <trace database url>
        tls:
          insecure: false
          insecure_skip_verify: true

      prometheusremotewrite:
        endpoint: <metric database url>

    service:
      pipelines:
        traces:
          receivers: [otlp, jaeger]
          processors: [batch, filter/spans]
          exporters: [otlp]
        metrics:
          receivers: [otlp]
          processors: [batch]
          exporters: [prometheusremotewrite]
      telemetry:
        logs:
          level: "debug"
        metrics:
          address: ":8888"

위와 같이 config에 processors에서 filter/spans를 적용합니다.

span name을 기반으로 regexp와 일치하는 span을 exclude 하도록 설정했습니다.

service의 trace pipeline에 새로 선언한 processor를 추가해주면 적용이 완료됩니다.

 

단위가 span이기 때문에, 삭제하고자 하는 trace 데이터에 있는 모든 span을 정규표현식으로 지정해줘야 합니다.

따라서, 해당 span name이 다른 trace데이터에서는 쓰이지 않는지 확인 후 진행하는 것이 좋습니다.

span name이 아닌 다른 metadata를 이용할 수 도 있습니다. (아래 링크 참조)

https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/filterprocessor/README.md#filter-spans-from-traces

'Monitoring' 카테고리의 다른 글

Grafana-agent for uploading PrometheusRule to mimir  (0) 2023.08.31
Grafana mimir overview  (0) 2023.08.29
Opentelemetry - auto instrumentation with specific libraries  (0) 2023.08.28
Opentelemetry - auto instrumentation  (0) 2023.08.28
Prometheus-adapter를 이용한 custom.metrics.k8s.io API 사용 (for HPA v2beta2 target)  (1) 2023.08.28
'Monitoring' 카테고리의 다른 글
  • Grafana-agent for uploading PrometheusRule to mimir
  • Grafana mimir overview
  • Opentelemetry - auto instrumentation with specific libraries
  • Opentelemetry - auto instrumentation
joeunvit
joeunvit
  • joeunvit
    joeun
    joeunvit
  • 전체
    오늘
    어제
    • 분류 전체보기 (22)
      • AWS (0)
      • Kubernetes (2)
      • IT Terminology (1)
      • Tools (1)
      • Monitoring (18)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • IT Terminology
    • AWS
    • Kubernetes
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ingress-nginx #validatingwebhook
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
joeunvit
Opentelemetry - Collector filtering span
상단으로

티스토리툴바