本文介紹通過OpenTelemetry .NET SDK將C#應用的Trace資料接入到Log Service的操作步驟。
前提條件
- 已建立Trace執行個體。更多資訊,請參見建立Trace執行個體。
已安裝.NET Framework開發環境。
說明本文中的接入方式支援除.NET Framework 3.5 SP1外的所有官方所支援的版本。更多資訊,請參見.NET Core和.NET Framework。
操作步驟
添加依賴包。
dotnet add package OpenTelemetry --version 1.2.0-beta1 dotnet add package OpenTelemetry.Exporter.Console --version 1.2.0-beta1 dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocol --version 1.2.0-beta1 dotnet add package OpenTelemetry.Extensions.Hosting --version 1.0.0-rc8 dotnet add package OpenTelemetry.Instrumentation.AspNetCore --version 1.0.0-rc8 dotnet add package Grpc.Core --version 2.36.4
運行代碼。
如下代碼中的變數需根據實際情況替換。關於變數的詳細說明,請參見變數說明。
using System; using OpenTelemetry; using OpenTelemetry.Trace; using System.Diagnostics; using System.Collections.Generic; using OpenTelemetry.Resources; using Grpc.Core; namespace mydemo { class Program { private static readonly ActivitySource MyActivitySource = new ActivitySource( "MyCompany.MyProduct.MyLibrary"); static void Main(string[] args) { using var tracerProvider = Sdk.CreateTracerProviderBuilder() .SetSampler(new AlwaysOnSampler()) .AddSource("MyCompany.MyProduct.MyLibrary") .AddOtlpExporter(opt => { opt.Endpoint = new Uri("${endpoint}"); opt.Headers = "x-sls-otel-project=${project},x-sls-otel-instance-id=${instance},x-sls-otel-ak-id=${access-key-id},x-sls-otel-ak-secret=${access-key-secret}"; }) .SetResourceBuilder(OpenTelemetry.Resources.ResourceBuilder.CreateDefault() .AddAttributes(new Dictionary<string, object> { {"service.name", "${service}" }, {"service.version","${version}"}, {"service.host","${host}"}, {"service.namespace","${service.namespace}"} })) .Build(); using (var activity = MyActivitySource.StartActivity("SayHello")) { activity?.SetTag("foo", 1); activity?.SetTag("bar", "Hello, World!"); activity?.SetTag("baz", new int[] { 1, 2, 3 }); } Console.WriteLine("Hello World!"); } } }
表 1. 變數說明
變數
說明
樣本
${service}
服務名。根據您的實際情境取值即可。
payment
${version}
服務版本號碼。建議按照va.b.c格式定義。
v0.1.2
${host}
主機名稱。
localhost
${endpoint}
Log ServiceProject的接入地址,格式為https://${project}.${region-endpoint}:Port,其中:
${project}:Log ServiceProject名稱。
${region-endpoint}:Log ServiceProject所在地區的訪問網域名稱,支援公網和阿里雲內網(傳統網路、VPC)。更多資訊,請參見服務入口。
Port:網路連接埠,固定為10010。
https://test-project.cn-hangzhou.log.aliyuncs.com:10010
${project}
Log ServiceProject名稱。
test-project
${instance}
Trace服務執行個體ID。更多資訊,請參見建立Trace執行個體。
instance-traces
${access-key-id}
阿里雲帳號AccessKey ID。
建議您使用只具備Log ServiceProject寫入許可權的RAM使用者的AccessKey(包括AccessKey ID和AccessKey Secret)。授予RAM使用者向指定Project寫入資料許可權的具體操作,請參見授權。如何擷取AccessKey的具體操作,請參見存取金鑰。
LTAI4Fvyv****
${access-key-secret}
阿里雲帳號AccessKey Secret。
建議您使用只具備Log ServiceProject寫入許可權的RAM使用者的AccessKey。
HfJEw25sYldO***
${service.namespace}
服務歸屬的命名空間。
order