With the Python agent, you can monitor applications that reside in the Google App Engine (GAE) flexible environment. Adding agent data to your GAE flex app gives you insight into the health and performance of your app and extends GAE with metrics you can view in New Relic One.
This document explains how to add agent data to your GAE flex app using either of these methods:
- Google App Engine's "native mode" installation with a standard GAE runtime
- Docker installation using a custom runtime
Deploy using GAE's native support
When using Google App Engine "native mode" installation, you provide your app code and an app.yaml
file. Google App Engine then deploys to a standard prebuilt Docker image.
For example, to deploy with native support for a Flask/Django app:
- Follow standard procedures to install the Python agent, including your license key.
- Set the
NEW_RELIC_CONFIG_FILE
as an environment variable pointing tonewrelic.ini
.
Once the agent and configuration file have been installed, the Python agent can automatically monitor applications that reside in the GAE flexible environment. Wait until the deployment completes, then view your GAE flex app data in the APM Summary page.
Build a custom runtime using Docker
See Google's documentation for building custom runtimes. This example describes how to add agent data to your GAE flex app by building a custom runtime for Docker.
For more information about deploying and configuring your Node.js app in the GAE flexible environment, see:
- Our GAE flex examples on Github for Python
- Google App Engine's documentation for Python
- Google App Engine's tutorials to deploy a Python app
- 1. Set up the GAE project and install dependencies
-
When building a custom runtime using Docker, set the
NEW_RELIC_CONFIG_FILE
as an environment variable pointing to the Dockerfile instead of to your Python app'snewrelic.ini
.- Follow standard procedures to install the Python agent, including your license key.
- Follow Google App Engine procedures Python to create a Google Cloud Platform project, create an App Engine application, and complete other prerequisites for the Google Cloud SDK.
The Google Cloud SDK also provides the
gcloud
command line tool to manage and deploy GAE apps. - 2. Configure your app.yaml
-
The
app.yaml
configuration file is required for a GAE flexible environment app with a custom runtime. At a minimum, make sure it contains:env: flex runtime: custom
- 3. Configure a Dockerfile
-
The Dockerfile defines the Docker image to be built and is required for a GAE flexible environment app. The following Dockerfile example shows the Python agent installed for an application served with gunicorn.
These procedures are similar to the Python quick start guide. The Dockerfile will contain customer-specific code, including Python version, installation requirements, etc).
# [START dockerfile] FROM gcr.io/google_appengine/python # Install the fortunes binary from the debian repositories. RUN apt-get update && apt-get install -y fortunes # Optional: Change the -p argument to use Python 2.7. RUN virtualenv /env -p python3.5 # Set virtualenv environment variables. This is equivalent to running # source /env/bin/activate. ENV VIRTUAL_ENV /env ENV PATH /env/bin:$PATH ADD requirements.txt /app/ RUN pip install -r requirements.txt ADD . /app/ CMD NEW_RELIC_CONFIG_FILE=newrelic.ini newrelic-admin run-program gunicorn -b :$PORT main:app # [END dockerfile]
- 4. Deploy Docker image to initialized GAE flexible environment
-
-
To deploy your Docker image to your initialized GAE flexible environment, run the following command:
gcloud app deploy
- Wait until the deployment completes.
-
To open the app in the browser, run the following command:
gcloud app browse
- To view your GAE flex app data, go to the APM Summary page.
-
Recommendation: Disable health checks
Google App Engine sends periodic health check requests to confirm that an instance has been successfully deployed, and to check that a running instance maintains a healthy status. A health check is an HTTP request to the URL /_ah/health
.
If you create a custom runtime, your app must be able to handle a large number of health check requests. Otherwise, your app data may not display correctly in APM.
Recommendation: Configure your app.yaml
to disable health checks by adding:
health_check: enable_health_check: False
Get agent troubleshooting logs from GAE
Use these resources to troubleshoot your GAE flex environment app:
- To connect to the GAE instance and start a shell in the Docker container running your code, see Debugging an instance.
-
To redirect Python agent logs to Stackdriver in the Cloud Platform Console, add the following statement to the
newrelic.ini
configuration:log_file = stderr
- To view the logs, use the Cloud Platform Console's Log Viewer.