繁体   English   中英

EventCounters 是从 .NET 库中公开指标的标准方法吗?

[英]Are EventCounters the standard way to expose metrics from .NET libraries?

由于 .NET Core 3,.NET SDK 通过EventCounters公开指标。 也可以实现自己的 EventCounter。 因此,假设我正在 .NET 中开发 memcache 客户端,通过 EventCounters 公开获取/设置指标是否有意义? 另外,我注意到Well-known EventCounters都没有使用动态指标名称,例如memcache-{myMemcacheClusterName}-gets 不推荐吗?

因此,假设我正在 .NET 中开发 memcache 客户端,通过 EventCounters 公开获取/设置指标是否有意义?

当然,您当然可以使用 go 来获取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");

随着 .NET 6 的发布, System.Diagnostics.Metrics包含了OpenTelemetry Metrics API的官方 .NET 实现。

在这个对话dotnet/designs/pull/211中,我们可以看到 Metrics 现在比 EventCounters 更受欢迎。

我们会建议继续使用 Metrics,但至少在此版本中我们不会弃用事件计数器。

请注意, System.Diagnostics.Metrics适用于 .NET < 6 到 Nuget System.Diagnostics.DiagnosticSource >= 6 这是一个示例: verdie-g/modern-caching/src/ModernCaching/Instrumentation/OpenTelemetryCacheMetrics.cs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM