Contexto

Durante años usamos Icinga para monitorear nuestra infraestructura y la verdad es que cumplía no sólo bien su trabajo, es espectacular.

Pero llegó ese hermoso momento donde una herramienta open source empieza a decir: “sí, sí… puedes usarme, pero si quieres hacerlo cómodamente en un entorno empresarial basado en Red Hat, hay que pasar por caja”. Y bueno… la calculadora empezó a sonar más fuerte que las alertas del monitoreo.

Así que tocó hacer lo que hacemos los sysadmin cuando una herramienta cambia las reglas del juego:

Juntar las cajas, empacar los scripts, agarrar los templates y mudarnos con camas y petacas a Zabbix.

La parte buena es que la migración nos dio la excusa perfecta para ordenar la casa, mejorar algunos monitoreos y automatizar varias cosas que antes estaban repartidas entre scripts, configuraciones manuales y ese clásico “déjame revisar cómo lo hice la última vez”.

Como parte de este cagazo proceso nació esta integración para monitorear servidores Zimbra Collaboration utilizando Zabbix, permitiendo tener visibilidad del estado de los servicios críticos antes de que el problema llegue a los usuarios.


Un servidor de correo es de esas cosas que funcionan perfecto… hasta que dejan de funcionar.

Y ahí comienza la aventura: revisar servicios, logs, procesos y esperar encontrar al culpable antes de que llegue el clásico “¿cuándo vuelve el correo?”. La idea es simple:

Que Zabbix sea quien avise primero, no el usuario descubriendo que el correo está caído.


"Ok, basta de cháchara, como decía mi abuela: dos cucharadas y a la papa. Vamos al grano."

¿Qué vamos a hacer?

Esta solución agrega monitoreo personalizado para servidores Zimbra mediante:

  • Scripts ejecutados desde Zabbix Agent.
  • UserParameters personalizados.
  • Descubrimiento automático de servicios Zimbra.
  • Template listo para importar en Zabbix.
  • Triggers para detectar problemas.
  • Métricas adicionales del servidor.

El objetivo no es llenar Zabbix de gráficos que nadie mira, sino obtener información útil para operar el servicio.

Requisitos previos

Antes de comenzar necesitamos:

  • Un servidor Zimbra funcionando correctamente.
  • Zabbix Agent instalado en el servidor Zimbra.
  • Acceso root al servidor.
  • Un servidor Zabbix operativo.
  • Café. Porque, seamos honestos, no hay informática seria sin café. ☕

El monitoreo funciona utilizando el usuario zabbix, con permisos controlados para ejecutar comandos específicos como usuario zimbra.

Nada de darle permisos de más al agente porque “después vemos”. Ya sabemos cómo termina esa historia.

Instalación automática

El repositorio incluye un script que realiza toda la configuración automáticamente:

  • Copia los scripts de monitoreo.
  • Configura los UserParameters del agente.
  • Crea los permisos sudo necesarios.
  • Reinicia el agente Zabbix.

Puedes encontrar el script y toda la documentación en:

Repositorio GitHub:

https://github.com/OrangeBox-Labs/Zabbix/tree/main/zabbix_zimbra

En el servidor Zimbra:

    chmod +x install_zabbix_zimbra_agent.sh
    ./install_zabbix_zimbra_agent.sh

El script detecta si está instalado Zabbix Agent o Zabbix Agent 2 y configura automáticamente el archivo correspondiente.

¿Qué hace el script internamente?

Aunque el script automatiza todo, es importante entender qué ocurre por detrás.

Porque copiar y ejecutar comandos sin saber qué hacen funciona… hasta que deja de funcionar y es imposible reparar algo que no sabes como funciona.

Instalación manual de los componentes

Si quieres entender qué hace el instalador, estos son los pasos que realiza internamente.

Instalación de scripts de monitoreo

Los scripts se copian en:

/usr/local/bin/

Estos scripts son los encargados de obtener la información que posteriormente consulta Zabbix:

  • zabbix_zimbra_discovery.sh

    Realiza descubrimiento automático de los servicios disponibles en Zimbra.

  • zabbix_zimbra_status.sh

    Consulta el estado individual de cada servicio.

  • zabbix_zimbra_queue.sh

    Obtiene información de la cola de correo.

  • zabbix_zimbra_mailstats.sh

    Obtiene estadísticas de correo enviado, recibido, spam y virus.

  • zabbix_zimbra_version.sh

    Obtiene la versión instalada de Zimbra.

  • zabbix_zimbra_extra.sh

    Obtiene métricas adicionales del sistema.

Configuración del Zabbix Agent

El instalador agrega automáticamente la configuración necesaria para que Zabbix pueda consultar la información de Zimbra.

Dependiendo del agente instalado, la configuración queda en:

Zabbix Agent 2:

/etc/zabbix/zabbix_agent2.d/zabbix_zimbra.conf

Zabbix Agent:

/etc/zabbix/zabbix_agentd.d/zabbix_zimbra.conf

Esta configuración agrega los UserParameters necesarios para ejecutar los scripts de monitoreo.

Algunos de los parámetros disponibles son:

zimbra.discovery
zimbra.service.status[nombre]
zimbra.queue
zimbra.mailstats.sent
zimbra.mailstats.received
zimbra.mailstats.spam
zimbra.mailstats.virus
zimbra.version

