Hi,
We are using Dynatrace on a Java backend server that calls some external system through a java.net.Socket connection (which is a legacy system that has no dynatrace agent).
When I consult the purepaths that are produced, the Transaction Flow indicates that 100% of the time is spent on my java machine is not correct since most of the time is spent in the legacy system.
Is there a way to configure in the system profile, the fact that a call to the class java.net.Socket produces time that is spent on another tier ?
Thanks,
Here is one screenshot that shows the elements of the purepath :
Answer by Christian S. ·
basically that would be possible.
however, it would make no sense at all to show each single socket read/write as one external call. so we would have to collect multiple reads/writes and maybe aggregate based on destination IP or similar. and then we would have to make sure that we don't count times twice e.g. on socket and on web service. so there'd be a need for some kind of correlation and so forth ...
so it may be some future release feature, but no trivial for sure.
and maybe we also find another (e.g. network based) approach ...
best,
Christian
Answer by Nicolas C. ·
Thanks for the answer, I thought that dynatrace could be able to identify that because a use of a Socket means by definition an external call and the time reading the stream from the socket is the time of the external system.
It could be perhaps an evolution for a next release of dynatrace.
Nicolas,
Nicolas,
actually reading from the socket doesn't necessarily mean time spent in the "other system". It could be a resource bottleneck in the calling system, in the called system or even in between. As Christian described the most accurate measurement you can get without having an agent in the called system and without ADK tagging is to define sensors on methods that are actually calling the external system and either use the API time or the execution time of that method as an indicator.
Maybe in your case placing a sensor on fr.msa.agora.s44accesgi.metier.gestionindividu.service.GestionIndividuImpl.* makes sense, as it looks like there is one or more services beeing called that you maybe want to distinguish.
Reinhard
Answer by Christian S. ·
hi Nicolas,
the feature 'external calls' only works for calls that we are able to detect (web services, HTTP calls, remoting, ...).
however, in your case it seems to be plain and proprietary java socket communication. in this case dynaTrace is not able to detect such calls.
so if you want to get to the time spent in this tier, i currently see 2 options:
best,
Christian
Answer by Andreas G. ·
Hi Nicolas
Which version of dynaTrace do you use? With dynaTrace 4.2 we introduced a feature that allows visualizing "External Calls" in the transaction flow.
Also - could you export one of these PurePaths so that we can have a closer look at it?
Thanks
I use dynatrace 4.2. Here is the attached : dynatrace_socket_legacy_time.dts
The feature you mention : an "External Calls" box in the transaction flow is exactly what I need. So perhaps there is an option to active or display it ?
JANUARY 15, 3:00 PM GMT / 10:00 AM ET