Proxmox: Integrar host en Zabbix 7 LTS
En el mundo de la virtualización y la administración de servidores, Proxmox VE se ha consolidado como una solución robusta y flexible (ni que decir tiene que VMware by Broadcom se lo está dejando muy bien al resto). Sin embargo, para asegurar el rendimiento y la disponibilidad de los sistemas, es crucial contar con una herramienta de monitorización eficaz. Aquí es donde Zabbix entra en juego.
Zabbix es una plataforma de monitorización de código abierto ampliamente utilizada que permite supervisar diversas métricas y notificar a los administradores sobre cualquier anomalía. Integrar Zabbix con Proxmox VE ofrece una visión detallada del estado y rendimiento de los recursos virtualizados, proporcionando alertas tempranas y facilitando la gestión proactiva.
En este artículo, exploraremos cómo configurar esta integración paso a paso, permitiéndote aprovechar al máximo las capacidades de monitorización de Zabbix en tu entorno Proxmox VE. Desde la creación de usuarios y la configuración de permisos hasta la generación de tokens API y su uso en Zabbix, cubriremos todos los aspectos necesarios para una implementación exitosa.
Prepárate para llevar la monitorización de tu infraestructura virtualizada al siguiente nivel con esta potente combinación de Proxmox VE y Zabbix.
Por defecto, no tenemos una plantilla específica en Zabbix 7 LTS, pero podemos descargar una plantilla en los repos oficiales, que ha mejorado bastante lo que había hasta ahora:
https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/proxmox?at=release/7.0
Importamos plantilla desde Recopilación de datos -> Plantillas -> Importar:
Seleccionamos el fichero YAML e importamos:
En un segundo dispondremos de la plantilla:
Instalar agente Zabbix 7 LTS en Proxmox
Instalamos el agente vía consola en cada nodo proxmox:
1 |
root@minis:~# apt install zabbix-agent |
Editamos el fichero:
1 |
root@minis:~# nano /etc/zabbix/zabbix_agentd.conf |
Modificamos estos parámetros:
1 2 3 |
Server=IP_DEL_SERVIDOR_ZABBIX ServerActive=IP_DEL_SERVIDOR_ZABBIX Hostname=NombreDelHostProxmox |
Arrancamos y habilitamos servicio:
1 2 3 4 |
root@minis:~# systemctl restart zabbix-agent root@minis:~# systemctl enable zabbix-agent Synchronizing state of zabbix-agent.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable zabbix-agent |
Configuración de Usuario en Proxmox
Os voy a decir donde podéis encontrar estos pasos vía gráfica, pero personalmente, a día de hoy es más rápido hacerlo vía comando, que también os dejo el proceso.
Al nivel de datacenter, sección Permisos:
- Crea un usuario y un token de API en Proxmox:
- Asignar permisos al usuario:
- Ve a Datacenter > Permissions > Agregar permisos de usuario y asigna el rol PVEAuditor al usuario zabbix@pve en el nivel Datacenter.
Para generar un token de api, os dejo una herramienta online:
- https://it-tools.tech/token-generator
- Crear un un usuario y un token de API para dicho usuario:
- Lo haremos vía comando, pero podéis verlos desde Datacenter > Permissions > API Tokens, selecciona el usuario zabbix@pve
- Crear un un usuario y un token de API para dicho usuario:
Proceso API Token Proxmox vía comando
Os dejo el proceso en comandos, que creo es más sencillo, la verdad:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# Suponiendo que has creado el usuario zabbix y el token de API con el ID monitoring # Crear usuario en la línea de comandos (opcional si nos queremos pasar el paso anterior) root@minis:~# pveum user add zabbix@pve --password <your_password> # Asignar permisos root@minis:~# pveum acl modify / --users zabbix@pve --roles PVEAuditor # Crear token de API root@minis:~# pveum user token add zabbix@pve monitoring ┌──────────────┬──────────────────────────────────────┐ │ key │ value │ ╞══════════════╪══════════════════════════════════════╡ │ full-tokenid │ zabbix@pve!monitoring │ ├──────────────┼──────────────────────────────────────┤ │ info │ {"privsep":1} │ ├──────────────┼──────────────────────────────────────┤ │ value │ 4ce6af0f-489c-4656-bf78-5ef8b3eb3466 │ └──────────────┴──────────────────────────────────────┘ # Listar tokens para verificar root@minis:~# pveum user token list zabbix@pve ┌────────────┬─────────┬────────┬─────────┐ │ tokenid │ comment │ expire │ privsep │ ╞════════════╪═════════╪════════╪═════════╡ │ monitoring │ │ 0 │ 1 │ |
-
-
- Podéis verificar los permisos:
-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
root@minis:~# pveum user permissions zabbix@pve ┌────────────────┬─────────────────────┐ │ ACL path │ Permissions │ ╞════════════════╪═════════════════════╡ │ / │ Datastore.Audit (*) │ │ │ Mapping.Audit (*) │ │ │ Pool.Audit (*) │ │ │ SDN.Audit (*) │ │ │ Sys.Audit (*) │ │ │ VM.Audit (*) │ ├────────────────┼─────────────────────┤ │ /access │ Datastore.Audit (*) │ │ │ Mapping.Audit (*) │ │ │ Pool.Audit (*) │ │ │ SDN.Audit (*) │ │ │ Sys.Audit (*) │ │ │ VM.Audit (*) │ ├────────────────┼─────────────────────┤ │ /access/groups │ Datastore.Audit (*) │ │ │ Mapping.Audit (*) │ │ │ Pool.Audit (*) │ │ │ SDN.Audit (*) │ │ │ Sys.Audit (*) │ │ │ VM.Audit (*) │ ├────────────────┼─────────────────────┤ │ /nodes │ Datastore.Audit (*) │ │ │ Mapping.Audit (*) │ │ │ Pool.Audit (*) │ │ │ SDN.Audit (*) │ │ │ Sys.Audit (*) │ │ │ VM.Audit (*) │ ├────────────────┼─────────────────────┤ │ /pool │ Datastore.Audit (*) │ │ │ Mapping.Audit (*) │ │ │ Pool.Audit (*) │ │ │ SDN.Audit (*) │ │ │ Sys.Audit (*) │ │ │ VM.Audit (*) │ ├────────────────┼─────────────────────┤ │ /sdn │ Datastore.Audit (*) │ │ │ Mapping.Audit (*) │ │ │ Pool.Audit (*) │ │ │ SDN.Audit (*) │ │ │ Sys.Audit (*) │ │ │ VM.Audit (*) │ ├────────────────┼─────────────────────┤ │ /storage │ Datastore.Audit (*) │ │ │ Mapping.Audit (*) │ │ │ Pool.Audit (*) │ │ │ SDN.Audit (*) │ │ │ Sys.Audit (*) │ │ │ VM.Audit (*) │ ├────────────────┼─────────────────────┤ │ /vms │ Datastore.Audit (*) │ │ │ Mapping.Audit (*) │ │ │ Pool.Audit (*) │ │ │ SDN.Audit (*) │ │ │ Sys.Audit (*) │ │ │ VM.Audit (*) │ └────────────────┴─────────────────────┘ Permissions marked with '(*)' have the 'propagate' flag set. root@minis:~# pveum user token permissions zabbix@pve monitoring ┌──────────┬─────────────────────┐ │ ACL path │ Permissions │ ╞══════════╪═════════════════════╡ │ /vms │ Datastore.Audit (*) │ │ │ Mapping.Audit (*) │ │ │ Pool.Audit (*) │ │ │ SDN.Audit (*) │ │ │ Sys.Audit (*) │ │ │ VM.Audit (*) │ └──────────┴─────────────────────┘ Permissions marked with '(*)' have the 'propagate' flag set. |
- Anota el token de API y el usuario, necesitarás esta información para la configuración en Zabbix.
Configuración Zabbix Server 7 LTS para Proxmox
Creamos un nuevo equipo desde Recopilación de datos -> Equipos -> Crear equipo:
Usaremos la plantilla que acabamos a cargar (está en templates de aplicaciones), y luego clonaremos por nodo cambiando IP y nombre:
Completar los detalles básicos del host
- Host name: El nombre del host (debe coincidir con el Hostname en el archivo de configuración del agente).
- Visible name: (Opcional) Nombre visible en Zabbix.
- Groups: Seleccionar el grupo apropiado (por ejemplo, Linux servers).
- Interfaces: Asegurarse de que la interfaz Agent esté configurada correctamente, apuntando a la dirección IP del host Proxmox.
En Macros agregaremos estos valores que los podéis revisar en el fichero YAML de la plantilla:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{$PVE.URL.HOST} - <proxmox_ip> {$PVE.USER} - zabbix@pve {$PVE.PASSWORD} - <tu_password_o_token> {$PVE.URL.PORT} - 8006 ## DETALLE YAML parameters: - name: port value: '{$PVE.URL.PORT}' - name: secret value: '{$PVE.TOKEN.SECRET}' - name: token value: '{$PVE.TOKEN.ID}' - name: url value: '{$PVE.URL.HOST}' |
El alta de equipos lo podéis hacer host a host, o crear un equipo para el CLUSTER PROXMOX, con las IPs de todos los hosts:
Luego desde monitorización, podréis ver el estado:
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?