日志服务支持通过 OpenTelemetry Collector 转发 Trace 数据到日志服务,进行长期地数据存储、应用链路数据监控。本文档介绍如何在容器环境中部署 OpenTelemetry Collector,并通过 OpenTelemetry Collector 转发数据到日志服务的操作步骤。
OpenTelemetry Collector 用于在跨开发语言和系统的场景下提供 Trace 数据的标准化收集、处理和导出方案,具备高度可扩展和灵活的数据处理能力。您可以通过 OpenTelemetry Collector 将系统中多个不同组件的 Trace 数据统一收集到日志服务中,进行全链路的 Trace 数据在线管理与监控。对于业务系统中已接入 OpenTelemetry Collector 的场景,您只需替换 Collector 为日志服务提供的 OpenTelemetry Collector,并参考本文档配置日志服务 Trace 插件,即可快速对接火山引擎日志服务 Trace 服务。
已创建 Trace 实例。详细操作步骤请参考创建 Trace 实例。
在 OpenTelemetry Collector 中配置日志服务 Trace 插件,即创建一个 ConfigMap。
启动 OpenTelemetry Collector 之前,您需要在 OpenTelemetry Collector 配置文件中添加日志服务 Trace 数据采集插件 volcenginetlsexporter
的相关配置。相关操作步骤如下:
创建一个 YAML 文件,例如 config.yaml
。
在 config.yaml
中添加以下脚本内容。
其中:
exporters
字段用于填写日志服务 Trace 插件相关配置。其中,volcenginetlsexporter
部分为日志服务接入点与鉴权信息相关配置。service
用于指定 receivers
和 exporters
分别启用的组件。说明
说明
service
部分中指定启用该配置,则 OpenTelemetry Collector 不会启用这些组件。apiVersion: v1 kind: ConfigMap metadata: name: otelcollector-config data: otelcollector.yaml: | receivers: otlp: protocols: grpc: endpoint: "0.0.0.0:4317" http: endpoint: "0.0.0.0:4318" exporters: volcenginetlsexporter/traces: # TLS Endpoint, https://www.volcengine.com/docs/6470/73641 endpoint: "https://tls-cn-beijing.ivolces.com" # TLS topic id topic_id: "39f0bce1-e37e-4dc5-ab06-801d310b****" # Volcengine access key access_key: "AKKTNTA1OTlssss****" # Volcengine secret key secret_key: "T0RPLS5ssssVRGsxTjJVMkjlIATBNV1ULAJXJMLNj****" # Volcengine region region: "cn-beijing" service: pipelines: traces: receivers: [ otlp ] #接收端配置为otlp。 exporters: [ volcenginetlsexporter/traces ] #固定为volcenginetlsexporter/traces。 telemetry: logs: level: INFO output_paths: [ "./logs/otelcollector.log" ]
添加配置时,请将示例配置中的 exporters
部分中 endpoint
等参数替换为实际业务场景的真实配置信息。详细的参数说明如下:
参数 | 示例 | 说明 |
---|---|---|
endpoint | https://tls-cn-beijing.volces.com | 日志服务连接域名,即服务地址。登录日志服务控制台后,在日志项目的详情页中查看连接域名。日志服务支持的地域及对应服务地址请参考服务地址。 |
topic_id | 39f0bce1-e37e-4dc5-ab06-801d310b**** | 用于存储 Trace 数据的日志主题 ID。 |
access_key | AKKTNTA1OTlmOWQ1NTM5DNk5OIWwZGNmMTg0ZWUxNmU**** | 火山引擎主账号或子账号的 Access Key ID。 在火山引擎控制台密钥管理页面,根据页面提示查看并复制 Access Key ID。 |
secret_key | T0RPLS5EUTFZV1JrTmpAKE5EaGCVRGsxTjJVMk5UTTBNV1UzKODJME1U**** | 火山引擎主账号或子账号的 Secret Access Key。 在火山引擎控制台密钥管理页面,根据页面提示查看并复制 Secret Access Key。 |
region | cn-beijing | Trace 实例所在的地域 ID。您可以在服务地址中查看指定地域的 ID。 |
执行如下命令,使配置生效。
kubectl apply -f config.yaml
以 Deployments 方式部署 otel-collector。
创建一个 YAML 文件,例如 collector.yaml
。
在文件中添加如下脚本。
其中,image
为 otel-collector 镜像地址,需配置为 tls-otel-collector-cn-beijing.cr.volces.com/tls-otel-collector/tls-otel-collector:v0.0.1
;replicas
、path
等其他参数请根据实际值进行配置。
apiVersion: apps/v1 kind: Deployment metadata: name: otelcollector spec: replicas: {n} selector: matchLabels: app: otelcollector template: metadata: labels: app: otelcollector spec: containers: # 设置容器启动命令 - args: - mkdir -p /var/log/POD_$HOSTNAME/otelcollector/logs; (nohup /opt/tiger/otelcollector/otelcol-tls --config=/opt/tiger/otelcollector/conf/otelcollector.yaml 1>>/var/log/POD_$HOSTNAME/otelcollector/logs/otelcollector.err.log 2>&1 &); sleep 1; tail -f /dev/null; command: - bash - -c env: - name: POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name image: tls-otel-collector-cn-beijing.cr.volces.com/tls-otel-collector/tls-otel-collector:v3.5.2 imagePullPolicy: IfNotPresent name: tls-otelcollector # 设置资源使用 resources: limits: cpu: "1" memory: 2Gi requests: cpu: "1" memory: 2Gi # 挂载volume volumeMounts: - mountPath: /var/log name: log-path subPathExpr: POD_$(POD_NAME) - mountPath: /opt/tiger/otelcollector/conf/ name: config-volume workingDir: /opt/tiger/otelcollector volumes: # 定义日志盘 - hostPath: path: {hostpath} type: DirectoryOrCreate name: log-path # 定义ConfigMap为volume - configMap: defaultMode: 420 name: otelcollector-config name: config-volume
执行如下命令,使配置生效。
kubectl apply -f collector.yaml
成功接入 Trace 数据后,您可以通过日志服务的检索分析功能,在线查看采集到的 Trace 数据。如果 Trace 实例对应的日志主题中可检索到您上传的 Trace 数据,表示接入成功。检索 Trace 数据的方式,请参考检索日志。
例如,您可以通过以下 SQL 语法检索指定 TraceID 对应的 Trace 数据详情。
* | select * where TraceID = '877247fa95024d2f3a1234216010****' sql