我有一个在Linux上运行的Java应用程序,可以调用主机(CICS)。我的目标是通过唯一的GUIDs来跟踪我的事务在不同系统中所采取的路径,并收集痕迹并显示在APM解决方案中。我希望APM供应商不可知。
基本上,我正在寻找在大型机上实现APM供应商不可知的追踪方式。
这取决于你感兴趣的是什么,真的。
你是想捕捉特定的时间信息,还是给跨度添加只有在主机进程中才有的属性?在这种情况下,是的,你需要在某个地方得到这些数据,而且为CICS写一个OpenTelemetry SDK实现可能很棘手。然而,你可能不必这样做--如果你关心的信息可以来自响应中的侧通道,你可以在你的Java服务处理响应时将该信息添加到调用跨度中。
如果主机服务是你的请求的终端点(也就是说,在请求进入主机后,没有其他有趣的操作发生),那么你可能不需要向它传播上下文,只需要把对主机的请求包裹在一个跨度中,以表示在那里所做的工作、这些调用的结果等。
如果主机是 不 你的请求的终端点,可以考虑在主机的传入传出请求之间放置一个跟踪代理。这个代理可以持有跟踪上下文,并将其传播给下一个服务,你只需要它拦截传入传出的请求,并有一个查找表,将正确的跟踪上下文与正确的请求关联起来。
希望对大家有所帮助!