This check collects distributed system observability metrics from Envoy.
The Envoy check is included in the Datadog Agent package, so you don't need to install anything else on your server.
If you are using Envoy as part of Istio, configure the Envoy integration to collect metrics from the Istio proxy metrics endpoint.
instances:
- openmetrics_endpoint: localhost:15090/stats/prometheus
There are 2 ways to setup the /stats
endpoint:
Here's an example Envoy admin configuration:
admin:
access_log_path: "/dev/null"
address:
socket_address:
address: 0.0.0.0
port_value: 8001
Create a listener/vhost that routes to the admin endpoint (Envoy connecting to itself), but only has a route for /stats
; all other routes get a static/error response. Additionally, this allows nice integration with L3 filters for auth, for example.
Here's an example config from envoy_secured_stats_config.json:
admin:
access_log_path: /dev/null
address:
socket_address:
protocol: TCP
address: 127.0.0.1
port_value: 8081
static_resources:
listeners:
- address:
socket_address:
protocol: TCP
address: 0.0.0.0
port_value: 80
filter_chains:
- filters:
- name: envoy.http_connection_manager
config:
codec_type: AUTO
stat_prefix: ingress_http
route_config:
virtual_hosts:
- name: backend
domains:
- "*"
routes:
- match:
prefix: /stats
route:
cluster: service_stats
http_filters:
- name: envoy.router
config:
clusters:
- name: service_stats
connect_timeout: 0.250s
type: LOGICAL_DNS
lb_policy: ROUND_ROBIN
hosts:
- socket_address:
protocol: TCP
address: 127.0.0.1
port_value: 8001
To configure this check for an Agent running on a host:
-
Edit the
envoy.d/conf.yaml
file, in theconf.d/
folder at the root of your Agent's configuration directory to start collecting your Envoy performance data. See the sample envoy.d/conf.yaml for all available configuration options.init_config: instances: ## @param openmetrics_endpoint - string - required ## The URL exposing metrics in the OpenMetrics format. # - openmetrics_endpoint: http://localhost:8001/stats/prometheus
-
Check if the Datadog Agent can access Envoy's admin endpoint.
Available for Agent versions >6.0
-
Collecting logs is disabled by default in the Datadog Agent, enable it in your
datadog.yaml
file:logs_enabled: true
-
Next, edit
envoy.d/conf.yaml
by uncommenting thelogs
lines at the bottom. Update the logspath
with the correct path to your Envoy log files.logs: - type: file path: /var/log/envoy.log source: envoy service: envoy
For containerized environments, see the Autodiscovery Integration Templates for guidance on applying the parameters below.
Parameter | Value |
---|---|
<INTEGRATION_NAME> |
envoy |
<INIT_CONFIG> |
blank or {} |
<INSTANCE_CONFIG> |
{"openmetrics_endpoint": "http://%%host%%:80/stats/prometheus"} |
Note: The current version of the check (1.26.0+) uses OpenMetrics for metric collection, which requires Python 3. For hosts that are unable to use Python 3, or if you would like to use a legacy version of this check, refer to the following config. |
Available for Agent versions >6.0
Collecting logs is disabled by default in the Datadog Agent. To enable it, see Kubernetes Log Collection.
Parameter | Value |
---|---|
<LOG_CONFIG> |
{"source": "envoy", "service": "<SERVICE_NAME>"} |
Run the Agent's status subcommand and look for envoy
under the Checks section.
See metadata.csv for a list of metrics provided by this integration.
See metrics.py for a list of tags sent by each metric.
The Envoy check does not include any events.
See service_checks.json for a list of service checks provided by this integration.
- Disable the
collect_server_info
option in your Envoy configuration, if the endpoint is not available in your Envoy environment, to minimize error logs.
Note: Envoy version data is not collected.
Need help? Contact Datadog support.