Uso básico del Agent con Kubernetes en el Agent v5
El Datadog Agent v5 es compatible con Kubernetes hasta la versión 1.8. Si quieres usar una versión más reciente de Kubernetes, deberás pasarte al Datadog Agent v6.
Obtén métricas de Kubernetes en tiempo real para:
- Visualizar y monitorizar los estados de Kubernetes
- Recibir notificaciones de conmutaciones por error de Kubernetes y otros eventos relacionados
Para trabajar con Kubernetes, se recomienda utilizar el Agent en un DaemonSet. Se incluye una imagen de Docker en las integraciones de Docker y Kubernetes que estén habilitadas.
También puedes ejecutar el Datadog Agent en tu host y configurarlo para recopilar las métricas de Kubernetes.
Configurar Kubernetes
Instalación
Instalación del contenedor
Gracias a Kubernetes, puedes aprovechar los DaemonSets para desplegar automáticamente el Datadog Agent en todos los nodos (o en nodos específicos mediante nodeSelectors).
Si no puedes usar DaemonSets en tu clúster Kubernetes, instala el Datadog Agent como un despliegue en cada uno de los nodos Kubernetes.
Si tu Kubernetes tiene habilitada la configuración del control de acceso basado en roles (RBAC), descubre cómo configurar los permisos correspondientes con la integración de Kubernetes con Datadog.
- Crea el siguiente manifiesto
dd-agent.yaml
:
apiVersion: extensions/v1beta1
metadata:
name: dd-agent
spec:
template:
metadata:
labels:
app: dd-agent
name: dd-agent
spec:
containers:
- image: gcr.io/datadoghq/docker-dd-agent:latest
imagePullPolicy: Always
name: dd-agent
ports:
- containerPort: 8125
name: dogstatsdport
protocol: UDP
env:
- name: API_KEY
value: "DATADOG_API_KEY"
- name: KUBERNETES
value: "yes"
volumeMounts:
- name: dockersocket
mountPath: /var/run/docker.sock
- name: procdir
mountPath: /host/proc
readOnly: true
- name: cgroups
mountPath: /host/sys/fs/cgroup
readOnly: true
volumes:
- hostPath:
path: /var/run/docker.sock
name: dockersocket
- hostPath:
path: /proc
name: procdir
- hostPath:
path: /sys/fs/cgroup
name: cgroups
Sustituye DATADOG_API_KEY
por tu clave de API o usa los secretos de Kubernetes para configurar tu clave de API como una variable de entorno.
- Despliega el DaemonSet con el siguiente comando:
kubectl create -f dd-agent.yaml
Nota: Este manifiesto activa Autodiscovery, la función de configuración automática. Para desactivarla, elimina la definición de la variable de entorno SD_BACKEND
. Para aprender a configurar Autodiscovery, consulta la documentación acerca de Autodiscovery.
Instalación del host
Instala el paquete dd-check-kubernetes
manualmente o mediante tu gestor de configuración favorito.
Configuración
Edita el archivo kubernetes.yaml
para dirigirlo hacia tu servidor y tu puerto, y configura los nodos maestros de la monitorización:
instances:
host: localhost
port: 4194
method: http
Consulta el kubernetes.yaml de ejemplo para descubrir todas las opciones de configuración disponibles.
Validación
Contenedor en ejecución
Para verificar que el Datadog Agent funciona en tu entorno como un DaemonSet, ejecuta lo siguiente:
Si el Agent está desplegado, se mostrará un resultado similar al siguiente, donde desired (previstos) y current (actuales) corresponden al número de nodos que se están ejecutando en tu clúster.
NAME DESIRED CURRENT NODE-SELECTOR AGE
dd-agent 3 3 <none> 11h
Check del Agent en ejecución
Ejecuta el subcomando info
del Agent y busca kubernetes
en la sección Checks:
Checks
======
kubernetes
-----------
- instance #0 [OK]
- Collected 39 metrics, 0 events & 7 service checks
Configurar el estado de Kubernetes
Instalación
Instalación del contenedor
Si operas con versiones de Kubernetes posteriores a la 1.2.0, puedes usar el proyecto kube-state-metrics para proporcionar métricas adicionales (las cuales se identifican mediante el prefijo kubernetes_state
de la lista de métricas de abajo) para Datadog.
Para ejecutar métricas kube-state-metrics, crea un archivo kube-state-metrics.yaml
utilizando el siguiente manifiesto para desplegar el servicio kube-state-metrics:
apiVersion: extensions/v1beta1
metadata:
name: kube-state-metrics
spec:
replicas: 1
template:
metadata:
labels:
app: kube-state-metrics
spec:
containers:
- name: kube-state-metrics
image: gcr.io/google_containers/kube-state-metrics:v1.2.0
ports:
- name: metrics
containerPort: 8080
resources:
requests:
memory: 30Mi
cpu: 100m
limits:
memory: 50Mi
cpu: 200m
---
apiVersion: v1
metadata:
annotations:
prometheus.io/scrape: 'true'
labels:
app: kube-state-metrics
name: kube-state-metrics
spec:
ports:
- name: metrics
port: 8080
targetPort: metrics
protocol: TCP
selector:
app: kube-state-metrics
Luego, ejecuta esto para llevar a cabo el despliegue:
kubectl create -f kube-state-metrics.yaml
El manifiesto anterior utiliza el contenedor kube-state-metrics
público de Google, que también está disponible en Quay. Si quieres crearlo manualmente, consulta la documentación oficial del proyecto.
Si configuras tu servicio Kubernetes State Metrics para que se ejecute en una URL o puerto diferentes, puedes configurar el Datadog Agent estableciendo el parámetro kube_state_url
en conf.d/kubernetes_state.yaml
y, luego, reiniciar el Agent.
Para obtener más información, consulta el archivo kubernetes_state.yaml.example. Si has habilitado Autodiscovery, la URL de estado de Kubernetes se configura y se gestiona automáticamente.
Instalación del host
Instala el paquete dd-check-kubernetes_state
manualmente o mediante tu gestor de configuración favorito. (En CentOS/AWS, descarga el paquete rpm y consulta las instrucciones de instalación.
Luego, edita el archivo kubernetes_state.yaml
para que se dirija a tu servidor y a tu puerto, y configura los nodos maestros de la monitorización. Para descubrir todas las opciones de configuración, consulta el kubernetes_state.yaml de ejemplo.
Validación
Validación del contenedor
Para verificar que el Datadog Agent funciona en tu entorno como un DaemonSet, ejecuta lo siguiente:
Si el Agent está desplegado, recibirás un resultado similar al siguiente, donde desired (previstos) y current (actuales) son iguales al número de nodos que se están ejecutando en tu clúster.
NAME DESIRED CURRENT NODE-SELECTOR AGE
dd-agent 3 3 <none> 11h
Validación del check del Agent
Ejecuta el subcomando info del Agent y busca kubernetes_state
en la sección Checks:
Checks
======
kubernetes_state
-----------
- instance #0 [OK]
- Collected 39 metrics, 0 events & 7 service checks
Configurar el DNS de Kubernetes
Instalación
Instala el paquete dd-check-kube_dns
manualmente o mediante tu gestor de configuración favorito.
Configuración
Edita el archivo kube_dns.yaml
para que se dirija a tu servidor y a tu puerto, y configura los nodos maestros de la monitorización. Consulta el kube_dns.yaml de ejemplo para descubrir todas las opciones de configuración disponibles.
Usar la detección de servicios
Si estás usando un pod dd-agent
por cada nodo worker de Kubernetes, puedes usar las siguientes anotaciones en tu pod kube-dns para recuperar los datos automáticamente.
apiVersion: v1
metadata:
annotations:
service-discovery.datadoghq.com/kubedns.check_names: '["kube_dns"]'
service-discovery.datadoghq.com/kubedns.init_configs: '[{}]'
service-discovery.datadoghq.com/kubedns.instances: '[[{"prometheus_endpoint":"http://%%host%%:10055/metrics", "tags":["dns-pod:%%host%%"]}]]'
Notas:
- Observa cómo la etiqueta “dns-pod” hace un seguimiento de la IP del pod de DNS de destino. Las otras etiquetas están relacionadas con el
dd-agent
que sondea la información utilizando el servicio de detección. - Las anotaciones del servicio de detección deben aplicarse al pod. Si vas a hacer un despliegue, añade las anotaciones a los metadatos de las especificaciones de la plantilla.
Validación
Ejecuta el subcomando info del Agent y busca kube_dns
en la sección Checks:
Checks
======
kube_dns
-----------
- instance #0 [OK]
- Collected 39 metrics, 0 events & 7 service checks