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

> For the complete documentation index, see [llms.txt](https://docs.datadoghq.com/llms.txt).

# Ambassador API Gateway
Supported OS Integration version1.0.0
{% callout %}
# Important note for users on the following Datadog sites: us2.ddog-gov.com

{% alert level="info" %}
To find out if this integration is available in your organization, see your [Datadog Integrations](https://app.datadoghq.com/integrations) page or ask your organization administrator.

To initiate an exception request to enable this integration for your organization, email [support@ddog-gov.com](mailto:support@ddog-gov.com).
{% /alert %}

{% /callout %}

## 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/).
