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 CXDOT Collector integration with the CXDOT collector to collect listener, cluster, and traffic metrics from Envoy proxies running in your environment.

Supported telemetry types

The Envoy CXDOT Collector integration supports these telemetry types:

Prerequisites

The Envoy CXDOT Collector integration has the following prerequisites:
  • Configure Envoy to expose metrics at /stats/prometheus.
  • Make the Envoy metrics endpoint reachable from the CXDOT collector.

Configure

To configure the Envoy CXDOT Collector integration, follow these steps:
  1. Choose how the CXDOT collector finds your Envoy proxies:
    • For Envoy pods that listen on port 8001 or 9901, add the app.kubernetes.io/name: envoy label to the pod template.
    • For Envoy pods or Services that use another port or metrics path, add autodiscovery annotations that provide the complete metrics endpoint URL.
    For more information, see autodiscovery.
  2. Optional: Configure static targets to collect metrics from Envoy proxies that autodiscovery doesn’t reach. For example, add the following to the values.yaml for your Helm chart:
    When you configure static targets, this integration instance collects from exactly those targets instead of discovered targets.
  3. Optional: Configure a second integration instance to collect from both discovered pods and static targets. For example, add the following to the values.yaml for your Helm chart:
    The envoy/edge key defines a named instance for the static targets. The bare envoy key continues to use autodiscovery.

Validate

To validate the Envoy CXDOT Collector integration, follow these steps:
  1. In the 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 the query returns one time series for each Envoy proxy you expect, with the scraped URL in the cxdot.integration.target attribute, and that each reachable proxy reports 1.
  3. 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. Default: []. 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. Default: []. 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. Default: []. Metrics to drop, matched the same way as include. Applied afterwards, so it subtracts from what include chose.
  • metrics.rename Type: object. Optional. Default: {}. 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. Default: {}. 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 ".+".