收集指标
记录计数器、仪表和直方图。
收集指标 是 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 反馈 — 无需本地设置。