[英]How to expose .NET well known EventCounters to Open Telemetry
[英]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.