---
title: Install the Go agent in GAE flexible environment
source: https://docs.newrelic.com/docs/apm/agents/go-agent/installation/install-go-agent-gae-flexible-environment
---

With our [Go agent](https://docs.newrelic.com/docs/agents/go-agent/get-started/introduction-new-relic-go), you can monitor applications that reside in the [Google App Engine (GAE) flexible environment](https://cloud.google.com/appengine/docs/flexible/go/). 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 [APM](https://docs.newrelic.com/docs/apm/new-relic-apm/getting-started/introduction-new-relic-apm) and [browser monitoring](https://docs.newrelic.com/docs/browser/new-relic-browser/getting-started/introduction-new-relic-browser).

Here we explain how to add New Relic to your GAE flex app by configuring a [custom runtime](https://cloud.google.com/appengine/docs/flexible/custom-runtimes/about-custom-runtimes), and give an example of deploying a Go app with Docker.

> #### ⚠️ IMPORTANT
>
> The Go agent can run in a GAE flexible environment using a custom runtime. Due to limitations of other environments, don't use the GAE standard environment or Google App Engine's ["native mode"](https://docs.newrelic.com/docs/accounts-partnerships/partnerships/google-cloud-platform-gcp/google-app-engine-environment#native-mode) installation.

## Build a custom runtime using Docker [#build-runtime]

See [Google's documentation for building custom runtimes](https://cloud.google.com/appengine/docs/flexible/custom-runtimes/build). This example describes how to add New Relic to your GAE flex app by installing the Go agent, building a custom Go runtime for Docker, and deploying a golang application.

For more information about deploying and configuring your Go app in the GAE flexible environment, see:

-   [Google App Engine's documentation](https://cloud.google.com/appengine/docs/flexible/go/) for Go
-   [Google App Engine's tutorials](https://cloud.google.com/appengine/docs/flexible/go/tutorials) to deploy a Go app

**1. Set up the GAE project and install dependencies**

1.  Follow standard procedures to [install the Go agent](https://docs.newrelic.com/docs/agents/go-agent/get-started/get-new-relic-go) for your specific app server, including your [license key](https://docs.newrelic.com/docs/apis/intro-apis/new-relic-api-keys/#ingest-license-key).
2.  Follow [Google App Engine procedures for Go](https://cloud.google.com/appengine/docs/flexible/go/quickstart) to create a new Cloud Platform project, create an App Engine application, download and install [git](https://git-scm.com), and complete other prerequisites for the [Google Cloud SDK](https://cloud.google.com/sdk/docs/).

    The Google Cloud SDK 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:

````yaml
runtime: custom
env: flex
```

````

**3. Configure a Dockerfile**

The [Dockerfile](http://docs.docker.com/engine/reference/builder/) defines the Docker image to be built and is required for a GAE flexible environment app. The following Dockerfile example code defines the golang version used.

````dockerfile
FROM golang:1.8-onbuild
CMD go run main.go
```

````

**4. Build a Docker image**

To build the Docker image, run the following command. Be sure to include the period at the end of the code, to indicate the current directory contains the build files.

````bash
docker build --rm -t Docker-image-name .
```

````

**5. Deploy Docker image to initialized GAE flexible environment**

1.  To deploy your Docker image to your [initialized GAE flexible environment](https://cloud.google.com/sdk/docs/initializing), run the following command:

    ```bash
    gcloud --project go-app-name app deploy
    ```
2.  Wait until the deployment completes.
3.  To view your GAE flex app data in New Relic, go to the [APM **Summary** page](https://docs.newrelic.com/docs/apm/applications-menu/monitoring/apm-overview-page).

## Recommendation: Disable health checks [#health-checks]

Google App Engine sends [periodic health check requests](https://cloud.google.com/appengine/docs/flexible/go/configuring-your-app-with-app-yaml#health_checks) 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:

```yaml
health_check:
  enable_health_check: False
```

## Get agent troubleshooting logs from GAE [#agent-logs]

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 [GAE's documentation for debugging an instance](https://cloud.google.com/appengine/docs/flexible/go/debugging-an-instance).
-   To redirect New Relic Go agent logs to [Stackdriver](http://cloud.google.com/logging/docs/view/logs_viewer_v2) in the [Cloud Platform Console](https://cloud.google.com/compute/docs/console), change the `newrelic.yml` file to:

    ```yaml
    log_file_name: STDOUT
    ```
