本文介紹通過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
操作步驟
配置環境變數。
如下代碼中的變數需根據實際情況替換。關於變數的詳細說明,請參見變數說明。
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
設定埋點。
如下代碼中的${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