Trace Apache Webserver to Python application

hi Team,

There is a need to trace the Request from Apache WebServer to Python Backend (Zope).

How can we utilize Elastic APM to trace the request from Apache Webserver (entry point), already ZOPE (python backend) we have tracing enabled.

Application Flow :

Apache Webserver -> Zope - Python Nodes -> Backend SQL DB

Apache Webserver am unable to bind/wire it as Elastic APM Agent didn't find suitable.


hi @basepi ,

Appreciate your help here

Typically users don't trace the web server itself. There's no established pattern for "middleware" to trace requests inside of Apache web server. Apache would need to add traceparent headers to be included in a distributed trace.

Instead, if you're looking for the entire user experience, you might consider looking into our RUM (real user monitoring) solution: Performing Real User Monitoring (RUM) with Elastic APM | Elastic Blog

Once RUM is implemented, you'll see the entire distributed trace from the user's browser, through your web server, and into the traces you already have from Zope. Then you can see if there are latency issues between the user's request and your Zope application (which might be web server issues).

We do have a filebeat module which allows for easy collection of Apache logs.

Thanks @basepi

There is a quite bit challenge in implementing Angular < 1.2 with RUM. The Javascript code provided by Elastic APM - RUM does have a problem in running.

So had a thought of tracing using the WebServer.

Having said that, will give a try.

Appreciate your help here.

I don't think we have an easy way to trace the webserver, unfortunately. We rely on having both sides of the webserver traced, and then we get the webserver (the gap between the traces) for free.

hi @basepi ,

Having difficulty in RUM understanding (implementation), some examples and pointers would help.

Unfortunately, I've never used the RUM agent. I would create a new discuss thread in the Elastic Observability: APM section with the rum tag.

Please do help me with some pointers - RUM seems to be bit of confusing to understand