一、收集器配置详解
OpenTelemetry 的 Collector 组件是实现观测数据(Trace、Metrics、Logs)收集、处理和导出的一站式服务。它的配置主要分为以下 四大核心模块:
receivers(接收数据)
processors(数据处理)
exporters(导出数据)
service(工作流程)
1、配置格式
#具体配置项可参考文档https://opentelemetry.io/docs/collector/configuration/
apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector # 定义资源类型为 OpenTelemetryCollector
metadata:
name: sidecar # Collector 的名称
spec:
mode: sidecar # 以 sidecar 模式运行(与应用容器同 Pod)
config: # Collector 配置部分(结构化 YAML)
receivers: # 数据接收器(如 otlp、prometheus)
processors: # 数据处理器(如 batch、resource、attributes)
exporters: # 数据导出器(如 otlp、logging、jaeger、prometheus)
service: # 服务配置(定义哪些 pipeline 生效)
pipelines:
traces: # trace 数据的处理流程
metrics: # metric 数据的处理流程
logs: # log 数据的处理流程
2、Receivers(接收器)
用于接收数据。支持的类型有很多,
otlp:接收 otlp 协议的数据内容
receivers:
otlp:
protocols:
grpc: # 高性能、推荐使用
endpoint: 0.0.0.0:4317
http: # 浏览器或无 gRPC 支持的环境
endpoint: 0.0.0.0:4318
prometheus: 用于采集 /metrics 接口的数据。
receivers:
prometheus:
config:
scrape_configs:
- job_name: my-service
static_configs:
- targets: ['my-app:8080']
filelog: 从文件读取日志
receivers:
filelog:
include: [ /var/log/myapp/*.log ]
start_at: beginning
operators:
- type: json_parser
parse_from: body
timestamp:
parse_from: attributes.time
3、Processors(处理器)
用于在导出前对数据进行修改、增强或过滤。常用的包括:
batch : 将数据批处理后导出,提高吞吐量。
processors:
batch:
timeout: 10s
send_batch_size: 1024
resource : 为 trace/metric/log 添加统一标签。
processors:
resource:
attributes:
- key: service.namespace
value: demo
action: insert
attributes : 添加、修改或删除属性
processors:
attributes:
actions:
- key: http.method
value: GET
action: insert
处理器配置可参考文档:https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor
4、Exporters(导出器)
用于将数据导出到后端系统
otlp: 用于将数据发送到另一个 OTEL Collector、Jaeger、Tempo、Datadog 等。
exporters:
otlp:
endpoint: tempo-collector:4317
tls:
insecure: true
Prometheus: 用于暴露一个 /metrics HTTP 端口给 Prometheus 拉取。
exporters:
prometheus:
endpoint: "0.0.0.0:8889"
logging : 调试用,打印数据到控制台。
exporters:
debug:
loglevel: debug
5、Service(工作流程)
service.pipelines 是一个“调度图”,告诉 OpenTelemetry Collector,对于某种类型的数据,比如 trace,请用哪个 receiver 来接收,用哪些 processor 来处理,最终送到哪些 exporter 去导出。
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch, resource]
exporters: [otlp, logging]
metrics:
receivers: [prometheus]
processors: [batch]
exporters: [prometheus]
logs:
receivers: [filelog]
processors: [batch]
exporters: [otlp]
二、Collector 发行版本区别
opentelemetry-collector 和 opentelemetry-collector-contrib 是两个 OpenTelemetry Collector 的发行版本,它们的区别主要在于 内置组件的丰富程度 和 维护主体。
评论 (0)