Versión de la integración8.1.0
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
):
- Habilita la generación de logs de acceso a Envoy en Istio
- 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:
- Utilizar una coincidencia de métricas específica en la opción de configuración de
metrics
o - 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: