I have some experience using the App Mon 6.5 and familiar with using DT client and the details i get to see using it. I am curious to know what details we get to see on the client from dockerized microservices? Do i get to see the same depth of details like monitoring a web app running on JBoss or any app servers (PurePath, SQLS, Exceptions )etc ?
Any insight would be of great help.
Solved! Go to Solution.
If you instrument the processes that run inside your containers (e.g. normal java processes), you will get the exact same result from PurePath perspective, and additionally you will see your docker containers as "hosts" in the infrastructure part of Dynatrace.
Actually the dynaTrace demo application "easytravel" is completely dockerized nowadays and shows perfect PurePaths 🙂
I created a simple example to show what I mean:
And in hostview:
And, when I'm already creating screenshots, also normal PurePaths 🙂
One drawback I found when monitoring containers with 6.5 seems the fact that the built-in host monitoring of an agent running inside the container is not aware of any software resource limits imposed on the container itself. Depending on the container orchestration system used (OpenShift/Kubernetes in our specific case) this can be potentially confusing once your container hits its resource limits as the shown host measures (cpu, memory) are those of the underlying host/node and might be far from being exhausted.
This is true, but you can work around that by creating a separate hostgroup in the infrastructure section, where you capture all your docker based servers. there you can set some specific thresholds for the servers to act on...
Another advantage of this is that you than can define the cleanup time of the nodes in case you're using dynamic hostnames (to avoid cluttering your overviews):
Sure, but IMO that's not really a useful workaround from a container monitoring viewpoint. What I would need is an alert when a container is about to reach (or violating) its configured resource limits WITHOUT having to manually configure those as a threshold as they can change quite often.
Also I'm not sure what is considered to be 100% for the CPU usage of a single process running in a container (JVM for example) but I suspect that it would mean the process is using all CPU capacity of the underlying node - which wouldn't be very useful in a properly orchestrated environment as I doubt that could ever happen due to automatic container scheduling as well as enforced (software) limits.