Topik ini menjelaskan cara mengimpor data jejak dari aplikasi C# ke Layanan Log Sederhana menggunakan OpenTelemetry SDK untuk .NET.
Prasyarat
Sebuah instance jejak telah dibuat. Untuk informasi lebih lanjut, lihat Buat Instance Jejak.
Lingkungan pengembangan .NET Framework telah disiapkan.
CatatanMetode impor dalam topik ini mendukung semua versi resmi .NET Framework kecuali .NET Framework 3.5 SP1. Untuk informasi lebih lanjut, lihat .NET Core dan .NET Framework.
Prosedur
Tambahkan dependensi.
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.4Jalankan kode.
Ganti variabel dalam kode berikut dengan nilai sebenarnya. Untuk informasi lebih lanjut tentang variabel, lihat Variabel.
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!"); } } }Tabel 1. Variabel
Variabel
Deskripsi
Contoh
${service}
Nama layanan. Tentukan nilainya berdasarkan kebutuhan bisnis Anda.
payment
${version}
Versi layanan. Kami menyarankan Anda menentukan versi dalam format va.b.c.
v0.1.2
${host}
Nama host.
localhost
${endpoint}
Titik akhir proyek Layanan Log Sederhana. Format: https://${project}.${region-endpoint}:Port.
${project}: nama proyek Layanan Log Sederhana.
${region-endpoint}: Titik akhir Layanan Log Sederhana untuk wilayah tempat proyek berada. Anda dapat mengakses Layanan Log Sederhana menggunakan titik akhir internal atau publik. Titik akhir internal dapat diakses melalui jaringan klasik atau virtual private cloud (VPC). Titik akhir publik dapat diakses melalui Internet. Untuk informasi lebih lanjut, lihat Titik Akhir.
Port: nomor port. Nilai ini tetap sebagai 10010.
https://test-project.cn-hangzhou.log.aliyuncs.com:10010
${project}
Nama proyek Layanan Log Sederhana.
test-project
${instance}
ID instance jejak. Untuk informasi lebih lanjut, lihat Buat instance jejak.
instance-traces
${access-key-id}
ID AccessKey akun Alibaba Cloud Anda.
Kami menyarankan Anda menggunakan pasangan AccessKey dari pengguna RAM yang hanya memiliki izin tulis pada proyek Layanan Log Sederhana. Pasangan AccessKey terdiri dari ID AccessKey dan Rahasia AccessKey. Untuk informasi lebih lanjut tentang cara memberikan izin tulis pada proyek tertentu kepada pengguna RAM, lihat Gunakan kebijakan kustom untuk memberikan izin kepada pengguna RAM. Untuk informasi lebih lanjut tentang cara memperoleh pasangan AccessKey, lihat Pasangan AccessKey.
LTAI****************
${access-key-secret}
Rahasia AccessKey akun Alibaba Cloud Anda.
Kami menyarankan Anda menggunakan pasangan AccessKey dari pengguna RAM yang hanya memiliki izin tulis pada proyek Layanan Log Sederhana.
yourAccessKeySecret
${service.namespace}
Namespace tempat layanan berada.
order