本文介绍通过OpenTelemetry Ruby SDK将Ruby应用的Trace数据接入到日志服务的操作步骤。
前提条件
- 已创建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}
日志服务Project名称。
test-project
${instance}
Trace服务实例ID。更多信息,请参见创建Trace实例。
test-traces
${akid}
阿里云账号AccessKey ID。
建议您使用只具备日志服务Project写入权限的RAM用户的AccessKey(包括AccessKey ID和AccessKey Secret)。授予RAM用户向指定Project写入数据权限的具体操作,请参见授权。如何获取AccessKey的具体操作,请参见访问密钥。
无
${aksecret}
阿里云账号AccessKey Secret。
建议您使用只具备日志服务Project写入权限的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}
日志服务Project的接入地址,格式为${project}.${region-endpoint},其中:
${project}:日志服务Project名称。
${region-endpoint}:日志服务Project所在地域的访问域名,支持公网和阿里云内网(经典网络、VPC)。更多信息,请参见服务入口。
https://test-project.cn-hangzhou.log.aliyuncs.com