> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chronosphere.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Envoy

> Envoy listener, cluster, and traffic metrics.

The Envoy integration requires CXDOT Collector 1.4.0 or greater.

[Envoy](https://www.envoyproxy.io/) is an open source edge and service proxy for
cloud-native applications. Use the Envoy integration with the Chronosphere XDOT Collector
to collect listener, cluster, and traffic metrics from Envoy proxies running in your
environment.

The Envoy integration supports Envoy 1.36 or greater.

## Supported telemetry types

The Envoy integration supports these telemetry types:

| Type    | Supported |
| ------- | --------- |
| Logs    | No        |
| Metrics | Yes       |
| Traces  | No        |
| Events  | No        |

## Prerequisites

The Envoy integration has the following prerequisites:

* Configure Envoy to expose metrics at `/stats/prometheus`.
* Make the Envoy metrics endpoint reachable from the collector.

## Configure

To configure the Envoy integration, follow these steps:

1. For Envoy pods that listen on port `8001` or `9901`, add the
   `app.kubernetes.io/name: envoy` label to the pod template. For instances that use
   another port or metrics path, provide the complete metrics endpoint URL through
   autodiscovery annotations.

   For more information, see
   [autodiscovery](https://docs.chronosphere.io/ingest/cxdot-collector/autodiscovery).

2. Optional: Configure static targets for Envoy proxies that autodiscovery doesn't
   reach. For example, add the following to the `values.yaml` for your Helm chart:

   ```yaml theme={null}
   config:
     integrations:
       envoy:
         endpoints:
           - endpoint: 10.0.0.5:8001
   ```

### Validate

To validate the Envoy integration, follow these steps:

1. In Live Telemetry Analyzer, filter for `cxdot.integration.name=envoy`. Confirm that
   the Envoy metric names appear.

2. In Metrics Explorer, run the following query:

   ```text theme={null}
   count by ("url.full") ({"envoy.server.live"})
   ```

   Confirm that every Envoy proxy you expect appears in the results.

For more information about diagnosing a failing integration, see
[Troubleshooting](https://docs.chronosphere.io/ingest/cxdot-collector/troubleshooting).

## Configuration reference

Configure one Envoy integration instance with the following settings. In Helm values, place
these settings under `config.integrations.envoy`. In a Collector configuration file, place them
under `cxdot.integrations.envoy`.

### Optional settings

* **`enabled`**
  Type: `boolean`. Optional. Default: `true`.
  Whether to enable this Envoy integration instance. If true, the Collector collects metrics
  from Envoy targets. If false, it doesn't run this integration instance.

* **`endpoints`**
  Type: `array of object`. Optional.
  Static Envoy targets as `host:port` values or complete HTTP or HTTPS URLs. For `host:port`,
  the Collector requests `/stats/prometheus` over HTTP. A nonempty list disables automatic
  discovery for this integration instance, and the Collector scrapes only the listed targets.

* **`endpoints[].endpoint`**
  Type: `string`. Required.
  Envoy target as `host:port` or a complete HTTP or HTTPS URL. For `host:port`, the Collector
  requests `/stats/prometheus` over HTTP.

* **`collection_interval`**
  Type: `duration`. Optional. Default: `10s`.
  How often the Collector requests metrics from each Envoy target.

* **`timeout`**
  Type: `duration`. Optional. Default: `10s`.
  Maximum time the Collector waits for an Envoy metrics request to complete.

* **`metrics`**
  Type: `object`. Optional.
  Settings for collecting and naming Envoy metrics.

* **`metrics.include`**
  Type: `array of string`. Optional.
  Metrics to collect, in addition to the default set. Each entry is a regular expression matched
  against the metric name.

* **`metrics.exclude`**
  Type: `array of string`. Optional.
  Metrics to drop, matched the same way as `include`. Applied afterwards, so it subtracts from
  what `include` chose.

* **`metrics.rename`**
  Type: `object`. Optional.
  Renames metrics, as `{old: new}`. User-configured renames take precedence over default
  renames.

* **`labels`**
  Type: `object`. Optional.
  Which samples to drop, by label value.

* **`labels.sample_drop_rules`**
  Type: `object`. Optional.
  Drops a whole sample when one of its labels matches. Each key is a label name. The value is a
  list of regular expressions matched against the label's value. To drop every sample the label
  appears on with a non-empty value, use `".+"`.


## Related topics

- [Setting monitor muting rules](/investigate/alerts/muting-rules.md)
- [Drop rules](/control/shaping/shape-metrics/rules/drop-rules.md)
- [CreateDerivedLabel](/tooling/api-info/definition/operations/CreateDerivedLabel.md)
- [ListDerivedLabels](/tooling/api-info/definition/operations/ListDerivedLabels.md)
- [UpdateDerivedLabel](/tooling/api-info/definition/operations/UpdateDerivedLabel.md)
