Skip to content

Files

Latest commit

 

History

History
 
 

istio

Istio check

Overview

Datadog monitors every aspect of your Istio environment, so you can:

  • Assess the health of Envoy and the Istio control plane with logs (see below).
  • Break down the performance of your service mesh with request, bandwidth, and resource consumption metrics (see below).
  • Map network communication between containers, pods, and services over the mesh with Network Performance Monitoring.
  • Drill into distributed traces for applications transacting over the mesh with APM.

To learn more about monitoring your Istio environment with Datadog, see the Istio blog.

Setup

Follow the instructions below to install and configure this check for an Agent running on a host. For containerized environments, see the Autodiscovery Integration Templates for guidance on applying these instructions.

Installation

Istio is included in the Datadog Agent. Install the Datadog Agent on your Istio servers or in your cluster and point it at Istio.

Envoy

If you want to monitor the Envoy proxies in Istio, configure the Envoy integration.

Configuration

Edit the istio.d/conf.yaml file (in the conf.d/ folder at the root of your Agent's configuration directory) to connect to Istio. See the sample istio.d/conf.yaml for all available configuration options.

Metric collection

To monitor the istiod deployment and istio-proxy in Istio v1.5+, use the following configuration:

```yaml
init_config:

instances:
  - use_openmetrics: true  # Enables Openmetrics V2 version of the integration
    istiod_endpoint: http://istiod.istio-system:15014/metrics
    istio_mesh_endpoint: http://istio-proxy.istio-system:15090/stats/prometheus
    exclude_labels:
     - source_version
     - destination_version
     - source_canonical_revision
     - destination_canonical_revision
     - source_principal
     - destination_principal
     - source_cluster
     - destination_cluster
     - source_canonical_service
     - destination_canonical_service
     - source_workload_namespace
     - destination_workload_namespace
     - request_protocol
     - connection_security_policy
```

Note: The connectionID Prometheus label is excluded. The sample istio.d/conf.yaml also has a list of suggested labels to exclude.

Istio mesh metrics are only available from istio-proxy containers which are supported out-of-the-box with Autodiscovery, see istio.d/auto_conf.yaml.

OpenMetrics V2 vs OpenMetrics V1
Important Note: If you have multiple instances of Datadog collecting Istio metrics, make sure to use the same implementation of OpenMetrics for all of them. Otherwise, the metrics data fluctuates on the Datadog site.

When you enable the use_openmetrics configuration option, the Istio integration uses the OpenMetrics V2 implementation of the check.

In OpenMetrics V2, metrics are submitted more accurately by default and behave closer to Prometheus metric types. For example, Prometheus metrics ending in _count and _sum are submitted as monotonic_count by default.

OpenMetrics V2 addresses performance and quality issues in OpenMetrics V1. Updates include native metric types support, improved configuration, and custom metric types.

Set the use_openmetrics configuration option to false to use the OpenMetrics V1 implementation. To view the configuration parameters for OpenMetrics V1, see the conf.yaml.example file.

Disable sidecar injection for Datadog Agent pods

If you are installing the Datadog Agent in a container, Datadog recommends that you first disable Istio's sidecar injection.

Add the sidecar.istio.io/inject: "false" annotation to the datadog-agent DaemonSet:

...
spec:
   ...
  template:
    metadata:
      annotations:
        sidecar.istio.io/inject: "false"
     ...

This can also be done with the kubectl patch command.

kubectl patch daemonset datadog-agent -p '{"spec":{"template":{"metadata":{"annotations":{"sidecar.istio.io/inject":"false"}}}}}'

Log collection

Istio contains two types of logs. Envoy access logs that are collected with the Envoy integration and Istio logs.

Available for Agent versions >6.0

See the Autodiscovery Integration Templates for guidance on applying the parameters below. Collecting logs is disabled by default in the Datadog Agent. To enable it, see Kubernetes Log Collection.

Parameter Value
<LOG_CONFIG> {"source": "istio", "service": "<SERVICE_NAME>"}

Validation

Run the Agent's info subcommand and look for istio under the Checks section.

Data Collected

Metrics

See metadata.csv for a list of metrics provided by this check.

Events

The Istio check does not include any events.

Service Checks

See service_checks.json for a list of service checks provided by this integration.

Troubleshooting

Invalid chunk length error

If you see the following error on OpenMetricsBaseCheck (V1) implementation of Istio (Istio integration version 3.13.0 or older):

```python
  Error: ("Connection broken: InvalidChunkLength(got length b'', 0 bytes read)", 
  InvalidChunkLength(got length b'', 0 bytes read))
```

You can use the Openmetrics V2 implementation of the Istio integration to resolve this error.

Note: you must upgrade to at minimum Agent 7.31.0 and Python 3. See the Configuration section on enabling Openmetrics V2.

Using the generic Openmetrics integration in an Istio deployment

If Istio proxy sidecar injection is enabled, monitoring other Prometheus metrics using the Openmetrics integration with the same metrics endpoint as istio_mesh_endpoint can result in high custom metrics usage and duplicated metric collection.

To ensure that your Openmetrics configuration does not redundantly collect metrics, either:

  1. Use specific metric matching in the metrics configuration option, or
  2. If using the wildcard * value for metrics, consider using the following Openmetrics integration options to exclude metrics already supported by the Istio and Envoy integrations.

Openmetrics V2 configuration with generic metric collection

Be sure to exclude Istio and Envoy metrics from your configuration to avoid high custom metrics billing. Use exclude_metrics if using the Openmetrics V2 configuration (openmetrics_endpoint enabled).

## Every instance is scheduled independent of the others.
#
instances:
  - openmetrics_endpoint: <OPENMETRICS_ENDPOINT>
    metrics: [*]
    exclude_metrics:
      - istio_*
      - envoy_*

Openmetrics V1 configuration (Legacy) with generic metric collection

Be sure to exclude Istio and Envoy metrics from your configuration to avoid high custom metrics billing. Use ignore_metrics if using the Openmetrics V1 configuration (prometheus_url enabled).

instances:
  - prometheus_url: <PROMETHEUS_URL>
    metrics:
      - *
    ignore_metrics:
      - istio_*
      - envoy_*

Need help? Contact Datadog support.

Further Reading

Additional helpful documentation, links, and articles: