• Log inFree account

Browser monitoring and the Python agent

With the Python agent, you can add browser monitoring to your webpages either automatically or manually. To enable browser monitoring in the user interface, follow the procedures to install the browser agent. Then follow the procedures in this section to set up the Python agent.

To use the browser agent with your Python agent, ensure you have the latest release. For more information, see the agent installation instructions.

Support for automatic instrumentation

The Python agent only supports automatic instrumentation for WSGI applications that are hosted directly on a dedicated WSGI server with a native WSGI interface, and where the WSGI application returns the HTML page response via an iterable/generator.

Automatic instrumentation requires a dedicated WSGI server.

  • WSGI servers such as Apache/mod_wsgi, gunicorn and uWSGI are supported.
  • Using WSGI adapters on top of either the Tornado or Twisted frameworks is not supported.

The Python agent does not support insertion of instrumentation when using the write() callback returned from the WSGI start_response() function to write back the HTML page response. For more information about requirements for automatic instrumentation, see Troubleshooting browser instrumentation in Python.

Use automatic instrumentation

The Python agent can automatically add the browser JavaScript agent to any HTML page responses. For WSGI applications, the agent uses a WSGI middleware installed into the request pipeline. Since the middleware is at WSGI level, automatic instrumentation should work for any WSGI application regardless of the web framework you are using, including popular Python web frameworks such as Django, Flask and Pyramid.

Disable instrumentation for specific pages

If you want to use automatic instrumentation, but have an HTML page response that you do not want instrumented, you can disable instrumentation for that request. Add this Python agent API call into the code for that request handler:

newrelic.agent.disable_browser_autorum()

If you are using a WSGI server that allows per-request configuration, such as Apache/mod_wsgi, you can also disable automatic instrumentation by setting the newrelic.disable_browser_autorum key for that request in the WSGI environ dictionary passed into your monitored application.

For example, if using Apache/mod_wsgi, you could disable automatic instrumentation by filtering on the URL:

<Location /login>
SetEnv newrelic.disable_browser_autorum true
</Location>

Manually enable browser monitoring for specific pages

You can manually add browser instrumentation to specific pages. This is useful, for example, if automatic instrumentation is not possible for your application, or if you want to collect browser agent data for only some pages.

The calls in this procedure must be placed on every request you want to monitor. You cannot call these functions once at global scope and cache the result for later use.

  1. Disable automatic instrumentation: In the newrelic.ini file, set browser_monitoring.auto_instrument to false.

  2. Restart your application.

  3. Place these calls into the request handler of every page you want to monitor:

    import newrelic.agent
    header = newrelic.agent.get_browser_timing_header()
    footer = newrelic.agent.get_browser_timing_footer()
  4. Pass the header and footer variables to the HTML response.

  5. On the corresponding page, insert the header variable in the <head> element. Place the header variable after any charset properties or any meta tags for http-equiv with a value of X-UA-Compatible.

  6. Insert the footer variable before the end of the <body> element.

Wait a few minutes, then check your browser monitoring data. If no data appears after waiting a few minutes, see Troubleshooting browser instrumentation in Python.

Copyright © 2022 New Relic Inc.