如何将VKProxy与OpenTelemetry集成实现追踪?
摘要:OpenTelemetry OpenTelemetry 是各类 API、SDK 和工具形成的集合。可用于插桩、生成、采集和导出遥测数据(链路、指标和日志),帮助你分析软件的性能和行为。 VKProxy 已集成OpenTelemetry,所以
OpenTelemetry
OpenTelemetry 是各类 API、SDK 和工具形成的集合。可用于插桩、生成、采集和导出遥测数据(链路、指标和日志),帮助你分析软件的性能和行为。
VKProxy 已集成OpenTelemetry,所以现在可以非常简单采集和导出遥测数据(链路、指标和日志)。
简单回顾asp.net core中如何使用
遥测数据分为链路、指标和日志 ,dotnet中使用可参考OpenTelemetry文档
简单的示例
using Microsoft.Extensions.Options;
using OpenTelemetry;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
Environment.SetEnvironmentVariable("OTEL_EXPORTER_OTLP_ENDPOINT", "http://127.0.0.1:4317/"); // 配置OpenTelemetry收集器
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
builder.Services.AddOpenApi();
builder.Services.AddOpenTelemetry()
.ConfigureResource(resource => resource.AddService("TestApi", "").AddContainerDetector())
.WithTracing(tracing => tracing.AddAspNetCoreInstrumentation())
.WithMetrics(builder =>
{
builder.AddMeter("System.Runtime", "Microsoft.AspNetCore.Server.Kestrel", "Microsoft.AspNetCore.MemoryPool");
})
.WithLogging()
.UseOtlpExporter(); // 示例使用 Otlp协议
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.MapOpenApi();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
日志
这个其实没什么特别,由于已经提供非常抽象的 ILogger, 所以只需大家按照自己记录log所需正常使用就好,
log 大家使用非常多,这里就不详细示例了,可参考文档Logging in .NET and ASP.NET Core
而OpenTelemetry 对于log,主要是如何在log 结构化并记录分布式追踪的信息,以方便关联。
OpenTelemetry sdk 已经内置支持,只需配置好 .WithLogging(),对应log和分布式追踪的信息都会写入收集器中。
