With APM's Java agent, you can monitor applications that reside in the Google App Engine (GAE) flexible environment. Adding New Relic 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 , , and dashboards.
This document explains how to add New Relic to your GAE flex app by configuring a custom runtime, and gives an example of deploying a Tomcat app with Docker.
Important
The New Relic Java agent can run in a GAE flexible environment using a custom runtime. Due to limitations of other environments, do not use the GAE standard environment or Google App Engine's "native mode" installation.
Build a custom runtime using Docker
See Google's documentation for building custom runtimes. There are many ways to build a custom runtime that contains the New Relic Java agent (for example, using Tomcat). In general, to build a custom runtime:
- Set up your application and install necessary GAE-related dependencies for custom runtimes. Include the New Relic Java agent in the project.
- Configure Maven or Gradle as applicable.
- Configure the
app.yaml
file. - Configure the Dockerfile.
- Build the Docker image.
- Deploy the Docker image to the initialized GAE flexible environment.
- Recommendation: Disable GAE health checks.
For more information about deploying and configuring your Java app in the GAE flexible environment, see:
- Google App Engine's documentation for Java
- Google App Engine's tutorials to deploy a Java app
GAE flex example with Tomcat
This example describes how to add New Relic to your GAE flex app by installing the New Relic Java agent, building a custom runtime, and deploying an application WAR to Tomcat. Be sure to install the Java agent as necessary for your specific app server.
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. To avoid adding additional instrumentation overhead and skewing throughput for your application, we recommend that you disable the health check.
Recommendation: Configure your app.yaml
to disable health checks by adding:
health_check: enable_health_check: False
Get Java 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 New Relic Java agent logs to Stackdriver in the Cloud Platform Console, change the
newrelic.yml
file to:log_file_name: STDOUTTo view the logs, use the Cloud Platform Console's Log Viewer.