Instrumenting Python App with New Relic Agent
This tutorial demonstrates how to integrate the New Relic monitoring agent in a Python application running on Apcera. To complete this tutorial you will need to do the following:
- Obtain a New Relic account and license key.
- Install the New Relic Python agent on your local machine (
pip install newrelic, for example).
- Clone the Apcera Platform sample apps repository. This tutorial uses the example-python-wsgi application from that repository.
Steps to integrate New Relic agent:
Open a terminal window and
example-python-wsgisample app directory:
newrelicto the list of requirements, for example:
Flask==0.9 Jinja2==2.6 Werkzeug==0.8.3 wsgiref==0.1.2 gunicorn==0.14.6 newrelic
newrelic-adminutility create a New Relic configuration file for your application, passing it your license key, for example:
newrelic-admin generate-config <LICENSE-KEY> newrelic.ini
This will create a file name named newrelic.ini in the app directory. See Creating the configuration file for more information.
Modify app.py in the sample app folder to import the
newrelic.agentpackage and to initialize the agent, as shown below:
# Add newrelic.agent to imports: import os, newrelic.agent from flask import Flask app = Flask(__name__) # Initialize agent: newrelic.agent.initialize('/app/newrelic.ini') ...
Save your changes to app.py.
Use APC to create a new Apcera application from the Python app. The
--allow-egressoption is necessary to allow the New Relic monitoring agent to communicate with the New Relic servers:
apc app create newrelic-agent --allow-egress
See Binding to an outside network for more information about accessing network services outside of Apcera.
Once the application has been created, start it with the following command:
apc app start newrelic-agent
Once the application has started successfully, open it at the indicated URL (for example, "App should be accessible at "http://newrelic-agent.username.sandbox.try.apcera.net"). Reload the web page repeatedly in the browser to generate some data and locate your application on the New Relic dashboard. After a few minutes data should begin appearing in the dashboard. If not, see Troubleshooting Tips.
If no data appears in the New Relic dashboard, you can enable logging on the New Relic agent and view the log output. You can configure the agent to log to a file or to standard error (
stderr) or standard out (
stdout). A benefit of logging to one of the standard streams is that those log statements can easily be viewed using APC.
Steps to enable and view New Relic agent logs:
- Modify newrelic.ini to enable logging to a file or standard out.
Re-deploy the application with the configuration change:
apc app deploy newrelic-agent
If you configured the agent to log items to
stdout), you can tail the application's log file using the following APC command:
apc app logs newrelic-agent [stderr] 2015-08-18 17:34:43  [DEBUG] GET / [stdout] 2015-08-18 17:34:43,148 (6/NR-Activate-Session/Test App) newrelic.core.data_collector INFO - Successfully registered New Relic Python agent where app_name='Test App', pid=6, redirect_host=u'collector-120.newrelic.com' and agent_run_id=u'33510150964740125', in 0.55 seconds. [stdout] 2015-08-18 17:34:43,149 (6/NR-Activate-Session/Test App) newrelic.core.data_collector INFO - Reporting to: https://rpm.newrelic.com/accounts/1067042/applications/7802189 ...
If you instead configured the agent to log items to a file you can SSH into the instance to view the file's contents. To do this, you first need to enable SSH access on your application:
apc app update newrelic-agent --allow-ssh
Restart the job when prompted by APC, and use the following commands to SSH into the instance and view the generated log file (/tmp/newrelic-python-agent.log, by default).
apc app connect newrelic-agent root@ip-169-254-0-7:/# cat /tmp/newrelic-python-agent.log 2015-08-18 20:01:27,266 (10/MainThread) newrelic.core.agent INFO - New Relic Python Agent (188.8.131.52) 2015-08-18 20:01:27,842 (10/NR-Activate-Session/Test App) newrelic.core.data_collector INFO - Successfully registered New Relic Python agent where app_name='Test App', pid=10, redirect_host=u'collector-120.newrelic.com' and agent_run_id=u'33510150965268109', in 0.54 seconds. 2015-08-18 20:01:27,842 (10/NR-Activate-Session/Test App) newrelic.core.data_collector INFO - Reporting to: https://rpm.newrelic.com/accounts/1067042/applications/7802189