すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:OpenTelemetry SDK for Rubyを使用して、RubyアプリケーションからSimple Log Serviceにトレースデータをインポートする

最終更新日:Sep 03, 2024

このトピックでは、OpenTelemetry SDK for Rubyを使用して、トレースデータをRubyアプリケーションからSimple Log Serviceにインポートする方法について説明します。

前提条件

  • トレースインスタンスが作成されます。 詳細については、「トレースインスタンスの作成」をご参照ください。

  • Ruby開発環境がセットアップされました。 Rubyバージョンは2.0以降です。

  • OpenTelemetry SDK for Rubyがインストールされています。

    OpenTelemetry SDK for 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 =${ インスタンス} 、sls.otel.akid =${ akid} 、sls.otel.aksecret =${ aksecret} 、service.name =${ service} 、service.version =${ host.name}

    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.nameスペース}

    サービスが属する名前空間。

    order

    ${project}

    Simple Log Serviceプロジェクトの名前。

    test-project

    ${instance}

    トレースインスタンスのID。 詳細については、「トレースインスタンスの作成」をご参照ください。

    テストトレース

    ${akid}

    Alibaba CloudアカウントのAccessKey ID。

    Simple Log Serviceプロジェクトに対する書き込み権限のみを持つRAMユーザーのAccessKeyペアを使用することを推奨します。 AccessKey ペアは、AccessKey ID と AccessKey Secret で構成されます。 指定したプロジェクトの書き込み権限をRAMユーザーに付与する方法の詳細については、「カスタムポリシーを使用してRAMユーザーに権限を付与する」をご参照ください。 AccessKeyペアを取得する方法の詳細については、「AccessKeyペア」をご参照ください。

    なし

    ${aksecret}

    Alibaba CloudアカウントのAccessKeyシークレット。

    Simple Log Serviceプロジェクトに対する書き込み権限のみを持つ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}

    Simple Log Serviceプロジェクトのエンドポイント。 形式: ${project}.${region-endpoint}

    • ${project}: Simple Log Serviceプロジェクトの名前。

    • ${region-endpoint}: プロジェクトが存在するリージョンのSimple Log Serviceエンドポイント。 Simple Log Serviceには、内部エンドポイントまたはパブリックエンドポイントを使用してアクセスできます。 内部エンドポイントは、クラシックネットワークまたは仮想プライベートクラウド (VPC) 経由でアクセスできます。 インターネット経由でパブリックエンドポイントにアクセスできます。 詳細については、「エンドポイント」をご参照ください。

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

次のステップ