网站建设制作文献,吉林省建设厅网站周军,北京注册公司代理,自助建站平台设计器1、Trace Reporter 是怎么工作的#xff1f; 通过 traces.reporters 声明启用哪些 reporter#xff08;可以多个#xff09;每个 reporter 必须配置 traces.reporter.name.factory.classReporter 作为 插件加载#xff0c;因此 jar 必须在 Flink 启动时可见#x…1、Trace Reporter 是怎么工作的通过traces.reporters声明启用哪些 reporter可以多个每个 reporter 必须配置traces.reporter.name.factory.classReporter 作为插件加载因此 jar 必须在 Flink 启动时可见文档里这些默认可用Reporter 负责把 Flink runtime 产生的 spans 输出到外部系统例如 OTEL Collector和 Metrics 最大区别在于trace 侧的过滤是“span 的 scope span name”没有 metrics 那种 typecounter/meter/gauge/histogram的维度2、通用配置项所有 Trace Reporters 都遵循同一套前缀所有配置都以traces.reporter.reporter_name.property为前缀。通用 Key你实际最常用的factory.class必配指定 TraceReporterFactoryscope.delimiter默认.scope.variables.excludestag 型 reporter 才有意义排除变量scope.variables.additional补充额外 tagsmapfilter.includes/filter.excludesspan 过滤非常建议配置traces.reporter.name.parameterreporter 私有参数例如 otel exporter 配置3、Span 过滤器filter.includes/excludes控量的关键过滤器格式scope[:name[,name]]匹配规则span 命中 filter 需要同时满足scope pattern 匹配name patterns 至少一个匹配3.1 scope 的语义与写法用.分层*匹配任意字符序列示例文档给的很典型jobmanager.job匹配 JobManager 上所有 job 相关 spans*.job匹配所有 job 级 spans*.job.*匹配 job 以下更细粒度 spanstask/operator 等3.2 name 的语义与写法逗号分隔多个模式*通配示例*Records*,*Bytes*匹配 span 名里包含 Records 或 Bytes 的 spans3.3 建议你直接套用的过滤模板偏生产只保留 job/task/operator 级别不抓得太细traces.reporter.otel.filter.includes:*.job,*.job.task,*.job.task.operator只关心 operator 层且只要与吞吐相关的 span示例写法traces.reporter.otel.filter.includes:*.job.task.operator:*Records*,*Bytes*当你发现 trace 量太大时优先用 excludes 删掉噪声traces.reporter.otel.filter.excludes:*.job.task.operator:*Idle*,*Heartbeat*具体 span 名以你们实际产生的为准思路是先 includes 限范围再 excludes 去噪。4) 多 Reporter 并存示例OpenTelemetry 另一个 OTELtraces.reporters:otel,my_other_oteltraces.reporter.otel.factory.class:org.apache.flink.traces.otel.OpenTelemetryTraceReporterFactorytraces.reporter.otel.exporter.endpoint:http://127.0.0.1:1337traces.reporter.otel.scope.variables.additional:region:eu-west-1,environment:local,flink_runtime:1.17.1traces.reporter.my_other_otel.factory.class:org.apache.flink.common.traces.OpenTelemetryTraceReporterFactorytraces.reporter.my_other_otel.exporter.endpoint:http://196.168.0.1:31337生产上更常见的是一个 otel reporter 指向本地/同集群的 OTEL Collector再由 Collector 转发到 Jaeger/Tempo/Zipkin/Elastic APM 等后端。5、OpenTelemetry Trace Reporter参数与配置模板5.1 支持参数exporter.endpoint必配OTEL exporter 目标地址通常是 Collectorexporter.protocol默认 gRPC可选gRPC/HTTPexporter.timeoutDuration例如10sservice.name/service.version用于标识服务信息非常建议显式设置5.2 gRPC 示例traces.reporters:oteltraces.reporter.otel.factory.class:org.apache.flink.traces.otel.OpenTelemetryTraceReporterFactorytraces.reporter.otel.exporter.endpoint:http://127.0.0.1:1337traces.reporter.otel.exporter.protocol:gRPCtraces.reporter.otel.exporter.timeout:10straces.reporter.otel.service.name:flinktraces.reporter.otel.service.version:2.2.0# 建议加环境/集群标签后端检索体验会好很多traces.reporter.otel.scope.variables.additional:environment:prod,cluster:flink-prod-a,region:cn-hz# 建议控量traces.reporter.otel.filter.includes:*.job,*.job.task,*.job.task.operator5.3 HTTP 示例traces.reporter.otel.factory.class:org.apache.flink.traces.otel.OpenTelemetryTraceReporterFactorytraces.reporter.otel.exporter.endpoint:http://127.0.0.1:9090traces.reporter.otel.exporter.protocol:HTTP6、Slf4j Trace Reporter用于调试不建议长期生产开启traces.reporter.slf4j.factory.class:org.apache.flink.traces.slf4j.Slf4jTraceReporterFactory用途验证 trace 是否在产出在没有 OTEL Collector 的环境快速观察 span不建议在大规模生产长期打开日志量会很大。7、自定义 Trace Reporter接口与性能注意事项如果你要写自定义 reporter实现org.apache.flink.traces.reporter.TraceReporter实现org.apache.flink.traces.reporter.TraceReporterFactory以支持插件加载性能底线文档强调得很关键所有方法都不能长时间阻塞耗时 I/O写网络、写磁盘要异步化否则会影响 Flink runtime8、生产落地建议少踩坑版优先 OTELFlink - OTEL Collector - Trace Backendscope.variables.additional 一定要加environment/cluster/region 之类否则后端检索会很痛苦filter.includes 一定要配否则 trace 量可能爆炸Collector/后端成本直线上升如果你也在做 Metrics尽量让 metrics 与 traces 的标签体系一致同样的 environment/cluster/job 标签排障体验会提升一个档次