Supported OS Linux Windows Mac OS

Versión de la integración8.1.0

Información general

Datadog monitoriza todos los aspectos de tu entorno Istio, de modo que puedes hacer lo siguiente:

Para obtener más información sobre la monitorización de tu entorno Istio con Datadog, consulta la entrada del blog de monitor.

Configuración

Para obtener instrucciones generales sobre la configuración de integraciones en entornos en contenedores, consulta Configurar integraciones con Autodiscovery en Kubernetes o Configurar integraciones con Autodiscovery en Docker.

Esta integración basada en OpenMetrics tiene un modo más reciente (use_openmetrics: true) y un modo legacy (use_openmetrics: false). Para obtener todas las características más actualizadas, Datadog recomienda habilitar el modo más reciente. Para obtener más información, consulta Control de versiones más reciente y legacy para las integraciones basadas en OpenMetrics.

Si tienes varias instancias de Datadog que recopilan métricas de Istio, asegúrate de utilizar el mismo modo para todas ellas. De lo contrario, los datos de las métricas pueden fluctuar en el sitio de Datadog.

Las métricas marcadas como [OpenMetrics V1], [OpenMetrics V2] u [OpenMetrics V1 and V2] solo están disponibles con el uso del modo correspondiente de la integración Istio. Las métricas marcadas como Istio v1.5+ se recopilan mediante la versión 1.5 de Istio o posteriores.

Instalación

Istio está incluido en el Datadog Agent. Instala el Datadog Agent en tus servidores de Istio o en tu clúster y apúntalo hacia Istio.

Envoy

Si quieres monitorizar los proxies de Envoy en Istio, configura la integración de Envoy.

Configuración

Recopilación de métricas

Para monitorizar Istio v1.5 o posterior hay dos componentes clave que coinciden con la arquitectura Istio para métricas con formato Prometheus:

  • Plano de datos: Contenedores sidecar del istio-proxy.
  • Plano de control: Servicio istiod que gestiona los proxies.

Ambos se ejecutan como checks del Agent de istio, pero tienen responsabilidades diferentes y se configuran por separado.

Configuración del plano de datos

El archivo por defecto istio.d/auto_conf.yaml inicializa automáticamente la monitorización para cada uno de los contenedores sidecar istio-proxy. El Agent inicializa este check para cada contenedor sidecar que detecta automáticamente. Esta configuración permite la notificación de métricas istio.mesh.* para los datos expuestos por cada uno de estos contenedores sidecar.

Para personalizar la parte del plano de datos de la integración, crea un archivo de configuración Istio personalizado istio.yaml. Para ver opciones para la creación de este archivo, consulta Configurar integraciones en Kubernetes o Configurar integraciones con Autodiscovery en Docker.

Este archivo debe contener:

ad_identifiers:
  - proxyv2
  - proxyv2-rhel8

init_config:

instances:
  - use_openmetrics: true
    send_histograms_buckets: false
    istio_mesh_endpoint: http://%%host%%:15020/stats/prometheus
    tag_by_endpoint: false

Personaliza este archivo con cualquier configuración adicional. Para ver todas las opciones de configuración disponibles, consulta el istio.d/conf.yaml de ejemplo.

Configuración del plano de control

Para monitorizar el plano de control de Istio y notificar las métricas mixer, galley, pilot y citadel, debes configurar el Agent para monitorizar el despliegue de istiod. En Istio v1.5 o posterior, aplica las siguientes anotaciones de pod para el despliegue de istiod en el espacio de nombres istio-system:

ad.datadoghq.com/discovery.checks: |
  {
    "istio": {
      "instances": [
        {
          "istiod_endpoint": "http://%%host%%:15014/metrics",
          "use_openmetrics": "true"
        }
      ]
    }
  }  

Nota: La sintaxis de Autodiscovery Annotations v2 es compatible con el Agent v7.36 o posterior.

Esta anotación especifica el contenedor discovery para que coincida con el nombre por defecto del contenedor Istio en este pod. Sustituye esta anotación ad.datadoghq.com/<CONTAINER_NAME>.checks por el nombre (.spec.containers[i].name) de tu contenedor Istio, si el tuyo difiere.

El método para aplicar estas anotaciones varía en función de la estrategia de despliegue de Istio (Istioctl, Helm, Operator) utilizada. Consulta la documentación de Istio para conocer el método adecuado para aplicar estas anotaciones de pod. Para ver todas las opciones de configuración disponibles, consulta el istio.d/conf.yaml de ejemplo.

Desactivar la inyección de sidecars para pods del Datadog Agent

Si estás instalando el Datadog Agent en un contenedor, Datadog recomienda que primero desactives la inyección de sidecars de Istio.

