Monitorizar un Clúster de Kubernetes con Zabbix 6

En esta entrada voy a enseñaros a monitorizar un clúster de Kubernetes con Zabbix 6.

Requisitos

Para poder seguir este tutorial es necesario cumplir con los requisitos mínimos:

  • Kubernetes cluster 1.18 o superior
  • Helm 3.0 o superior
  • Zabbix Server 6.0 o superior
  • kube-state-metrics 2.13.2 o superior
  • Ubuntu Server

Despliegue de Zabbix en Kubernetes

El primer paso será conectarnos a nuestro master de Kubernetes y añadir el siguiente repositorio.

helm repo add zabbix-chart-6.0  https://cdn.zabbix.com/zabbix/integrations/kubernetes-helm/6.0

Exportamos los valores por defecto de chart en el siguiente fichero yaml.

helm show values zabbix-chart-6.0/zabbix-helm-chrt > $HOME/zabbix_values.yaml

Creamos un namespace al cual llamaremos zabbix.

kubectl create namespace zabbix

Desplegamos zabbix en nuestro cluster de Kubernetes.

helm install zabbix zabbix-chart-6.0/zabbix-helm-chrt --dependency-update -f $HOME/zabbix_values.yaml -n zabbix

Comprobamos que se han creado todos los pods y que no hay errores.

kubectl get pods -n zabbix

Todo correcto 🙂

NAME                                         READY   STATUS    RESTARTS        AGE
zabbix-agent-6rk9s                           1/1     Running   6 (5h32m ago)   5h35m
zabbix-agent-bnw9x                           1/1     Running   6 (5h32m ago)   5h35m
zabbix-agent-z54mz                           1/1     Running   0               5h35m
zabbix-kube-state-metrics-5bd6454bf6-zdsvq   1/1     Running   0               5h35m
zabbix-proxy-6d87d5fccc-66n9c                1/1     Running   0               5h35m

Configuración en Zabbix

En primer lugar nos vamos a ir, en el menú de la izquierda, a Configuration-Hosts y vamos a añadir un nuevo host.

En la pestaña host vamos a poner el nombre de nuestro host, le vamos a asignar la plantilla «Kubernetes nodes by HTTP» y por último lo añadiremos al grupo de host que deseemos.

En la pestaña Macros tendremos que añadir lo siguiente:

El primer parámetro será {$KUBE.API.ENDPOINT.URL} en donde especificaremos la url de acceso a nuestro API Server de Kubernetes. Para obtener este valor debéis iros a vuestro nodo master de kubernetes y ejecutar el siguiente comando:

kubectl config view

Obtendréis una información parecida a esta. El valor que nos interesa es la url que encontráis en el parámetro server debajo de la etiqueta cluster (en mi caso aparece server: https://192.168.8.150:6443). Tendréis que poner esa url pero añadiendo al final /api.

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://192.168.8.150:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: [email protected]
current-context: [email protected]
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED

El segundo parámetro a añadir será {$KUBE.API.TOKEN}. Para obtener este token debéis volver al nodo maestro de kubernetes y ejecutar el siguiente comando:

kubectl get secret zabbix-service-account -n zabbix -o jsonpath={.data.token} | base64 -d

El tercer parámetro es {$KUBE.STATE.ENDPOINT.NAME}. El valor por defecto es zabbix-kube-state-metrics pero os recomiendo lo comprobéis por si lo habéis cambiado, para verificarlo ejecutar en el nodo master el siguiente comando:

kubectl -n zabbix get ep

Al final debería quedaros algo como lo siguiente:

Pulsamos en añadir.

Ahora vamos a añadir un segundo host y en la pestaña host vamos a poner el nombre de nuestro host, le vamos a asignar la plantilla «Kubernetes cluster state by HTTP» y por último el grupo de host que queramos.

En la pestaña Macros tendremos que añadir lo siguiente:

El parámetro {$KUBE.API.URL} es la misma url que habéis utilizado en la configuración del host anterior pero sin añadir al final /api

Y los parámetros {$KUBE.API.TOKEN} y {$KUBE.STATE.ENDPOINT.NAME} son los mismos valores que obtuvimos y utilizamos en la creación del anterior host.

Debería quedaros algo así.

Y listo, ya sólo nos quedará esperar unos minutos para que Zabbix empiece a obtener toda la información relativa a nuestro cluster de Kubernetes y de esta forma tener todo nuestro entorno perfectamente monitorizado.

Como siempre espero que os haya sido de utilidad.

Entradas relacionadas

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: