Orchestrator Explorer, que muestra los pods de Kubernetes.

Información general

El Datadog Agent y Cluster Agent pueden recuperar recursos de Kubernetes para Orchestrator Explorer. Esta función te permite monitorizar el estado de pods, despliegues y otros conceptos de Kubernetes en espacios de nombres o zonas de disponibilidad específicos, ver especificaciones de recursos para pods fallidos en una implementación, correlacionar la actividad del nodo con logs relacionados y más.

Orchestrator Explorer requiere la versión del Agent 7.27.0, o una posterior, y la versión del Cluster Agent 1.11.0, o una posterior.

Nota: En el caso de la versión de Kubernetes 1.25 y posteriores, la versión mínima requerida del Cluster Agent es la 7.40.0.

Configuración

Asegúrate de haber habilitado el Process Agent. Si utilizas el Datadog Operator o el Helm chart oficial, Orchestrator Explorer se encuentra habilitado de forma predeterminada.

Orchestrator Explorer se encuentra habilitado de manera predeterminada en el Datadog Operator.

Para comprobarlo, asegúrate de que el parámetro features.orchestratorExplorer.enabled se haya establecido en true en tu datadog-agent.yaml:

apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
  name: datadog
spec:
  global:
    credentials:
      apiKey: <DATADOG_API_KEY>
      appKey: <DATADOG_APP_KEY>
  features:
    orchestratorExplorer:
      enabled: true

Si utilizas el Helm chart oficial, Orchestrator Explorer se encuentra habilitado de manera predeterminada.

Para comprobarlo, asegúrate de que el parámetro orchestratorExplorer.enabled se haya establecido en true en tu archivo values.yaml:

datadog:
  # (...)
  processAgent:
    enabled: true
  orchestratorExplorer:
    enabled: true

Luego, actualiza tu Helm chart.

Para la configuración manual, consulta Configurar Orchestrator Explorer con DaemonSet.

Uso

Vistas

Alterna entre Pods, Clusters (Clústeres), Namespaces (Espacios de nombres) y otros recursos de Kubernetes en el menú desplegable Select Resources (Seleccionar recursos) en la esquina superior izquierda de la página.

Cada una de estas vistas incluye una tabla de datos para ayudarte a organizar mejor tus datos por campo, como estado, nombre y etiquetas (tags) de Kubernetes, y un mapa de clústeres detallado para brindarte panorama más amplio de tus pods y clústeres de Kubernetes.

Consulta los Detalles del filtro de consulta para obtener más detalles sobre cómo filtrar estas vistas.

Orchestrator Explorer abierto para mostrar Cargas de trabajo > Conjuntos de réplicas, en el modo Resumen

Agrupar por funcionalidad y facetas

Agrupa los pods por etiquetas (tags), etiquetas (labels) de Kubernetes o anotaciones de Kubernetes para obtener una vista agregada que te permita encontrar información con mayor rapidez. Puedes crear un grupo con la barra «Group by» (Agrupar por) en la parte superior derecha de la página o al hacer clic en una etiqueta (tag) o etiqueta (label) en particular y ubicar la función agrupar por en el menú contextual como se muestra a continuación.

Un ejemplo de agrupación por equipo

También puedes utilizar facetas en el lado izquierdo de la página para agrupar recursos o filtrar los recursos que más te interesen, como pods con un estado de pod CrashLoopBackOff.

Mapa de clústeres

Un mapa de clústeres te brinda un panorama más amplio de tus pods y clústeres de Kubernetes. Puedes ver todos tus recursos juntos en una pantalla con grupos y filtros personalizados, y elegir las métricas para rellenar el color de los nodos.

Examina los recursos de los mapas de clústeres al hacer clic en cualquier círculo o grupo para completar un panel detallado.

Panel de información

Haz clic en cualquier fila de la tabla o en cualquier objeto en un mapa de clústeres para ver información sobre un recurso específico en un panel lateral.

Una vista de recursos en el panel lateral, abierta en procesos.

La pestaña YAML del panel lateral muestra la definición completa del recurso. A partir de la versión del Agent 7.44.0, también incluye siete días de historial de definiciones. Puedes comparar lo que cambió con el tiempo y en diferentes versiones. La hora indicada es aproximada a cuando se aplicaron los cambios al recurso.

