You need to enable JavaScript to run this app.
导航
通过 OpenTelemetry Collector 转发数据-容器部署
最近更新时间:2024.08.23 10:03:48首次发布时间:2024.08.22 10:30:37

日志服务支持通过 OpenTelemetry Collector 转发 Trace 数据到日志服务,进行长期地数据存储、应用链路数据监控。本文档介绍如何在容器环境中部署 OpenTelemetry Collector,并通过 OpenTelemetry Collector 转发数据到日志服务的操作步骤。

背景信息

OpenTelemetry Collector 用于在跨开发语言和系统的场景下提供 Trace 数据的标准化收集、处理和导出方案,具备高度可扩展和灵活的数据处理能力。您可以通过 OpenTelemetry Collector 将系统中多个不同组件的 Trace 数据统一收集到日志服务中,进行全链路的 Trace 数据在线管理与监控。对于业务系统中已接入 OpenTelemetry Collector 的场景,您只需替换 Collector 为日志服务提供的 OpenTelemetry Collector,并参考本文档配置日志服务 Trace 插件,即可快速对接火山引擎日志服务 Trace 服务。

前提条件

已创建 Trace 实例。详细操作步骤请参考创建 Trace 实例

操作步骤

  1. 在 OpenTelemetry Collector 中配置日志服务 Trace 插件,即创建一个 ConfigMap。
    启动 OpenTelemetry Collector 之前,您需要在 OpenTelemetry Collector 配置文件中添加日志服务 Trace 数据采集插件 volcenginetlsexporter 的相关配置。相关操作步骤如下:

    1. 创建一个 YAML 文件,例如 config.yaml

    2. config.yaml 中添加以下脚本内容。
      其中:

      • exporters 字段用于填写日志服务 Trace 插件相关配置。其中,volcenginetlsexporter 部分为日志服务接入点与鉴权信息相关配置。
      • service 用于指定 receiversexporters 分别启用的组件。

      说明

      说明

      • 如果您在配置文件中添加了部分组件配置,但未在 service 部分中指定启用该配置,则 OpenTelemetry Collector 不会启用这些组件。
      • OpenTelemetry Collector 支持的其他组件配置方式,请参考 Configuration
      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。
      创建 Trace 实例后,日志服务会自动创建日志主题,详细说明请参考相关资源

      access_key

      AKKTNTA1OTlmOWQ1NTM5DNk5OIWwZGNmMTg0ZWUxNmU****

      火山引擎主账号或子账号的 Access Key ID。 在火山引擎控制台密钥管理页面,根据页面提示查看并复制 Access Key ID。

      secret_key

      T0RPLS5EUTFZV1JrTmpAKE5EaGCVRGsxTjJVMk5UTTBNV1UzKODJME1U****

      火山引擎主账号或子账号的 Secret Access Key。 在火山引擎控制台密钥管理页面,根据页面提示查看并复制 Secret Access Key。

      region

      cn-beijing

      Trace 实例所在的地域 ID。您可以在服务地址中查看指定地域的 ID。

    3. 执行如下命令,使配置生效。

      kubectl apply -f config.yaml
      
  2. 以 Deployments 方式部署 otel-collector。

    1. 创建一个 YAML 文件,例如 collector.yaml

    2. 在文件中添加如下脚本。
      其中,image 为 otel-collector 镜像地址,需配置为 tls-otel-collector-cn-beijing.cr.volces.com/tls-otel-collector/tls-otel-collector:v0.0.1replicaspath 等其他参数请根据实际值进行配置。

      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
      
    3. 执行如下命令,使配置生效。

      kubectl apply -f collector.yaml
      

验证接入结果

成功接入 Trace 数据后,您可以通过日志服务的检索分析功能,在线查看采集到的 Trace 数据。如果 Trace 实例对应的日志主题中可检索到您上传的 Trace 数据,表示接入成功。检索 Trace 数据的方式,请参考检索日志
例如,您可以通过以下 SQL 语法检索指定 TraceID 对应的 Trace 数据详情。

* | select * where TraceID = '877247fa95024d2f3a1234216010****'
sql