ASP.NET Core中如何在运行时获取App Metrics计数器指标值?
App Metrics运行时获取计数器值的解决方案
方法1:使用IMetricsManager直接查询
注入IMetricsManager后,可直接通过定义的CounterOptions获取实时值,这是最直接的方式:
private readonly IMetricsManager _metricsManager; // 构造函数注入IMetricsManager public YourService(IMetricsManager metricsManager) { _metricsManager = metricsManager; } public long GetSampleCounterValue() { var counterValue = _metricsManager.Counters.Value(MetricsRegistry.SampleValue); return counterValue.Total; // 返回计数器的总累计值 }
方法2:正确使用Snapshot获取快照值
如果需要基于指标快照查询,需先获取完整快照,再筛选目标计数器:
private readonly IMetrics _metrics; public YourService(IMetrics metrics) { _metrics = metrics; } public long? GetSampleCounterFromSnapshot() { var snapshot = _metrics.Snapshot.Get(); var targetCounter = snapshot.Counters.FirstOrDefault(c => c.Context == MetricsRegistry.SampleValue.Context && c.Name == MetricsRegistry.SampleValue.Name); return targetCounter?.Value.Total; }
关键注意点
- 确保ASP.NET Core中已正确注册App Metrics服务(通过
AddMetrics()等扩展方法完成配置)。 - 若计数器包含自定义标签,查询时需传入对应
MetricTags参数才能精准匹配。
内容的提问来源于stack exchange,提问作者Saeid Mirzaei
相关产品推荐
相关产品推荐