Para evitar mostrar una gran cantidad de cambios irrelevantes, se ignoran las actualizaciones que afectan solo a los siguientes campos:

  • metadata.resourceVersion
  • metadata.managedFields
  • metadata.generation
  • status
Una vista de los recursos en el panel lateral, que muestra la función de historial de yaml

Las demás pestañas muestran más información para solucionar problemas del recurso seleccionado:

  • Logs: consulta logs de tu contenedor o recurso. Haz clic en cualquier log para ver los logs relacionados en el Explorador de logs.
  • APM: consulta trazas (traces) de tu contenedor o recurso, incluida la fecha, el servicio, la duración, el método y el código de estado de una traza.
  • Metrics (Métricas): consulta métricas en directo para tu contenedor o recurso. Puedes ver cualquier gráfica en pantalla completa, compartir una snapshot de esta o exportarla desde esta pestaña.
  • Processes (Procesos): consulta todos los procesos que se ejecutan en el contenedor de este recurso.
  • Network (Red): consulta el rendimiento de la red de un contenedor o recurso, incluidos los campos de origen, destino, volumen enviado y recibido, y rendimiento. Utiliza el campo Destination (Destino) para buscar por etiquetas como DNS o ip_type, o utiliza el filtro Group by (Agrupar por) en esta vista a fin de agrupar datos de red por etiquetas, como pod_name o service.
  • Events (Eventos): consulta todos los eventos de Kubernetes para tu recurso.
  • Monitors (Monitores): consulta los monitores etiquetados, con contexto o agrupados para este recurso.

Para obtener un dashboard detallado de este recurso, haz clic en View Dashboard (Ver dashboard) en la esquina superior derecha de este panel.

Un enlace a un dashboard de pod desde la información general sobre Live Containers

Utilización de recursos

Para ver la página de utilización de recursos, consulta Utilización de recursos.

En la pestaña del Explorador de Kubernetes, puedes explorar una selección de métricas de utilización de recursos.

Utilización de recursos de contenedor

Todas estas columnas admiten la clasificación, lo que te ayuda a identificar cargas de trabajo individuales en función de su utilización de recursos.

Columnas ordenadas por utilización de recursos de contenedor

Detalles del filtro de consulta

Puedes limitar los recursos que se muestran al proporcionar una consulta en la barra de búsqueda «Filter by» (Filtrar por) en la parte superior izquierda de la página.

Sintaxis

Un filtro de consulta se compone de términos y operadores. Por ejemplo:

Sintaxis del filtro de consultas de Orchestrator Explorer.

Términos

Existen varios tipos de términos:

