Saludos amigos, hace unos meses os mostraba cómo monitorizar las colas de correo en un entorno de Zimbra Collaboration, así como los recursos de la máquina, para tener controlado todo nuestro entorno:
El artículo tuvo mucha repercusión, y son ya decenas de entornos donde ha sido instalado, pero algunos me comentabais que necesitabais una segunda parte para monitorizar:
- Estado de los servicios
- Licencia y su estado
- Versión de Zimbra Collaboration
Con lo que, una vez terminado este Blog, podremos tener un Mapa de PRTG similar a este:
Descargando y configurando los Scripts
Para monitorizar el estado de los servicios, licencia y versión necesitaremos tres scripts que podemos descargar haciendo click en cada link: checkzimbraversion.sh, zimbraservices.sh y checkzimbrastatus.sh. O también los tenéis todos en el repositorio de GitHub.
Si os fijáis bien, estoy usando una nueva carpeta para los scripts, en vez de la vieja ubicación que se podría perder al actualizar Zimbra, usar esta nueva en /etc/snmp/scripts
mkdir /etc/snmp/scripts /etc/snmp/scripts/checkzimbrastatus.sh /etc/snmp/scripts/checkzimbraversion.sh /etc/snmp/scripts/zimbraservices.sh chmod +x /etc/snmp/scripts/checkzimbrastatus.sh && chmod +x /etc/snmp/scripts/checkzimbrastatus.sh && chmod +x /etc/snmp/scripts/zimbraservices.sh
Tendremos que añadir el script /etc/snmp/scripts/zimbraservices.sh a nuestro cron, con la frecuencia que queramos comprobar los servicios de Zimbra, en mi caso por ejemplo cada cinco minutos. Este script comprueba los servicios y guarda el estado en un fichero temporal que luego la librería extendida de SNMP lee:
crontab -e */5 * * * * /bin/sh /etc/snmp/scripts/zimbraservices.sh
Configuración de fichero de SNMP
Continuaremos por el fichero de configuración de SNMP ubicado en /etc/snmp/snmpd.conf en este fichero añadiremos lo siguiente, que será lo que cree los valores SNMP:
# Zimbra Service status, License and version extend ZimbraVersion /etc/snmp/scripts/checkzimbraversion.sh extend ZimbraStatusAmavis /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusAmavis extend ZimbraStatusAntispam /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusAntispam extend ZimbraStatusAntivirus /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusAntivirus extend ZimbraStatusConvertd /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusConvertd extend ZimbraStatusLDAP /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusLDAP extend ZimbraStatusLogger /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusLogger extend ZimbraStatusMailboxd /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusMailboxd extend ZimbraStatusMemcache /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusMemcache extend ZimbraStatusMTA /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusMTA extend ZimbraStatusOpendkim /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusOpendkim extend ZimbraStatusProxy /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusProxy extend ZimbraStatusServicewebapp /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusServicewebapp extend ZimbraStatusSNMP /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusSNMP extend ZimbraStatusSpell /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusSpell extend ZimbraStatusStats /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusStats extend ZimbraStatusZimbrawebapp /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusZimbrawebapp extend ZimbraStatusZimbraadminwebapp /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusZimbraadminwebapp extend ZimbraStatusConfigd /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusConfigd extend ZimbraStatusLicense /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusLicense extend ZimbraStatusLicensevalid /etc/snmp/scripts/checkzimbrastatus.sh ZimbraStatusLicensevalid
Si reiniciamos ahora el servicio de SNMP y lanzamos un snmpwalk veremos el resultado de todo okay, si no tuvieramos resultado de los servicios, lanzar el script de zimbraservices.sh:
snmpwalk -c public -v2c 127.0.0.1 NET-SNMP-EXTEND-MIB::nsExtendOutLine NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraVersion".1 = STRING: 8.7.11 GA NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusMTA".1 = STRING: Running NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusLDAP".1 = STRING: Running NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusSNMP".1 = STRING: Running NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusProxy".1 = STRING: Running NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusSpell".1 = STRING: Running NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusStats".1 = STRING: Running NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusAmavis".1 = STRING: Running NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusLogger".1 = STRING: Running NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusConfigd".1 = STRING: Running NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusLicense".1 = STRING: license is OK NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusAntispam".1 = STRING: Running NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusConvertd".1 = STRING: Running NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusMailboxd".1 = STRING: Running NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusMemcache".1 = STRING: Running NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusOpendkim".1 = STRING: Running NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusAntivirus".1 = STRING: Running NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusLicensevalid".1 = STRING: 20211231170000Z NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusZimbrawebapp".1 = STRING: Running NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusServicewebapp".1 = STRING: Running NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraStatusZimbraadminwebapp".1 = STRING: Running
Extraer el OID de cada nuevo SNMP Extended
Para trabajar posteriormente con PRTG, o cualquier otro producto de SNMP, tendremos que conocer los OID, para ello podemos conocerlo lanzando el siguiente comando:
snmpwalk -On -v2c -c public 127.0.0.1 NET-SNMP-EXTEND-MIB::nsExtendOutputFull.\"ZimbraStatusSpell\" .1.3.6.1.4.1.8072.1.3.2.3.1.2.17.90.105.109.98.114.97.83.116.97.116.117.115.83.112.101.108.108 = STRING: Running
Tenemos que realizar esto por cada nuevo SNMP extendido.
Configurando los sensores en PRTG
Nos iremos como siempre a nuestro dispositivo de Zimbra que ya tenemos configurado y le daremos añadir sensor, del tipo SNMP Custom String:
(Repetir por cada servicio que queremos monitorizar) Introduciremos el valor de OID, y en el campo donde dice Response Must Not Include (Down Status) introduciremos Stopped
Para el sensor de Licencia igualmente, pero sin añadir nada a error:
Después de varios minutos configurando, podremos ver el resultado, que es exactamente lo que necesitamos ver en nuestras herramientas de monitorización. He puesto el ejemplo con un servicio parado para que veáis como queda:
Con un poco de maña y paciencia os puede quedar un mapa como este o mejor:
Enlaces Interesantes
Os dejo algunos enlaces relacionados que seguramente os serán de ayuda:
- Zimbra: Monitorizando una Infraestructura de Zimbra Collaboration con PRTG
- En busca del Dashboard perfecto: InfluxDB, Telegraf y Grafana – Parte IX (Monitorizando Zimbra Collaboration)
- PRTG: Cómo monitorizar tus Certificados SSL: expiración,seguridad y más
- PRTG: Actualizando de la versión gratuita de 100 sensores a la versión de pago



Jorge, como estás?
Tengo un problema con esto y sospecho que es por como me da el output del script zimbraservices.sh
Esto es lo que veo en /tmp/tmpservices.out
“● zimbra.service – LSB: Zimbra mail service
Loaded: loaded (/etc/init.d/zimbra; bad; vendor preset: enabled)
Active: active (exited) since Fri 2017-10-06 17:08:13 ART; 4 months 2 days ago
Docs: man:systemd-sysv-generator(8)
Process: 911 ExecStart=/etc/init.d/zimbra start (code=exited, status=0/SUCCESS)
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.”
Alguna idea de por que pueda ser?
Por lo que entiendo viendo los demás scripts, deberían estar los resultados de todos los servicios ahí.