.NET 8控制台/Worker应用中使用Otel采集指标的方法
控制台应用使用OpenTelemetry采集系统指标的实现方案
以.NET控制台应用为例,以下是具体实现步骤:
1. 安装依赖包
通过NuGet安装核心依赖包:
OpenTelemetry:核心SDKOpenTelemetry.Extensions.Hosting:集成.NET HostOpenTelemetry.Instrumentation.Runtime:采集.NET运行时指标(CPU使用率、内存、堆分配等)OpenTelemetry.Exporter.Console:本地控制台导出器(用于调试验证)- 若需将指标发送到Otel Collector,额外安装
OpenTelemetry.Exporter.OpenTelemetryProtocol
2. 配置Otel指标管道
在控制台应用入口代码中完成采集配置:
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using OpenTelemetry.Metrics; var host = Host.CreateDefaultBuilder(args) .ConfigureServices(services => { services.AddOpenTelemetry() .WithMetrics(metrics => { // 启用运行时指标采集 metrics.AddRuntimeInstrumentation(); // 添加控制台导出器(调试用) metrics.AddConsoleExporter(); // 如需发送到Otel Collector,替换为以下配置 // metrics.AddOtlpExporter(options => // { // options.Endpoint = new Uri("http://your-collector-address:4317"); // }); }); }) .Build(); await host.StartAsync(); // 保持应用运行,避免控制台退出 Console.WriteLine("指标采集中,按任意键退出..."); Console.ReadKey(); await host.StopAsync();
3. 验证采集效果
运行应用后,控制台会定期输出类似以下的指标数据:
Exporting metric process.cpu.utilization, value: 0.08 Exporting metric process.runtime.dotnet.memory.heap.allocated, value: 15672340 Exporting metric process.runtime.dotnet.memory.heap.size, value: 89234560
其他语言实现思路
- Java:使用OpenTelemetry Java Agent,通过环境变量
OTEL_INSTRUMENTATION_RUNTIME_METRICS_ENABLED=true启用运行时指标采集,无需修改代码。 - Python:安装
opentelemetry-api、opentelemetry-sdk、opentelemetry-instrumentation-system-metrics包,通过代码配置SystemMetricsInstrumentation即可采集系统指标。
内容的提问来源于stack exchange,提问作者Felipe Siqueira Queiroz
相关产品推荐
相关产品推荐