Después de modificar la configuración del agente, se debe reiniciar el servicio:

    systemctl restart zabbix-agent2

o:

    systemctl restart zabbix-agent

Permisos y seguridad

Para consultar información de Zimbra no es necesario ejecutar todo como root.

El instalador crea una configuración sudo específica para que el usuario zabbix pueda ejecutar solamente los comandos necesarios como usuario zimbra.

El archivo creado es:

    /etc/sudoers.d/zabbix_zimbra

La idea es mantener el principio de mínimo privilegio:

Zabbix puede monitorear lo necesario, pero no tiene acceso total al servidor.

Porque darle root completo a todo lo que pide acceso suele funcionar… hasta el día que deja de ser una buena idea. 😄

Importar la plantilla en Zabbix

El repositorio incluye una plantilla lista para importar:

    zabbix_zimbra_template.yaml

Para importarla:

  1. Ir a:
   Configuración → Plantillas
  1. Seleccionar:
   Importar
  1. Cargar:
   zabbix_zimbra_template.yaml
  1. Importar la plantilla.

Luego debes asociarla al host correspondiente del servidor Zimbra.

¿Qué monitorea la plantilla?

Actualmente permite monitorear diferentes componentes del servidor Zimbra.

Servicios Zimbra

Mediante descubrimiento automático:

  • mailbox
  • mta
  • antivirus
  • antispam
  • ldap
  • proxy
  • servicios adicionales disponibles

Esto permite detectar rápidamente si algún componente importante deja de funcionar.

Cola de correo

Permite detectar acumulación de mensajes pendientes.

Una cola creciendo puede indicar problemas de entrega, saturación, fallas en componentes del sistema de correo o incluso algo bastante más desagradable: que una cuenta fue comprometida o que el servidor quedó como “open relay” y alguien lo está usando de zombie para mandar SPAM a medio internet.

Porque sí, a veces el problema no es que los correos no salgan… es que están saliendo demasiados.

Estadísticas de correo

Incluye métricas como:

  • Correos enviados.
  • Correos recibidos.
  • Spam detectado.
  • Virus detectados.

Información adicional del servidor

Incluye datos como:

  • Versión de Zimbra.
  • Tamaño de almacenamiento.
  • Cantidad de cuentas.
  • Cantidad de dominios.

Validación del monitoreo

Después de ejecutar la instalación puedes validar manualmente que los scripts funcionen correctamente.

Ejemplo:

    sudo -u zabbix /usr/local/bin/zabbix_zimbra_discovery.sh

Consultar el estado de un servicio:

    sudo -u zabbix /usr/local/bin/zabbix_zimbra_status.sh antivirus

Consultar la cola de correo:

    sudo -u zabbix /usr/local/bin/zabbix_zimbra_queue.sh

También puedes probar desde el servidor Zabbix utilizando zabbix_get:

    zabbix_get -s IP_DEL_ZIMBRA -k zimbra.discovery

    zabbix_get -s IP_DEL_ZIMBRA -k zimbra.queue

Solución de problemas

Si algún ítem aparece como “No soportada” en Zabbix:

Revisar primero el estado del agente:

    systemctl status zabbix-agent2

Validar permisos:

    sudo -u zabbix /usr/local/bin/zabbix_zimbra_status.sh antivirus

Comprobar que Zimbra responda correctamente:

    su - zimbra -c "/opt/zimbra/bin/zmcontrol status"

Si los scripts funcionan manualmente pero Zabbix no obtiene datos, revisar:

  • Permisos sudo.
  • Configuración del UserParameter.
  • Logs del agente Zabbix.
  • Timeout de los ítems.

Código y documentación completa

Todo el código está disponible en GitHub:

https://github.com/OrangeBox-Labs/Zabbix/tree/main/zabbix_zimbra

Si encuentras un error, tienes una sugerencia o hiciste una mejora, contáctanos. La idea es que estas herramientas sigan creciendo con la experiencia de quienes las usan y que cada aporte ayude a que sean mejores para todos.

¿Necesitas ayuda con tu monitoreo Zimbra y Zabbix?

Implementar monitoreo correctamente no es solamente instalar Zabbix y esperar que aparezcan gráficos.

Hay que definir qué medir, cómo alertar y cómo obtener información útil cuando realmente ocurre un problema.

Si tu equipo necesita apoyo para implementar, mejorar o mantener su plataforma de monitoreo, en OrangeBox podemos ayudarte.

Trabajamos con:

  • Implementación y administración de Zabbix.
  • Creación de templates personalizados.
  • Integración de alertas y automatizaciones.
  • Monitoreo de infraestructura Linux, VMware, Zimbra y servicios críticos.
  • Dashboards orientados a operación, no solamente gráficos bonitos que nadie mira.

La idea es simple: enterarte del problema antes de que llegue el clásico mensaje de “oye, ¿está caído el correo?”.

¿Quieres conversar sobre tu infraestructura?

Escríbenos a:

info@orangebox.cl

Revisa nuestros planes y servicios:


Si encuentras un error, tienes una sugerencia o hiciste una mejora, contáctanos. La idea es que estas herramientas sigan creciendo con la experiencia de quienes las usan y que cada aporte ayude a que sean mejores para todos.

¡Gracias totales!