You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于OpenTelemetry在.NET API中集成主机CPU、RAM指标

能否用OpenTelemetry采集.NET环境下的主机CPU、RAM指标?

完全可以通过OpenTelemetry实现主机(及进程级)的CPU、RAM使用率指标采集,核心依赖官方提供的运行时与进程探测工具包,下面是具体实现指引:

1. 安装必要的NuGet包

需要安装以下核心包:

  • OpenTelemetry:核心SDK
  • OpenTelemetry.Extensions.Hosting:集成.NET主机服务
  • OpenTelemetry.Instrumentation.Runtime:采集.NET进程的运行时指标(含进程级CPU、内存)
  • OpenTelemetry.Instrumentation.Process:采集进程相关的系统级指标(补充主机级CPU、内存视角)
  • 可选:OpenTelemetry.Exporter.Prometheus:将指标暴露为Prometheus可抓取的格式

安装命令示例:

dotnet add package OpenTelemetry
dotnet add package OpenTelemetry.Extensions.Hosting
dotnet add package OpenTelemetry.Instrumentation.Runtime
dotnet add package OpenTelemetry.Instrumentation.Process
dotnet add package OpenTelemetry.Exporter.Prometheus

2. 配置OpenTelemetry指标采集

在Program.cs中添加OpenTelemetry服务配置,启用Runtime和Process的指标采集:

using OpenTelemetry.Metrics;

var builder = WebApplication.CreateBuilder(args);

// 配置OpenTelemetry指标服务
builder.Services.AddOpenTelemetry()
    .WithMetrics(metrics =>
    {
        // 启用进程运行时指标采集(CPU使用率、内存分配、GC等)
        metrics.AddRuntimeInstrumentation();
        // 启用系统进程指标采集(主机CPU使用率、物理内存占用等)
        metrics.AddProcessInstrumentation();
        
        // 可选:添加Prometheus导出器,暴露指标端点
        metrics.AddPrometheusExporter();
    });

var app = builder.Build();

// 可选:启用Prometheus指标抓取端点(默认路径/metrics)
app.UseOpenTelemetryPrometheusScrapingEndpoint();

app.MapGet("/", () => "Hello World!");

app.Run();

3. 核心指标说明

启用后可获取以下关键指标:

  • CPU相关:
    • process.cpu.utilization:当前进程的CPU使用率(取值0-1)
    • system.cpu.utilization:主机的整体CPU使用率
  • 内存相关:
    • process.memory.usage:当前进程的物理内存占用量
    • process.memory.virtual:进程的虚拟内存大小
    • runtime.memory.heap.size:.NET堆内存大小

4. 验证与调试

启动API后,访问http://localhost:<端口>/metrics(若启用Prometheus导出器),可直接查看采集到的所有指标数据。也可搭配OpenTelemetry Collector将指标发送至Grafana、Jaeger等平台进行可视化分析。

注意事项

  • OpenTelemetry.Instrumentation.Process依赖系统底层性能计数器(Windows)或proc文件系统(Linux/macOS),需确保运行环境有足够权限读取这些数据。
  • 仅需进程级指标时,单独启用AddRuntimeInstrumentation()即可;需主机级整体指标,必须添加AddProcessInstrumentation()。

内容的提问来源于stack exchange,提问作者DZziMD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 11:11:05