0Pricing
C# Academy · 课时

收集指标

记录计数器、仪表和直方图。

收集指标 是 CoddyKit 上的免费 C# Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C# Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C# Academy 课程共包含 4 节课。

为什么需要指标

指标是随时间聚合的数值测量结果。它们为仪表板和警报提供支持,例如请求速率、错误数量、延迟和队列深度。与日志不同,指标通过聚合数据,即使在高数据量下也能保持较低成本。

Meter API

.NET 通过 System.Diagnostics.Metrics 发出指标。您可以创建一个 Meter,然后使用它创建计数器和直方图等测量工具。

using System.Diagnostics.Metrics;

private static readonly Meter Meter = new("Checkout.Orders");

计数器

计数器的值只会增加,非常适合统计下单或错误等事件。您可以调用 Add 来增加其值。

private static readonly Counter<long> OrdersPlaced =
    Meter.CreateCounter<long>("orders.placed");

OrdersPlaced.Add(1);

计数器维度

为计数器附加标签,即可按状态或区域等维度切分数据,从而在后端进行聚合和筛选。

OrdersPlaced.Add(1,
    new KeyValuePair<string, object>("status", "completed"),
    new KeyValuePair<string, object>("region", "eu"));

直方图

直方图会记录数值的分布,非常适合记录延迟或负载大小。后端会根据记录的样本计算百分位数(p50、p95、p99)。

private static readonly Histogram<double> OrderDuration =
    Meter.CreateHistogram<double>("order.duration", "ms");

OrderDuration.Record(elapsedMs);

UpDownCounters

UpDownCounter可以增加或减少,适合表示活动连接数或队列中当前项目数等值。

private static readonly UpDownCounter<long> ActiveOrders =
    Meter.CreateUpDownCounter<long>("orders.active");

ActiveOrders.Add(1);   // started
ActiveOrders.Add(-1);  // finished

可观测测量工具

可观测测量工具会通过回调按需读取,适合表示当前内存或缓存大小等需要采样而不是递增的仪表值。

Meter.CreateObservableGauge("cache.size",
    () => _cache.Count);

注册 Meter

与追踪一样,OpenTelemetry 只会收集已注册的仪表。请使用 AddMeter 和您的仪表名称进行注册。

builder.Services.AddOpenTelemetry()
    .WithMetrics(metrics => metrics
        .AddMeter("Checkout.Orders"));

内置指标

插桩包会为 ASP.NET Core(请求持续时间、活动请求)和运行时(垃圾回收、线程池)提供现成指标,让您立即了解系统运行状况。

metrics
    .AddAspNetCoreInstrumentation()
    .AddRuntimeInstrumentation();

选择合适的测量工具

请根据行为进行选择:单调递增的计数(计数器)、会升降的值(UpDownCounter)、数值分布(直方图)或采样得到的当前值(可观测仪表)。选择正确的工具可以让仪表板和警报更易于构建。

控制基数

每种唯一的标签组合都会创建一条独立的时间序列。高基数标签(例如用户标识)可能导致存储空间和成本急剧增加。请使用状态或区域等有界、低基数维度。

快速检查

测试指标收集。

回顾

指标可以低成本地聚合数值测量结果。Meter API 会创建各种测量工具:计数器(单调递增)、UpDownCounter(会升降)、直方图(用于计算百分位数的分布)和可观测仪表(采样值)。标签可以添加维度,但请注意基数。使用 AddMeter 注册仪表,并添加 ASP.NET Core 和运行时的内置插桩,即可立即获得运行状况洞察。

常见问题解答

「收集指标」课时是免费的吗?

是的 — 「收集指标」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C# Academy 课程的其余内容,请升级到 CoddyKit PRO。 C# Academy 课程共包含 4 节课。

「收集指标」这节课中我会学到什么?

记录计数器、仪表和直方图。 你通过在浏览器中直接运行的动手代码来练习 C# Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 C# Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 C# Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「收集指标」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 C# Academy 课中编写并运行代码吗?

能。每节 C# Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 可观测性的三大支柱
  2. 分布式跟踪
  3. 收集指标
  4. 导出到后端
← 返回 C# Academy