全部產品
Search
文件中心

Simple Log Service:通過OpenTelemetry接入Ruby Trace資料

更新時間:Oct 25, 2024

本文介紹通過OpenTelemetry Ruby SDK將Ruby應用的Trace資料接入到Log Service的操作步驟。

前提條件

  • 已建立Trace執行個體。更多資訊,請參見建立Trace執行個體
  • 已安裝Ruby 2.0及以上版本的開發環境。

  • 已安裝OpenTelemetry Ruby SDK。

    如果未安裝,可參見如下命令,完成安裝。

    gem install opentelemetry-api
    gem install opentelemetry-sdk
    gem install opentelemetry-exporter-otlp

操作步驟

  1. 配置環境變數。

    如下代碼中的變數需根據實際情況替換。關於變數的詳細說明,請參見變數說明

    export OTEL_RESOURCE_ATTRIBUTES=sls.otel.project=${project},sls.otel.instanceid=${instance},sls.otel.akid=${akid},sls.otel.aksecret=${aksecret},service.name=${service},service.version=${version},host.name=${host}

    export OTEL_RESOURCE_ATTRIBUTES=sls.otel.project=${project},sls.otel.instanceid=${instance},sls.otel.akid=${akid},sls.otel.aksecret=${aksecret},service.namespace=${service.namespace},service.name=${service},service.version=${version},host.name=${host}

    表 1. 變數說明

    變數

    說明

    樣本

    ${service}

    服務名。根據您的實際情境取值即可。

    payment

    ${version}

    服務版本號碼。建議按照va.b.c格式定義。

    v0.1.2

    ${service.namespace}

    服務歸屬的命名空間。

    order

    ${project}

    Log ServiceProject名稱。

    test-project

    ${instance}

    Trace服務執行個體ID。更多資訊,請參見建立Trace執行個體

    test-traces

    ${akid}

    阿里雲帳號AccessKey ID。

    建議您使用只具備Log ServiceProject寫入許可權的RAM使用者的AccessKey(包括AccessKey ID和AccessKey Secret)。授予RAM使用者向指定Project寫入資料許可權的具體操作,請參見授權。如何擷取AccessKey的具體操作,請參見存取金鑰

    ${aksecret}

    阿里雲帳號AccessKey Secret。

    建議您使用只具備Log ServiceProject寫入許可權的RAM使用者的AccessKey。

    ${host}

    主機名稱。

    localhost

  2. 設定埋點。

    如下代碼中的${endpoint}變數需根據實際情況替換。關於變數的詳細說明,請參見變數說明。更多接入樣本請參見opentelemetry-ruby

    require 'opentelemetry/sdk'
    require 'opentelemetry-exporter-otlp'
    
    # Configure the sdk with default export and context propagation formats
    # see SDK#configure for customizing the setup
    OpenTelemetry::SDK.configure do |c|
      c.add_span_processor(
        OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
          OpenTelemetry::Exporter::OTLP::Exporter.new(
            endpoint: 'https://${endpoint}/opentelemetry/v1/traces'
          )
        )
      )
    end
    
    # To start a trace you need to get a Tracer from the TracerProvider
    tracer = OpenTelemetry.tracer_provider.tracer('my_app_or_gem', '0.1.0')
    
    tracer.in_span('foo') do |span|
      # set an attribute
      span.set_attribute('tform', 'osx')
      # add an event
      span.add_event('event in bar')
      # create bar as child of foo
      tracer.in_span('bar') do |child_span|
        # inspect the span
        pp child_span
      end
    end
    
    sleep 10

    表 2. 變數說明

    變數

    說明

    樣本

    ${endpoint}

    Log ServiceProject的接入地址,格式為${project}.${region-endpoint},其中:

    • ${project}:Log ServiceProject名稱。

    • ${region-endpoint}:Log ServiceProject所在地區的訪問網域名稱,支援公網和阿里雲內網(傳統網路、VPC)。更多資訊,請參見服務入口

    https://test-project.cn-hangzhou.log.aliyuncs.com

後續步驟