Trace Reporters

Trace Reporters

Flink는 트레이스를 외부 시스템으로 보고하는 것을 지원해요. 하나 또는 여러 reporter를 Flink 구성 파일에서 구성하면, 각 job과 task manager가 시작될 때 인스턴스화돼요.

출처: 문서

본문

Flink에 대한 더 많은 정보는 tracing system 문서를 참고하세요. 트레이스는 Flink 구성 파일에서 하나 또는 여러 reporter를 구성해 외부 시스템으로 노출될 수 있어요. 이러한 reporter는 각 job과 task manager가 시작될 때 인스턴스화돼요.

다음은 모든 reporter에 일반적으로 적용되는 매개변수 목록이에요. 모든 속성은 구성에서 traces.reporter.<name>.<property>로 설정돼요. reporter는 구현별 매개변수를 추가로 제공할 수 있으며, 이는 각각 해당 reporter의 절에 문서화되어 있어요.

Key Default Type Description
traces.reporter..factory.class (none) String 이라는 이름의 reporter에 사용할 reporter factory 클래스
traces.reporter..scope.delimiter "." String 이라는 이름의 reporter에 대한 metric 식별자를 조합하는 데 사용되는 구분자
traces.reporter..scope.variables.excludes "." String 이라는 이름의 reporter에 대해 제외되어야 하는 변수 집합. 태그 기반 reporter에만 적용돼요.
traces.reporter..scope.variables.additional Map 이라는 이름의 reporter에 대해 포함되어야 하는 추가 변수 맵
traces.reporter.. (none) String 이라는 이름의 reporter에 대한 매개변수를 구성
traces.reporter..filter.includes "::*" List 이라는 이름의 reporter에 대해 포함되어야 하는 span. 필터는 목록으로 지정되며, 각 필터는 <scope>:<name>[,<name>,...] 형식을 따라요. span이 scope 패턴과 name 패턴 중 적어도 하나가 일치하면 span이 필터와 일치해요. scope: 논리적 scope를 기준으로 필터링해요. *가 문자 시퀀스와 일치하고 .가 scope 구성 요소를 구분하는 패턴으로 지정돼요. 예: "jobmanager.job"은 JobManager의 job 관련 span과 일치하고, ".job"은 모든 job 관련 span과 일치하며, ".job.*"은 job 수준 아래의 모든 span(즉 task/operator span 등)과 일치해요. name: span 이름을 기준으로 필터링해요. *가 문자 시퀀스와 일치하는 쉼표로 구분된 패턴 목록으로 지정돼요. 예를 들어 "Records,Bytes"는 이름에 "Records" 또는 "Bytes"를 포함하는 span과 일치해요.
traces.reporter..filter.excludes List 이라는 이름의 reporter에 대해 제외되어야 하는 span. 형식은 filter.includes와 동일해요

모든 reporter 구성은 factory.class 속성을 포함해야 해요.

여러 reporter를 지정하는 예시 reporter 구성:

traces.reporters: otel,my_other_otel

traces.reporter.otel.factory.class: org.apache.flink.traces.otel.OpenTelemetryTraceReporterFactory
traces.reporter.otel.exporter.endpoint: http://127.0.0.1:1337
traces.reporter.otel.scope.variables.additional: region:eu-west-1,environment:local,flink_runtime:1.17.1

traces.reporter.my_other_otel.factory.class: org.apache.flink.common.traces.OpenTelemetryTraceReporterFactory
traces.reporter.my_other_otel.exporter.endpoint: http://196.168.0.1:31337

중요: reporter를 포함하는 jar는 Flink가 시작될 때 접근 가능해야 해요. Reporter는 plugin으로 로드돼요. 이 페이지에 문서화된 모든 reporter는 기본적으로 사용 가능해요.

org.apache.flink.traces.reporter.TraceReporterorg.apache.flink.traces.reporter.TraceReporterFactory 인터페이스를 구현해 자신만의 Reporter를 작성할 수 있어요. 모든 메서드가 상당한 시간 동안 블록되지 않도록 주의해야 하며, 더 많은 시간이 필요한 reporter는 연산을 비동기로 실행해야 해요.

Reporter

다음 절들은 지원되는 reporter를 나열해요.

OpenTelemetry

(org.apache.flink.traces.otel.OpenTelemetryTraceReporterFactory)

매개변수:

Key Default Type Description
batch.size 0 Integer 내보내기 배치당 메트릭 수. 값이 <= 0이면 배치가 비활성화되고 모든 메트릭이 단일 요청으로 내보내져요.
export-completion-timeout-millis 300000 Long 비동기 export 완료를 기다리는 타임아웃(밀리초)
exporter.compression "none" String OTel Reporter의 압축 방법. 'gzip' 또는 'none'만 가능. 기본값은 'none'
exporter.endpoint (none) String OpenTelemetry Reporter의 엔드포인트
exporter.protocol gRPC Enum OpenTelemetry Reporter의 프로토콜. 가능한 값: "gRPC", "HTTP"
exporter.timeout (none) String OpenTelemetry Reporter의 타임아웃, Duration 문자열. 예: 10초는 10s
service.name (none) String OpenTelemetry Reporter에 전달되는 service.name
service.version (none) String OpenTelemetry Reporter에 전달되는 service.version

예시 구성:

traces.reporter.otel.factory.class: org.apache.flink.traces.otel.OpenTelemetryTraceReporterFactory
traces.reporter.otel.exporter.endpoint: http://127.0.0.1:1337
traces.reporter.otel.exporter.protocol: gRPC
traces.reporter.otel.factory.class: org.apache.flink.traces.otel.OpenTelemetryTraceReporterFactory
traces.reporter.otel.exporter.endpoint: http://127.0.0.1:9090
traces.reporter.otel.exporter.protocol: HTTP

Slf4j

(org.apache.flink.traces.slf4j.Slf4jTraceReporter)

예시 구성:

traces.reporter.slf4j.factory.class: org.apache.flink.traces.slf4j.Slf4jTraceReporterFactory

더 알아보기 (Learn more)