TipoEjemplos
Etiquetas (Tags): adjuntas a los recursos por el Agent que las recopila. También existen etiquetas adicionales que genera Datadog para los recursos de Kubernetes.datacenter:staging
tag#datacenter:staging
(el tag# es opcional)
Etiquetas (Labels): extraídas de metadatos de un recurso. Por lo general, se utilizan para organizar tu clúster y dirigirte a recursos específicos con selectores.label#chart_version:2.1.0
Anotaciones: extraídas de metadatos de un recurso. Por lo general, se utilizan para respaldar herramientas que ayudan en la gestión de clústeres.annotation#checksum/configmap:a1bc23d4
Métricas: añadidas a los recursos de carga de trabajo (pods y despliegues, entre otros). Puedes encontrar recursos en función de su utilización. Para ver qué métricas se admiten, consulta Filtros de utilización de recursos.metric#cpu_usage_pct_limits_avg15:>80%
Coincidencia de cadenas: compatible con algunos atributos de recursos específicos, consulta más abajo.
Nota: la coincidencia de cadenas no utiliza el formato clave-valor y no puedes especificar el atributo con el que comparar.
"10.132.6.23" (IP)
"9cb4b43f-8dc1-4a0e" (UID)
web-api-3 (Nombre)

Nota: Es posible que encuentres los mismos pares clave-valor como etiqueta (tag) y etiqueta (label) (o anotación); esto depende de cómo se haya configurado tu clúster.

Los siguientes atributos de recursos se admiten en la coincidencia de cadenas arbitraria:

  • metadata.name
  • metadata.uid
  • Direcciones IP encontradas en:
    • Pods
    • Nodos (internos y externos)
    • Servicios (IPs de clúster, externas y de equilibrador de carga)

No es necesario que especifiques una clave para buscar un recurso por nombre o IP. No se requieren comillas a menos que tu búsqueda de cadenas incluya ciertos caracteres especiales.

Comparadores

Todos los términos respaldan el operador de igualdad :. Los términos de valor de métrica también admiten comparaciones numéricas:

  • :> Mayor que (por ejemplo, metric#cpu_usage_avg15:>0.9)
  • :>= Mayor o igual que
  • :< Menor que
  • :<= Menor o igual que

Operadores

Para combinar varios términos en una consulta compleja, puedes utilizar cualquiera de los siguientes operadores booleanos que distinguen entre mayúsculas y minúsculas:

OperadorDescripciónEjemplo
ANDIntersección: ambos términos están en los eventos seleccionados (si no se añade nada, AND se toma de manera predeterminada)a AND b
ORUnión: cualquiera de los términos está en los eventos seleccionadosa OR b
NOT / -Exclusión: el siguiente término NO está en el evento (se aplica a cada búsqueda individual de texto sin formato)a AND NOT b o
a AND -b
( )Agrupación: especifica cómo agrupar los términos de manera lógicaa AND (b OR c) o
(a AND b) or c
OR abreviatura del valor

Se pueden combinar varios términos que comparten la misma clave en un solo término si todos utilizan el operador OR. Por ejemplo, esta consulta:

app_name:web-server OR app_name:database OR app_name:event-consumer

Puede reducirse a:

app_name:(web-server OR database OR event-consumer)

Comodines

Puedes utilizar comodines * como parte de un término a fin de filtrar por coincidencias parciales, tanto para valores como para claves. Algunos ejemplos:

  • kube_job:stats-*: encuentra todos los recursos con un valor de etiqueta kube_deployment que comience con stats-.
  • pod_name:*canary: encuentra todos los recursos con un valor pod_name que termine en canary..
  • label#release:*: encuentra todos los recursos con una etiqueta (label) release, independientemente de su valor.
  • -label#*.datadoghq.com/*: encuentra recursos que no tengan ninguna etiqueta (label) con contexto de Datadog.
  • kube_*:*stats*canary: encuentra recursos que tengan etiquetas de recursos relacionados (kube_*), con stats en el medio del valor y que también terminen en canary.

Etiquetas extraídas

Además de las etiquetas que has configurado dentro del Datadog Agent, Datadog inyecta etiquetas generadas basadas en atributos de recursos que pueden ayudarte con tus necesidades de búsqueda y agrupación. Estas etiquetas se añaden a los recursos de manera condicional, cuando son relevantes.

Todos los recursos

Todos los recursos tienen la etiqueta kube_cluster_name y todos los recursos con espacios de nombres tienen añadida la etiqueta kube_namespace.

Además, los recursos contienen una etiqueta kube_<api_kind>:<metadata.name>. Por ejemplo, a un despliegue denominado web-server-2 se le añadiría de manera automática la etiqueta kube_deployment:web-server-2.

Nota: Hay algunas excepciones a este patrón:

  • Los pods utilizan pod_name en su lugar.
  • VPAs: verticalpodautoscaler.
  • VPHs: horizontalpodautoscaler.
  • Demanda de volumen persistente: persistentvolumeclaim.

En función de las etiquetas (labels) adjuntas al recurso, también se extraerán las siguientes etiquetas (tags):

Etiqueta (tag)Etiqueta de origen
kube_app_nameapp.kubernetes.io/name
kube_app_instanceapp.kubernetes.io/instance
kube_app_versionapp.kubernetes.io/version
kube_app_componentapp.kubernetes.io/component
kube_app_part_ofapp.kubernetes.io/part-of
kube_app_managed_byapp.kubernetes.io/managed-by
envtags.datadoghq.com/env
versiontags.datadoghq.com/version
servicetags.datadoghq.com/service

Relaciones

Los recursos relacionados se etiquetarán entre sí. Algunos ejemplos son:

  • Un pod que sea parte del despliegue «XYZ» tendrá una etiqueta kube_deployment:xyz.
  • Una entrada que se dirija al servicio «A» tendrá una etiqueta kube_service:a.

Los recursos que se generan a partir de recursos «principales» tendrán las etiquetas kube_ownerref_kind y kube_ownerref_name (como pods y trabajos).

Consejo: Utiliza la función de autocompletar consultas de filtro para descubrir qué etiquetas de recursos relacionados se encuentran disponibles. Escribe kube_ y conoce qué resultados se sugieren.

Pods

Los pods reciben las siguientes etiquetas:

  • pod_name
  • pod_phase (extraído del manifiesto)
  • pod_status (calculado de forma similar a kubectl)

Cargas de trabajo

Los recursos de carga de trabajo (pods, despliegues, conjuntos con estado, etc.) tendrán las siguientes etiquetas, que indican su compatibilidad dentro de la página de utilización de recursos:

  • resource_utilization (supported o unsupported)
  • missing_cpu_requests
  • missing_cpu_limits
  • missing_memory_requests
  • missing_memory_limits

Condiciones

Algunas condiciones, para algunos recursos, se extraen como etiquetas. Por ejemplo, puedes encontrar la etiqueta kube_condition_available en los despliegues. El formato de la etiqueta siempre es kube_condition_<name> con un valor true o false.

Consejo: Utiliza la función de autocompletar para descubrir qué condiciones se encuentran disponibles en un tipo de recurso determinado al ingresar kube_condition y revisar los resultados.

Etiquetas específicas de recursos

Algunos recursos tienen etiquetas específicas que se extraen en función del entorno de tu clúster. Las siguientes etiquetas se encuentran disponibles junto con las etiquetas que se compartieron anteriormente.

RecursoEtiquetas extraídas
Clústerapi_server_version
kubelet_version
Definiciones de recursos personalizados y
Recursos personalizados
kube_crd_kind
kube_crd_group
kube_crd_version
kube_crd_scope
Espacio de nombresphase
Nodokube_node_unschedulable
kube_node_kubelet_version
kube_node_kernel_version
kube_node_runtime_version
eks_fargate_node
node_schedulable
node_status
Volumen persistentekube_reclaim_policy
kube_storage_class_name
pv_type
pv_phase
Demanda de volumen persistentepvc_phase
kube_storage_class_name
Podpod_name (en lugar de kube_pod)
pod_phase (extraído del manifiesto)
pod_status (calculado de forma similar a kubectl)
Serviciokube_service_type
kube_service_port

Filtros de utilización de recursos

Los siguientes recursos de carga de trabajo están enriquecidos con métricas de utilización de recursos:

  • Clústeres
  • Daemonsets
  • Despliegues
  • Nodos
  • Pods
  • Conjuntos de réplicas
  • Conjuntos con estado

Estas métricas se calculan en el momento de la recopilación, en función de los valores promedio de los últimos 15 minutos. Puedes filtrar por valores de métrica de esta manera:metric#<metric_name><comparator><numeric_value>.

  • metric_name es una métrica disponible (consulta más abajo)
  • comparator es un comparador compatible
  • y numeric_value es un valor de coma flotante.

Para estos recursos de carga de trabajo, se encuentran disponibles los siguientes nombres de métrica:

CPUMemoria
cpu_limits_avg15mem_limits_avg15
cpu_requests_avg15mem_requests_avg15
cpu_usage_avg15mem_usage_avg15
cpu_usage_pct_limits_avg15mem_usage_pct_limits_avg15
cpu_usage_pct_requests_avg15mem_usage_pct_requests_avg15
cpu_waste_avg15mem_waste_avg15

Además, los clústeres y nodos tienen disponibles las siguientes métricas:

  • cpu_usage_pct_alloc_avg15
  • cpu_requests_pct_alloc_avg15
  • mem_usage_pct_alloc_avg15
  • mem_requests_pct_alloc_avg15

Unidades de métrica

Las métricas de CPU se almacenan como varios núcleos.

Las métricas de memoria se almacenan como bytes.

Los porcentajes (*_pct_*) se almacenan como flotantes, donde 0.0 es 0 % y 1.0 es 100 %. El valor es la relación de las dos métricas indicadas; por ejemplo, cpu_usage_pct_limits_avg15 es el valor de usage / limits. Los valores de métrica pueden estar por encima del 100 %, como el porcentaje de uso de CPU de las solicitudes.

Notas y problemas conocidos

  • Los datos se actualizan de manera automática en intervalos constantes. Los intervalos de actualización pueden cambiar durante la versión beta.
  • En clústeres con más de 1000 despliegues o ReplicaSets, es posible que observes un uso elevado de CPU por parte del Cluster Agent. Hay una opción para deshabilitar la limpieza de contenedores en el Helm chart. Consulta el repositorio de Helm chart para obtener más detalles.