---
title: Ambassador API Gateway
description: Ambassador is an open source, Kubernetes-native API Gateway built on Envoy
breadcrumbs: Docs > Integrations > Ambassador API Gateway
---

# Ambassador API Gateway
Supported OS Integration version1.0.0
## Overview{% #overview %}

Get metrics from [Ambassador](https://www.getambassador.io) in real time to:

- Visualize the performance of your microservices

- Understand the impact of new versions of your services as you use Ambassador to do a canary rollout



## Setup{% #setup %}

Enable DogStatsD on your Agent Daemonset, and set the following environment variable on your Ambassador pod:

```
name: STATSD_HOST
valueFrom:
  fieldRef:    
    fieldPath: status.hostIP
```

With this setup, StatsD metrics are sent to the IP of the host, which redirects traffic to the Agent port 8125.

See [Envoy statistics with StatsD](https://www.getambassador.io/docs/edge-stack/latest/topics/running/statistics/envoy-statsd/) for more information.

You can also send tracing data from Ambassador to Datadog APM. See [Distributed Tracing with Datadog](https://www.getambassador.io/docs/latest/howtos/tracing-datadog/) for more information.

## Data Collected{% #data-collected %}

### Metrics{% #metrics %}

|  |
|  |
| **envoy.listener.downstream\_cx\_total**(count)                          | Total connections*Shown as connection*                                                                 |
| **envoy.listener.downstream\_cx\_destroy**(count)                        | Total destroyed connections*Shown as connection*                                                       |
| **envoy.listener.downstream\_cx\_active**(gauge)                         | Total active connections*Shown as connection*                                                          |
| **envoy.listener.downstream\_cx\_length\_ms**(gauge)                     | Connection length milliseconds*Shown as millisecond*                                                   |
| **envoy.listener\_manager.listener\_added**(count)                       | Total listeners added (either via static config or LDS)*Shown as host*                                 |
| **envoy.listener\_manager.listener\_modified**(count)                    | Total listeners modified (via LDS)*Shown as host*                                                      |
| **envoy.listener\_manager.listener\_removed**(count)                     | Total listeners removed (via LDS)*Shown as host*                                                       |
| **envoy.listener\_manager.listener\_create\_success**(count)             | Total listener objects successfully added to workers*Shown as host*                                    |
| **envoy.listener\_manager.listener\_create\_failure**(count)             | Total failed listener object additions to workers*Shown as host*                                       |
| **envoy.listener\_manager.total\_listeners\_warming**(gauge)             | Number of currently warming listeners*Shown as host*                                                   |
| **envoy.listener\_manager.total\_listeners\_active**(gauge)              | Number of currently active listeners*Shown as host*                                                    |
| **envoy.listener\_manager.total\_listeners\_draining**(gauge)            | Number of currently draining listeners*Shown as host*                                                  |
| **envoy.http.downstream\_cx\_total**(count)                              | Total connections*Shown as connection*                                                                 |
| **envoy.http.downstream\_cx\_ssl\_total**(count)                         | Total TLS connections*Shown as connection*                                                             |
| **envoy.http.downstream\_cx\_http1\_total**(count)                       | Total HTTP/1.1 connections*Shown as connection*                                                        |
| **envoy.http.downstream\_cx\_websocket\_total**(count)                   | Total WebSocket connections*Shown as connection*                                                       |
| **envoy.http.downstream\_cx\_http2\_total**(count)                       | Total HTTP/2 connections*Shown as connection*                                                          |
| **envoy.http.downstream\_cx\_destroy**(count)                            | Total connections destroyed*Shown as connection*                                                       |
| **envoy.http.downstream\_cx\_destroy\_remote**(count)                    | Total connections destroyed due to remote close*Shown as connection*                                   |
| **envoy.http.downstream\_cx\_destroy\_local**(count)                     | Total connections destroyed due to local close*Shown as connection*                                    |
| **envoy.http.downstream\_cx\_destroy\_active\_rq**(count)                | Total connections destroyed with active requests*Shown as connection*                                  |
| **envoy.http.downstream\_cx\_destroy\_local\_active\_rq**(count)         | Total connections destroyed locally with active requests*Shown as connection*                          |
| **envoy.http.downstream\_cx\_destroy\_remote\_active\_rq**(count)        | Total connections destroyed remotely with active requests*Shown as connection*                         |
| **envoy.http.downstream\_cx\_active**(gauge)                             | Total active connections*Shown as connection*                                                          |
| **envoy.http.downstream\_cx\_ssl\_active**(gauge)                        | Total active TLS connections*Shown as connection*                                                      |
| **envoy.http.downstream\_cx\_http1\_active**(gauge)                      | Total active HTTP/1.1 connections*Shown as connection*                                                 |
| **envoy.http.downstream\_cx\_websocket\_active**(gauge)                  | Total active WebSocket connections*Shown as connection*                                                |
| **envoy.http.downstream\_cx\_http2\_active**(gauge)                      | Total active HTTP/2 connections*Shown as connection*                                                   |
| **envoy.http.downstream\_cx\_protocol\_error**(count)                    | Total protocol errors*Shown as error*                                                                  |
| **envoy.http.downstream\_cx\_length\_ms**(gauge)                         | Connection length milliseconds*Shown as millisecond*                                                   |
| **envoy.http.downstream\_cx\_rx\_bytes\_total**(count)                   | Total bytes received*Shown as byte*                                                                    |
| **envoy.http.downstream\_cx\_rx\_bytes\_buffered**(gauge)                | Total received bytes currently buffered*Shown as byte*                                                 |
| **envoy.http.downstream\_cx\_tx\_bytes\_total**(count)                   | Total bytes sent*Shown as byte*                                                                        |
| **envoy.http.downstream\_cx\_tx\_bytes\_buffered**(gauge)                | Total sent bytes currently buffered*Shown as byte*                                                     |
| **envoy.http.downstream\_cx\_drain\_close**(count)                       | Total connections closed due to draining*Shown as connection*                                          |
| **envoy.http.downstream\_cx\_idle\_timeout**(count)                      | Total connections closed due to idle timeout*Shown as connection*                                      |
| **envoy.http.downstream\_flow\_control\_paused\_reading\_total**(count)  | Total number of times reads were disabled due to flow control*Shown as occurrence*                     |
| **envoy.http.downstream\_flow\_control\_resumed\_reading\_total**(count) | Total number of times reads were enabled on the connection due to flow control*Shown as occurrence*    |
| **envoy.http.downstream\_rq\_total**(count)                              | Total requests*Shown as request*                                                                       |
| **envoy.http.downstream\_rq\_http1\_total**(count)                       | Total HTTP/1.1 requests*Shown as request*                                                              |
| **envoy.http.downstream\_rq\_http2\_total**(count)                       | Total HTTP/2 requests*Shown as request*                                                                |
| **envoy.http.downstream\_rq\_active**(gauge)                             | Total active requests*Shown as request*                                                                |
| **envoy.http.downstream\_rq\_response\_before\_rq\_complete**(count)     | Total responses sent before the request was complete*Shown as response*                                |
| **envoy.http.downstream\_rq\_rx\_reset**(count)                          | Total request resets received*Shown as request*                                                        |
| **envoy.http.downstream\_rq\_tx\_reset**(count)                          | Total request resets sent*Shown as request*                                                            |
| **envoy.http.downstream\_rq\_non\_relative\_path**(count)                | Total requests with a non-relative HTTP path*Shown as request*                                         |
| **envoy.http.downstream\_rq\_too\_large**(count)                         | Total requests resulting in a 413 due to buffering an overly large body*Shown as request*              |
| **envoy.http.downstream\_rq\_1xx**(count)                                | Total 1xx responses*Shown as response*                                                                 |
| **envoy.http.downstream\_rq\_2xx**(count)                                | Total 2xx responses*Shown as response*                                                                 |
| **envoy.http.downstream\_rq\_3xx**(count)                                | Total 3xx responses*Shown as response*                                                                 |
| **envoy.http.downstream\_rq\_4xx**(count)                                | Total 4xx responses*Shown as response*                                                                 |
| **envoy.http.downstream\_rq\_5xx**(count)                                | Total 5xx responses*Shown as response*                                                                 |
| **envoy.http.downstream\_rq\_ws\_on\_non\_ws\_route**(count)             | Total WebSocket upgrade requests rejected by non WebSocket routes*Shown as request*                    |
| **envoy.http.downstream\_rq\_time**(gauge)                               | Request time milliseconds*Shown as millisecond*                                                        |
| **envoy.cluster\_manager.cluster\_added**(count)                         | Total clusters added (either via static config or CDS)*Shown as node*                                  |
| **envoy.cluster\_manager.cluster\_modified**(count)                      | Total clusters modified (via CDS)*Shown as node*                                                       |
| **envoy.cluster\_manager.cluster\_removed**(count)                       | Total clusters removed (via CDS)*Shown as node*                                                        |
| **envoy.cluster.upstream\_cx\_total**(count)                             | Total connections*Shown as connection*                                                                 |
| **envoy.cluster.upstream\_cx\_active**(gauge)                            | Total active connections*Shown as connection*                                                          |
| **envoy.cluster.upstream\_cx\_http1\_total**(count)                      | Total HTTP/1.1 connections*Shown as connection*                                                        |
| **envoy.cluster.upstream\_cx\_http2\_total**(count)                      | Total HTTP/2 connections*Shown as connection*                                                          |
| **envoy.cluster.upstream\_cx\_connect\_ms**(gauge)                       | Connection establishment milliseconds*Shown as millisecond*                                            |
| **envoy.cluster.upstream\_cx\_length\_ms**(gauge)                        | Connection length milliseconds*Shown as millisecond*                                                   |
| **envoy.cluster.upstream\_cx\_rx\_bytes\_total**(count)                  | Total received connection bytes*Shown as byte*                                                         |
| **envoy.cluster.upstream\_cx\_rx\_bytes\_buffered**(gauge)               | Received connection bytes currently buffered*Shown as byte*                                            |
| **envoy.cluster.upstream\_cx\_tx\_bytes\_total**(count)                  | Total sent connection bytes*Shown as byte*                                                             |
| **envoy.cluster.upstream\_cx\_tx\_bytes\_buffered**(gauge)               | Send connection bytes currently buffered*Shown as byte*                                                |
| **envoy.cluster.upstream\_rq\_total**(count)                             | Total requests*Shown as request*                                                                       |
| **envoy.cluster.upstream\_rq\_active**(gauge)                            | Total active requests*Shown as request*                                                                |
| **envoy.cluster.upstream\_rq\_pending\_total**(count)                    | Total requests pending a connection pool connection*Shown as request*                                  |
| **envoy.cluster.upstream\_rq\_pending\_active**(gauge)                   | Total active requests pending a connection pool connection*Shown as request*                           |
| **envoy.cluster.membership\_change**(count)                              | Total cluster membership changes*Shown as event*                                                       |
| **envoy.cluster.membership\_healthy**(gauge)                             | Current cluster healthy total (inclusive of both health checking and outlier detection)*Shown as node* |
| **envoy.cluster.membership\_total**(gauge)                               | Current cluster membership total*Shown as node*                                                        |
| **envoy.cluster.config\_reload**(count)                                  | Total API fetches that resulted in a config reload due to a different config*Shown as request*         |
| **envoy.cluster.update\_attempt**(count)                                 | Total cluster membership update attempts*Shown as occurrence*                                          |
| **envoy.cluster.update\_success**(count)                                 | Total cluster membership update successes*Shown as success*                                            |
| **envoy.cluster.update\_failure**(count)                                 | Total cluster membership update failures*Shown as error*                                               |
| **envoy.cluster.version**(gauge)                                         | Hash of the contents from the last successful API fetch*Shown as item*                                 |
| **envoy.cluster.max\_host\_weight**(gauge)                               | Maximum weight of any host in the cluster*Shown as item*                                               |

### Events{% #events %}

The Ambassador check does not include any events.

### Service Checks{% #service-checks %}

The Ambassador check does not include any service checks.

## Troubleshooting{% #troubleshooting %}

Need help? Contact [Datadog support](https://docs.datadoghq.com/help/).
