OpenTelemetry 접근 로깅 Envoy 확장

OpenTelemetry 접근 로깅 Envoy 확장 (OTel)

OpenTelemetry Access Logging Envoy 확장을 사용해 접근 로그를 OpenTelemetry 수집기 서비스로 보내는 방법을 설명하는 문서예요.

출처: 문서

본문

이 주제는 OpenTelemetry Access Logging Envoy 확장을 사용해 접근 로그를 OpenTelemetry 수집기(collector) 서비스로 보내는 방법을 설명해요.

워크플로 (Workflow)

OpenTelemetry 접근 로깅 확장을 사용하려면 다음 단계를 완료해요:

  1. service defaults 또는 proxy defaults 구성 항목에 EnvoyExtensions 블록을 구성한다.
  2. 구성 항목을 적용한다.

EnvoyExtensions 추가 (Add the EnvoyExtensions)

proxy defaults 또는 service defaults 구성 항목에 Envoy 확장 구성을 추가해요. 구성 항목의 EnvoyExtensions 블록에 확장 구성을 배치해요.

  • proxy defaults에 Envoy 확장을 구성하면 모든 서비스에 적용돼요.
  • service defaults에 Envoy 확장을 구성하면 특정 서비스에만 적용돼요.

Consul은 proxy defaults에 구성된 Envoy 확장을 service defaults의 확장보다 먼저 적용해요. 결과적으로 service defaults의 Envoy 확장 구성이 proxy defaults의 구성을 재정의할 수 있어요.

다음 예시는 otel-collector 서비스로 gRPC OpenTelemetry 접근 로깅 요청을 보내도록 Envoy 프록시를 지시하는 api 서비스에 대한 service defaults 구성 항목을 보여줘요:

HCL — api-otel-collector-service-defaults.hcl

Kind = "service-defaults"
Name = "api"
EnvoyExtensions = [
  {
    Name = "builtin/otel-access-logging"
    Arguments = {
      ProxyType = "connect-proxy"
      Config = {
        GrpcService = {
          Target = {
            Service = {
              Name = "otel-collector"
            }
          }
        }
      }
    }
  }
]

JSON — api-otel-collector-service-defaults.json

{
  "Kind": "service-defaults",
  "Name": "api",
  "EnvoyExtensions": [{
    "Name": "builtin/otel-access-logging",
    "Arguments": {
      "ProxyType": "connect-proxy",
      "Config": {
        "GrpcService": {
          "Target": {
            "Service": {
              "Name": "otel-collector"
            }
          }
        }
      }
    }
  }]
}

YAML — api-otel-collector-service-defaults.yaml

apiVersion: consul.hashicorp.com/v1alpha1
kind: ServiceDefaults
metadata:
  name: api
  namespace: default
spec:
  envoyExtensions:
  - name: builtin/otel-access-logging
    arguments:
      proxyType: connect-proxy
      config:
        grpcService:
          target:
            service:
              name: otel-collector
              namespace: otel-collector

확장을 구성하는 방법에 대한 자세한 내용은 OpenTelemetry 접근 로깅 확장 구성 참조를 참고하세요.

구성 항목을 정의하는 방법에 대한 자세한 내용은 proxy defaults 구성 항목 참조와 service defaults 구성 항목 참조를 참고하세요.

참고 경고

기본 프록시 구성에 Envoy 확장을 추가하면 의도하지 않은 결과가 발생할 수 있어요. 대부분의 경우 service defaults 구성 항목에 EnvoyExtensions를 구성할 것을 권장해요.

지원되지 않는 Envoy 구성 필드 (Unsupported Envoy configuration fields)

다음 Envoy 구성은 지원되지 않아요:

구성 해결 방법
transport_api_version Consul은 전송 API의 v3만 지원해요. 결과적으로 이 필드의 동작을 구현할 별도의 해결 방법은 없어요.

구성 항목 적용 (Apply the configuration entry)

네트워크가 가상 머신에 배포된 경우 consul config write 명령을 사용하고 proxy defaults 또는 service defaults 구성 항목을 지정해 구성을 적용해요. Kubernetes 오케스트레이션 네트워크의 경우 kubectl apply 명령을 사용해요. 다음 예시는 proxy defaults 구성 항목에서 확장을 적용해요.

HCL

$ consul config write api-otel-collector-service-defaults.hcl

JSON

$ consul config write api-otel-collector-service-defaults.json

YAML

$ kubectl apply -f api-otel-collector-service-defaults.yaml

더 알아보기 (Learn more)