The New Relic Python Agent is a powerful tool for monitoring and performance optimization. It provides detailed insights into your application's performance, helping you identify bottlenecks and areas for improvement.
With the New Relic Python Agent, you can monitor your application's performance in real-time, receiving alerts and notifications when issues arise. This allows you to quickly respond to problems and minimize downtime.
The agent is easy to set up and integrate with your existing infrastructure, requiring minimal configuration and coding.
Installation and Setup
To install the New Relic Python agent, your system must meet the system requirements and you need to have a New Relic account. Make sure your system meets the requirements before proceeding.
You can install the agent quickly and easily by following these steps: download and install the Python package, create a config file, and integrate the Python agent with your application. This will work for most setups.
If you're using a supported web framework like Django, WSGI, or Gunicorn, installation is even easier. You can install the agent using the standard package manager for your system.
Here are the general steps to install the New Relic Python agent:
- Download and install the Python package.
- Create config file.
- Integrate the Python agent with your application.
Alternatively, you can define and integrate data sources into an existing monitored web application by listing them in the agent configuration file. This involves adding an additional section in the agent configuration file for each data source with the prefix "data-source::".
Install the Agent
To install the agent, you'll need to meet the system requirements and have a New Relic account. Make sure your system meets the necessary specs before proceeding.
You'll be happy to know that New Relic supports popular web frameworks like Django, WSGI, and Gunicorn. This means installation is a breeze if you're using one of these frameworks.
If you're not using a supported framework, don't worry – you can still install the agent, but it might require some extra work.
Here are the simple steps to get started:
- Download and install the Python package.
- Create a config file.
- Integrate the Python agent with your application.
That's it! With these easy steps, you'll be well on your way to installing the agent and getting started with New Relic.
Setup from Config File
To define and integrate data sources into an existing monitored web application, you can list them in the agent configuration file. This entails adding an additional section in the agent configuration file for each data source with the prefix "data-source::".
You should not perform separate registration for the same data source using the register_data_source() function in your application code or in the module defining the data source. This can result in two instances of the data source being registered.
If you need to provide specific settings for a data source, you can create a separate section in the agent configuration file and refer to the section name in the settings value in the data source configuration.
Data source settings supplied via the configuration file will always be passed as string values, so even when using register_data_source() with application code, it's recommended to use strings for setting values.
Here are some key considerations for registering data sources from the agent configuration file:
Monitoring and Performance
With the New Relic Python agent, you can monitor your app's performance and identify areas for improvement. You can view the big picture of your app through the Summary page, which provides a high-level summary of your app's Apdex (user satisfaction) and other key metrics.
The agent also allows you to drill down into performance details, examining code-level transaction traces, database query traces, and error traces to understand where issues are occurring. This level of detail is invaluable for troubleshooting and optimizing your app's performance.
To make troubleshooting even easier, the agent brings your logs and application's data together, allowing you to see log messages related to your errors and traces directly in your app's UI. This saves time and reduces the complexity of debugging.
Monitor App Performance
Monitoring your app's performance is crucial to ensuring a smooth user experience. You can view the big picture of your app with the Summary page, which gives you a high-level summary of your app.
Apdex is a key metric to track, as it measures user satisfaction. You can enable distributed tracing to see activity across an architecture with many services.
To drill down into performance details, examine code-level transaction traces, database query traces, and error traces. This will help you identify areas where your app needs improvement.
You can also use thread profiler sessions to see detailed stack traces of sampled threads. This is especially useful when troubleshooting complex issues.
Here are some key features to help you monitor your app's performance:
- Monitor your app's Apdex (user satisfaction)
- Enable distributed tracing
- Install Infrastructure monitoring
- Track key transactions specific to your business
- Create custom dashboards for important metrics
- Alert your team when an error or problem occurs before it affects your users
By using these features, you'll be able to identify and fix issues before they impact your users.
Monitor Background Tasks
Monitoring background tasks is a crucial aspect of ensuring your application's performance. The Python agent allows you to monitor non-web scripts, worker processes, tasks, and functions.
You can manually "wrap" any function you want to monitor, which is a key difference from the standard integration process used for web apps. This process is described in the article section on non-web tasks and processes.
Monitoring non-web transactions is similar to monitoring web apps, but with a manual wrapping step involved. This allows you to track the performance of your application's background tasks.
Troubleshooting and Debugging
Your data should appear in the APM UI within five minutes after completing the install process.
If no data appears, follow these troubleshooting steps. It's a good idea to test that the package is installed correctly and that it can contact New Relic's data collector service if you experience issues when installing or running the Python agent on a new host.
For other problems, see the full list of troubleshooting documentation.
Troubleshooting
Troubleshooting is an essential part of the debugging process. If your data doesn't appear in the APM UI within five minutes after completing the install process, don't worry.
You can use the troubleshooting resources provided to help resolve the issue. This might involve following specific troubleshooting steps if no data appears.
Test that the package is installed correctly and that it can contact New Relic's data collector service if you experience issues when installing or running the Python agent on a new host.
For other problems, see the full list of troubleshooting documentation for further assistance.
Bug Fixes
In this release of the Python agent, several bugs have been fixed to improve stability and performance. The log attribute dropping issue in NewRelicContextFormatter has been resolved.
A bug was fixed when specifying processors in structlog. This issue has been addressed to ensure that structlog functions correctly.
The NewRelicLogForwardingHandler has been updated to support dictionary type logs and formatters. This means you can now log complex data structures and use custom log formats.
Here are the specific bug fixes:
- Fix log attribute dropping in NewRelicContextFormatter
- Fix a bug when specifying processors in structlog
- Support dictionary type logs in NewRelicLogForwardingHandler
- Support logging formatters in NewRelicLogForwardingHandler
Deprecations
As you start troubleshooting and debugging with the New Relic Python agent, it's essential to be aware of the deprecated APIs and features. The agent has deprecated the ObjectWrapper API and get_browser_timing_footer API.
This means you should start exploring alternative solutions for these features. The ObjectWrapper API is no longer supported, and using it may lead to unexpected behavior or errors.
Here's a summary of the deprecated features:
- ObjectWrapper API
- get_browser_timing_footer API
Keep in mind that while these features are deprecated, they may still be used in older code or integrations. Be sure to update your code to use the latest and recommended APIs to ensure smooth performance and compatibility.
Changes
Troubleshooting and Debugging is a crucial part of any developer's workflow. Changes to the Python agent have improved performance and fixed issues that were causing problems for users.
The internal wrapt has been upgraded to v1.16.0, which is a significant improvement. This upgrade allows the agent to work more efficiently with Python 3.12 support.
A bug in the structlog CallsiteParameter processor has been fixed, ensuring that call site parameter values are accurate. This fix is a relief for developers who were experiencing issues with incorrect values.
A new configuration option, package_reporting.enabled, has been added to the Python agent. This option allows users to disable capturing package and version information at agent startup, which can be a game-changer for applications with a high number of packages.
The package version performance regression that was introduced in 8.10.1 has been fixed, which means that CPU usage and startup time will be significantly improved. This is a major win for developers who were experiencing performance issues.
Caching has been added to get_package_version to address performance issues, making the Python agent more efficient. This is a great example of how caching can improve performance.
The generator and async generator instrumentation issue in Redis.asyncio has been fixed, which is a significant improvement for developers who were experiencing issues with instrumentation.
Sources
- https://docs.newrelic.com/docs/apm/agents/python-agent/getting-started/introduction-new-relic-python/
- https://docs.newrelic.com/docs/apm/agents/python-agent/getting-started/instrumented-python-packages/
- https://docs.newrelic.com/docs/release-notes/agent-release-notes/python-release-notes/2/
- https://newrelic.com/blog/nerdlog/unlock-observability-power-ups-using-new-relics-python-agent-api
- https://docs.newrelic.com/docs/apm/agents/python-agent/supported-features/python-custom-metrics/
Featured Images: pexels.com