全部产品
Search
文档中心

日志服务:如何在Kubernetes集群中自动安装OpenTelemetry探针

更新时间:Dec 15, 2023

本文介绍如何在Kubernetes集群中自动安装OpenTelemetry探针,实现Trace数据上传到日志服务。

操作步骤

  1. 登录Kubernetes集群。

  2. 执行如下命令,安装cert-manager。

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.9.1/cert-manager.yaml
  3. 执行如下命令,安装OpenTelemetry Operator。

    kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml

    opentelemetry-operator.yaml配置文件中设置的是ghcr.io镜像地址。在中国境内访问时,会出现访问速度慢或报错问题。您可以修改opentelemetry-operator.yaml配置文件中的镜像地址,实现镜像加速。例如,使用日志服务提供的加速镜像,如下所示:

    将镜像地址ghcr.io替换为otel-image-mirror-registry.cn-beijing.cr.aliyuncs.com。

    说明

    目前镜像加速地址仅支持北京(otel-image-mirror-registry.cn-beijing.cr.aliyuncs.com)和杭州(otel-image-mirror-registry.cn-hangzhou.cr.aliyuncs.com)。

  4. 执行如下命令,安装OpenTelemetry Collector。

    kubectl apply -f - <<EOF
    apiVersion: opentelemetry.io/v1alpha1
    kind: OpenTelemetryCollector
    metadata:
      name: otel
    spec:
      image: otel/opentelemetry-collector-contrib:latest
      config: |
        receivers:
          otlp:
            protocols:
              grpc:
              http:
        exporters:
          alibabacloud_logservice/logs:
            endpoint: "cn-hangzhou.log.aliyuncs.com"
            project: "demo-project"
            logstore: "store-logs"
            access_key_id: "access-key-id"
            access_key_secret: "access-key-secret"
          alibabacloud_logservice/metrics:
            endpoint: "cn-hangzhou.log.aliyuncs.com"
            project: "demo-project"
            logstore: "store-traces-metrics"
            access_key_id: "access-key-id"
            access_key_secret: "access-key-secret"
          alibabacloud_logservice/traces:
            endpoint: "cn-hangzhou.log.aliyuncs.com"
            project: "demo-project"
            logstore: "store-traces"
            access_key_id: "access-key-id"
            access_key_secret: "access-key-secret"
    
        service:
          pipelines:
            traces:
              receivers: [otlp]
              exporters: [alibabacloud_logservice/traces]
            logs:
              receivers: [otlp]
              exporters: [alibabacloud_logservice/logs]
            metrics:
              receivers: [otlp]
              exporters: [alibabacloud_logservice/metrics]
    EOF

    命令中的重要参数说明如下表所示,请根据实际情况修改。

    参数

    说明

    endpoint

    日志服务的服务入口,例如cn-hangzhou.log.aliyuncs.com。更多信息,请参见服务入口

    project

    设置为您在创建Trace实例时所选择的Project。更多信息,请参见创建Trace实例

    logstore

    创建Trace实例后,日志服务自动在您所选择的Project下生成3个Logstore,分别用于存储Logs、Metrics和Traces数据。请根据实际情况替换Logstore名称。

    • trace_instance_id-logs

    • trace_instance_id-traces-metrics

    • trace_instance_id-traces

    其中trace_instance_id为Trace实例ID,请根据实际情况替换。更多信息,请参见创建Trace实例

    access_key_id

    阿里云访问密钥AccessKey ID。更多信息,请参见访问密钥

    access_key_secret

    阿里云访问密钥AccessKey Secret。更多信息,请参见访问密钥

  5. 执行如下命令,安装OpenTelemetry Auto-Instrumentation。

    kubectl apply -f - <<EOF
    apiVersion: opentelemetry.io/v1alpha1
    kind: Instrumentation
    metadata:
      name: my-java-instrumentation
    spec:
      exporter:
        endpoint: http://otel-collector:4317
      propagators:
        - tracecontext
        - baggage
        - b3
      java:
        image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-java:latest
      nodejs:
        image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-nodejs:latest
      python:
        image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-python:latest
        env:
          - name: OTEL_EXPORTER_OTLP_ENDPOINT
            value: http://otel-collector:4318
      dotnet:
        image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-dotnet:latest
        env:
          - name: OTEL_EXPORTER_OTLP_ENDPOINT
            value: http://otel-collector:4318
      apacheHttpd:
        image: ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-apache-httpd:latest
    EOF
    • 针对不同开发语言的应用(java、nodejs、python、dotnet等) ,请根据实际部署的情况,配置对应语言的Auto-Instrumentation。

    • 将ghcr镜像地址替换为日志服务提供的镜像地址,在中国境内访问时,会出现访问速度慢或报错问题,例如将ghcr.io替换为otel-image-mirror-registry.cn-beijing.cr.aliyuncs.com,可实现镜像加速。

    说明

    目前镜像加速地址仅支持北京(otel-image-mirror-registry.cn-beijing.cr.aliyuncs.com)和杭州(otel-image-mirror-registry.cn-hangzhou.cr.aliyuncs.com)。

  6. 在配置文件中添加自动注入探针配置。

    根据实际情况,在具体应用的配置文件中添加脚本。目前只支持Python、Node.js、Java和dotNET应用。

    重要

    my-java-instrumentation是安装Auto-Instrumentation时,设置的Instrumentation名称,即name参数的值,请根据实际值替换。

    image.png

    • Java

      instrumentation.opentelemetry.io/inject-java: "my-java-instrumentation"
    • Python

      instrumentation.opentelemetry.io/inject-python: "my-java-instrumentation"
    • Node.js

      instrumentation.opentelemetry.io/inject-nodejs: "my-java-instrumentation"
    • dotNET

      instrumentation.opentelemetry.io/inject-dotnet: "my-java-instrumentation"