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. |
(none) | String | |
| traces.reporter. |
"." | String | |
| traces.reporter. |
"." | String | |
| traces.reporter. |
Map | ||
| traces.reporter. |
(none) | String | |
| traces.reporter. |
"::*" | List | <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. |
List |
모든 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.TraceReporter와 org.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