Versiones de Istio iguales o superiores a la v1.10:

Añade la etiqueta (label) sidecar.istio.io/inject: "false" al DaemonSet datadog-agent:

# (...)
spec:
  template:
    metadata:
      labels:
        sidecar.istio.io/inject: "false"
    # (...)

Esto también puede hacerse con el comando kubectl patch.

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

Versiones de Istio iguales o anteriores a la v1.9:

Añade la anotación sidecar.istio.io/inject: "false" al DaemonSet datadog-agent:

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

Utilizando el comando kubectl patch:

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

Recopilación de logs

Disponible para la versión 6.0 o posteriores del Agent

En primer lugar, habilita el Datadog Agent para realizar la recopilación de logs en Kubernetes. Consulta Recopilación de logs de Kubernetes.

Logs de Istio

Para recopilar logs de Istio de tu plano de control (istiod), aplica las siguientes anotaciones de pod para el despliegue de istiod en el espacio de nombres istio-system:

ad.datadoghq.com/discovery.logs: |
  [
    {
      "source": "istio",
      "service": "<SERVICE_NAME>"
    }
  ]  

Esta anotación especifica el contenedor discovery para que coincida con el nombre de contenedor por defecto del contenedor Istio en este pod. Sustituye esta anotación ad.datadoghq.com/<CONTAINER_NAME>.logs por el nombre (.spec.containers[i].name) de tu contenedor Istio, si el tuyo difiere.

Sustituye <SERVICE_NAME> por el nombre de servicio Istio que elijas.

Logs de acceso a Envoy

Para recopilar logs de acceso a Envoy de tu plano de datos (istio-proxy):

  1. Habilita la generación de logs de acceso a Envoy en Istio
  2. Aplica la siguiente anotación al pod en el que se inyectó el contenedor istio-proxy
ad.datadoghq.com/istio-proxy.logs: |
  [
    {
      "source": "envoy",
      "service": "<SERVICE_NAME>"
    }
  ]  

Esta anotación especifica el contenedor istio-proxy para que coincida con el nombre de contenedor por defecto del contenedor sidecar de Istio inyectado. Sustituye esta anotación ad.datadoghq.com/<CONTAINER_NAME>.logs por el nombre (.spec.containers[i].name) de tu contenedor sidecar de Istio, si el tuyo difiere.

Sustituye <SERVICE_NAME> por el nombre de servicio de proxy de Istio que elijas.

Validación

Ejecuta el subcomando info del Agent y busca istio en la sección Checks.

Datos recopilados

Métricas

Eventos

El check de Istio no incluye eventos.

Checks de servicio

Solucionar problemas

Error de longitud de fragmento no válida

Si ves el siguiente error en el modo legacy de la integración Istio (versión 3.13.0 o anterior de la integración Istio):

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

Puedes utilizar el modo más reciente de la integración Istio basada en OpenMetrics para solucionar este error.

Debes actualizar como mínimo al Agent 7.31.0 y a Python 3. Consulta la sección Configuración para habilitar OpenMetrics.

Uso de la integración genérica OpenMetrics en un despliegue de Istio

Si la inyección de sidecar proxy de Istio está habilitada, la monitorización de otras métricas de Prometheus utilizando la integración OpenMetrics con el mismo endpoint de métricas que istio_mesh_endpoint puede resultar en un uso elevado de métricas personalizadas y en una recopilación duplicada de métricas.

Para asegurarte de que tu configuración de OpenMetrics no recopile métricas de forma redundante, puedes:

  1. Utilizar una coincidencia de métricas específica en la opción de configuración de metrics o
  2. Si utilizas el valor comodín * para metrics, considera la posibilidad de utilizar las siguientes opciones de la integración OpenMetrics para excluir métricas ya compatibles con las integraciones Istio y Envoy.

Configuración del modo más reciente de OpenMetrics con recopilación de métricas genéricas

Asegúrate de excluir las métricas de Istio y Envoy de tu configuración para evitar recibir una facturación elevada por métricas personalizadas. Utiliza exclude_metrics si elopenmetrics_endpoint está habilitado.

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

Configuración del modo legacy de OpenMetrics con recopilación de métricas genéricas

Asegúrate de excluir las métricas de Istio y Envoy de tu configuración para evitar recibir una facturación elevada por métricas personalizadas. Utiliza ignore_metrics si la prometheus_url está habilitada.

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

¿Necesitas ayuda? Ponte en contacto con el servicio de asistencia de Datadog.

Referencias adicionales

Documentación útil adicional, enlaces y artículos:

PREVIEWING: may/embedded-workflows