【问题标题】:Are EventCounters the standard way to expose metrics from .NET libraries?EventCounters 是从 .NET 库中公开指标的标准方法吗?
【发布时间】:2021-05-29 15:40:10
【问题描述】:
从 .NET Core 3 开始,.NET SDK 通过EventCounters 公开指标。也可以实现自己的 EventCounter。因此,假设我正在.NET 中开发内存缓存客户端,通过 EventCounters 公开获取/设置指标是否有意义?另外,我注意到Well-known EventCounters 都没有使用动态度量名称,例如memcache-{myMemcacheClusterName}-gets。不推荐吗?
【问题讨论】:
标签:
c#
.net
open-telemetry
【解决方案1】:
假设我正在.NET 中开发内存缓存客户端,通过 EventCounters 公开获取/设置指标是否有意义?
当然,您当然可以选择 App Metrics 之类的东西,但 EventCounters 的好处是它是 .Net 框架的一部分,因此不需要外部依赖项。编写库时很有吸引力的东西。
另外,我注意到 Well-known EventCounters 都没有使用动态指标名称,例如 memcache-{myMemcacheClusterName}-gets。不推荐吗?
动态计数器很难发现和记录(有哪些可能的值)。不过,它曾经是包含附加信息的唯一方法。也就是说,直到引入元数据。现在您可以使用AddMetadata() 向计数器添加其他信息:
EventCounter someCounter = new EventCounter(nameof(someCounter), this);
someCounter.AddMetadata("Environment", "Production");
someCounter.AddMetadata("SomeKey", "SomeValue");