当前位置: 首页 > 知识库问答 >
问题:

Java低延迟应用程序的Jaeger集成

秦联
2023-03-14

我遇到的大多数集成都使用java-agent将跟踪推送到中央收集器,然后可以在Jaeger中查看跟踪。但是在我的例子中,我不能使用java代理,因此我决定使用自定义跟踪api,这似乎很好,并且有很多这样的例子。

通过设计,我的低延迟应用程序限制了我与外部组件/端口的任何连接,因此我也试图避免将跟踪/跨距推送到本地Jaeger代理或收集器endpoint,而是通过LogReporter记录跟踪。

除此之外,我想知道如何构建一个管道,将跟踪日志推送到Jaeger。日志本身作为流在AWS cloudwatch中,所以我想如果我使用一个无服务器Lambda来订阅和解析这些跟踪日志事件,那么我可以自己使用HTTP/API/Tracesendpoint将它们发送给Jaeger(详细信息不多,但在某处读到它以某种形式存在)。

我的问题是,这是正确的方法,还是有更好的机制可以做到这一点。因为我不知道这些痕迹本身是否可以以这种方式重放给收集器。也不确定endpoint接受什么格式,因为我没有看到很多关于这方面的文档或示例。

目标是使我的应用程序“不”通过推事件连接到任何外部监控基础设施,所以如果有任何更好的方法实现Jaeger集成,我希望听到。另外,如果其他API(如OpenTracing、OpenCensus或甚至最新的OpenTelemetry)可以帮助实现这一点,我也很乐意。

谢谢

共有1个答案

顾跃
2023-03-14

我不确定您要查找的内容现在是否存在,但您可以通过OpenTelemetry来实现这一点,方法是通过LogReporter编写跟踪,然后使用无服务器函数读取cloudwatch流并将其发送给Jaeger(或发送给OpenTelemetry收集器,该收集器将它们发送给Jaeger)。您还可以为OpenTelemetry收集器编写一个自定义插件,将cloudwatch流读入OTLP,然后将其导出到收集器支持的任何endpoint。

 类似资料:
  • 我在java应用程序中使用log4j2。就日志功能而言,一切都很好,但是在启动应用程序时,它似乎会导致非常明显的延迟。 我已经把代码剥离到基本的 如果不包括log4j2,那么当我运行应用程序时,控制台中就会出现“TEST”,包括构建路径中的log4j2代码和文件夹,这会导致测试出现时间延迟40-50秒。 log4j2.xml中设置为跟踪的标志 谢谢你的帮助,亚历克西斯

  • 问题内容: 在以下情况下,实现C ++ / Java IPC的最佳方法是什么? 我有两个程序需要相互通信,一个是用C ++编写的,另一个是用Java编写的。两者都在同一台计算机上运行。 程序相互发送消息。消息通常很短(少于几百个字节),但是大小可能为100KB或更大。 不需要确认消息(即不需要像HTTP这样的请求/响应模型)。例如,C 程序向Java程序发送一条消息,而Java程序可以在以后的某个

  • 问题内容: 我正在寻找有关如何在低延迟至关重要的环境中最大程度地调整年轻一代(相对于老一代)的争论。 我自己的测试倾向于表明,当年轻一代相当大时(例如-XX:NewRatio <3),延迟是最低的,但是我不能直觉地认为年轻一代越大,进行垃圾处理的时间就越多收集。 该应用程序在Linux 64位jdk 6上运行。 内存使用量大约是启动时加载的50万兆个长寿命对象(=数据缓存),并且从那里仅创建(很多

  • 问题内容: 我倾向于将Hibernate与Spring框架结合使用,它具有声明式事务划分功能(例如@Transactional)。 众所周知,hibernate试图尽可能做到 非侵入性 和 透明性 ,但是事实证明,在使用关系时这 更具挑战性 。 我看到了许多具有不同透明度的设计方案。 使关系不延迟加载(例如, 这违反了整个延迟加载的想法。 使用初始化初始化集合 这意味着与DAO的耦合较高 尽管我们

  • 我想使用Flink流媒体以低延迟处理市场数据( 我有一组计算,每个都订阅三个流:缓慢移动的参数数据、股票价格和汇率。 例如。 Params(缓慢滴答:每天一次或两次): 资源(每秒多次滴答声): fx(每秒多次滴答声): 每当任何股票、外汇汇率或参数数据发生变化时,我都想立即计算结果并将其输出为新流。这在逻辑上可以表示为连接: 例如选择价格=(params.strike-asset.spot)*f

  • 问题内容: 我正在尝试使用新的React Lazy和Suspense创建后备加载组件。这很好用,但后备时间仅显示几毫秒。有没有办法增加额外的延迟或最短时间,因此我可以在渲染下一个组件之前显示该组件的动画? 现在懒导入 等待组件: 我可以做这样的事情吗? 问题答案: 函数应该返回对象的承诺,该对象由具有默认导出功能的模块返回。不会返回承诺,也不能那样使用。尽管任意承诺可以: 如果目标是提供 最小的