使用 Open Telemetry Collector 代理进行字节码检测

问题描述

我正在探索开放遥测收集器项目,以及它如何与容器化 .NET Core 应用(或任何其他与此相关的应用)一起使用。

目前我们在我工作的公司使用 DynaTrace,这需要在主机上安装 DynaTrace 'OneAgent' 代理。 DynaTrace 代理以某种方式挂接到 dotnet CLR 并执行字节码/MSIL 检测。基本上,这种方法允许我们将 APM 数据捕获到 DynaTrace,而无需在我们的应用程序中进行任何代码更改。

将此与开放遥测方法进行对比,后者(据我所知)需要将额外的 (nuget) 包安装到我们想要检测的服务中。在 .NET Core 领域,我怀疑这是使用基于 DiagnosticSource 的检测,我将其描述为一种 AOP。也就是说,它主要是自动的并集成到各种 .NET 库/框架中,例如 ASP.NET、实体框架等;所以唯一的代码变化是; a) 安装 Open Telemetry nuget 包,b) 一些基本的 Startup.cs 配置,以及 c) 如果/在需要时可选地添加额外的跨度。这是最少的代码,但它不像 DynaTrace 方法那样没有代码。我还假设跨度的粒度比 DynaTrace 使用的字节码/MSIL 检测方法要复杂得多。

WRT 开放遥测收集器;我真的很喜欢这样一个事实,即我们可以配置导出器将检测数据发送到任何受支持的第三方监控解决方案(例如 DataDog、Elastic、Kafka 等),而无需安装任何专有代理。 IMO 这种方法意味着我们可以更轻松地更改可能使用的监控服务,从而缓解供应商锁定。

我希望我能找到一种方法来两全其美;

  1. 我想使用 Open Telemerty Collecter 代理来缓解供应商锁定。通过更改底层监控解决方案,我们可以通过切换到更便宜的监控解决方案来潜在地节省数十万美元(或者至少切换的威胁是真实的,我们能够协商更便宜的成本)!
  2. 我想使用字节码/MSIL 检测方法,这样我就不必在我的应用中进行任何代码/配置更改。

这可能吗?

我正在研究 DataDog 代理的工作原理 here。看起来这可能是与 DynaTrace 类似的方法。对于 DataDog,看起来您需要在应用程序容器中设置一些 CLR 环境变量 - 大概这扩展了 CLR 以将字节码/MSIL 检测数据发送到 DataDog 代理(作为 sidecar 或其他方式运行)...

enter image description here

我们是否可以使用这种 DataDog 方法,但不是将检测数据发送到 DataDog 代理,而是将其发送到 Open Telemerty Collecter 代理?从技术上讲,如果我们愿意(即使用 DataDog exporter),Open Telemerty Collecter 代理仍然可以发送到 DataDog,但至少我们可以使用这种方法缓解供应商锁定。想法...

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...