Skip to main content
The Envoy integration requires CXDOT Collector 1.4.0 or greater. Envoy 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:

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.
  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:

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:
    Confirm that every Envoy proxy you expect appears in the results.
For more information about diagnosing a failing integration, see 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 ".+".