Saludos amigos, hace unos días cómo podíamos monitorizar Zimbra Collaboration con InfluxDB, Telegraf y Grafana. Hoy tengo el gusto de presentaros otra manera diferente y más directa si así lo preferimos, usaremos el conocido, sencillo de usar y potente PRTG Network Monitor.
Cuando terminemos este tutorial, podremos tener un mapa parecido a este con el control de toda nuestra Infraestructura de Zimbra Collaboration:
Instalando y configurando SNMP en los servidores Zimbra
Para esta monitorización usaremos el standard de monitorización basado en SNMP, ya que es sencillo, y está soportado por PRTG de manera nativa.
sudo apt-get install snmpd snmp snmp-mibs-downloader
Copiaremos ahora el fichero original de configuración y lo dejaremos como copia por si acaso:
sudo mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
Crearemos ahora un nuevo fichero con los siguientes datos, por favor aplicar los vuestros propios:
/etc/snmp/snmpd.conf rocommunity public syslocation "Zimbra Mail Server" syscontact [email protected]
Vamos a editar ahora el fichero llamado /etc/default/snmpd donde cambiaremos esta línea:
# snmpd options (use syslog, close stdin/out/err). SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -g snmp -I -smux,mteTrigger,mteTriggerConf -p /var/run/snmpd.pid'
Por esta otra:
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid -c /etc/snmp/snmpd.conf'
Y reiniciaremos el servicio de snmp:
sudo /etc/init.d/snmpd restart
Vamos a comprobar que todo está en orden, primero veremos si el servicio está arriba y escuchando correctamente:
netstat -apn|grep snmpd udp 0 0 0.0.0.0:161 0.0.0.0:* 13544/snmpd
Y ahora lanzaremos un snmpwalk para ver si nos devuelve valores:
snmpwalk -v 1 -c public -O e localhost
Si todo ha salido bien, podemos movernos al siguiente paso.
Extendiendo NET-SNMP para monitorizar las colas de Zimbra
Zimbra trae por defecto un módulo SNMP, pero es extremadamente básico, por lo que vamos a extender la monitorización de NET-SNMP, lo que queremos monitorizar las siguientes parámetros:
- Megabytes Recibidos
- Megabytes Enviados
- Total Emails/Recibidos
- Total Emails/Enviados
- Total Recipientes
- Total Remitentes
- Reenviados
- Diferido
- Rebotado
- Rechazado
- Retenido
- Descartado
- Dominios recibiendo Emails
- Dominios enviando Emails
Postfix tampoco nos ofrece unas estadísticas en SNMP, con lo que usaremos el conocido script pflogsumm modificado a nuestro gusto, disponible aquí.
Este Script ya recopila toda la información que necesitamos, lo pondremos en /opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl
Le daremos privilegios de ejecución y haremos una pequeña prueba para ver si tenemos datos:
chmod +x /opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl
Si probamos ahora el script veremos lo siguiente, por ejemplo los mensajes enviados:
/opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl -d today /var/log/zimbra.log -zimbra-received 1
Ya tenemos listos el Script, es la hora de extender la configuraciónn de SNMP, para ello editaremos el fichero snmpd.conf de la siguiente manera:
vi /etc/snmp/snmpd.conf extend ZimbraReceived /opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl -d today /var/log/zimbra.log -zimbra-received extend ZimbraDelivered /opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl -d today /var/log/zimbra.log -zimbra-delivered extend ZimbraForwarded /opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl -d today /var/log/zimbra.log -zimbra-forwarded extend ZimbraDeferred /opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl -d today /var/log/zimbra.log -zimbra-deferred extend ZimbraBounced /opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl -d today /var/log/zimbra.log -zimbra-bounced extend ZimbraRejected /opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl -d today /var/log/zimbra.log -zimbra-rejected extend ZimbraRejectWarning /opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl -d today /var/log/zimbra.log -zimbra-reject-warning extend ZimbraHeld /opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl -d today /var/log/zimbra.log -zimbra-held extend ZimbraDiscarded /opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl -d today /var/log/zimbra.log -zimbra-discarded extend ZimbraBytesReceived /opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl -d today /var/log/zimbra.log -zimbra-bytes-received extend ZimbraBytesDelivered /opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl -d today /var/log/zimbra.log -zimbra-bytes-delivered extend ZimbraSenders /opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl -d today /var/log/zimbra.log -zimbra-senders extend ZimbraSendingDomains /opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl -d today /var/log/zimbra.log -zimbra-sending-domains extend ZimbraRecipients /opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl -d today /var/log/zimbra.log -zimbra-recipients extend ZimbraRecipientDomains /opt/zimbra/common/bin/zimbra_pflogsumm-prtg.pl -d today /var/log/zimbra.log -zimbra-recipient-domains
Reiniciamos el servicio de SNMP y lanzamos lo siguiente para ver si ya nos devuelve resultados:
/etc/init.d/snmpd restart snmpwalk -c public -v2c 127.0.0.1 NET-SNMP-EXTEND-MIB::nsExtendOutLine NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraHeld".1 = STRING: 0 NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraBounced".1 = STRING: 0 NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraSenders".1 = STRING: 1 NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraDeferred".1 = STRING: 2 NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraReceived".1 = STRING: 1 NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraRejected".1 = STRING: 0 NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraDelivered".1 = STRING: 3 NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraDiscarded".1 = STRING: 0 NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraForwarded".1 = STRING: 0 NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraRecipients".1 = STRING: 1 NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraBytesReceived".1 = STRING: 570 NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraRejectWarning".1 = STRING: 0 NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraBytesDelivered".1 = STRING: 3827 NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraSendingDomains".1 = STRING: 1 NET-SNMP-EXTEND-MIB::nsExtendOutLine."ZimbraRecipientDomains".1 = STRING: 1
Ya tenemos resultados mediante SNMP, pero antes tendremos que conocer el OID de estos campos para monitorizarlos en PRTG, repetir estos pasos para bounced, received y rejected:
root@mail:/opt/zimbra/common/bin# snmpwalk -On -v2c -c public 127.0.0.1 NET-SNMP-EXTEND-MIB::nsExtendOutputFull.\"ZimbraReceived\" .1.3.6.1.4.1.8072.1.3.2.3.1.2.14.90.105.109.98.114.97.82.101.99.101.105.118.101.100 = STRING: 3
Ya podemos pasar a PRTG para comenzar la configuración.
Creación del objeto de Zimbra Collaboration en PRTG
El primer paso será crear el objeto con el servidor, o servidores, que queremos monitorizar, para ello nos iremos a Devices – Add Device

Ahora podremos seleccionar si queremos guardar este nuevo device en alguno de los grupos que tengo:
Lo más importante es seleccionar la IP o hostname correcto, y diremos que queremos un descubrimiento manual de sensores:
Configuración de los sensores en PRTG
Ha llegado el momento de configurar nuestros sensores, si nos paramos a pensar antes de realizar este paso, queremos monitorizar lo siguiente:
- Ping hacía el host
- SNMP – CPU
- SNMP – RAM
- SNMP – Disco disponible/ocupado
- SNMP – Consumo de Ethernet IN/OUT
- SNMP – Mensajes enviados, recibidos, descartados, reenviados, diferidos, rebotados, rechazados y retenidos en una sola gráfica
- SNMP – Tamaño de mensajes recibidos y enviados en una gráfica
- SNMP – Total de Recipientes
- SNMP – Total de Senders
- SNMP – Total de dominios recibiendo y enviando en una gráfica
- Estado de HTTPS, IMAP, POP y SMTP
- Estado del certificado público SSL
No voy a entrar en mucho detalle sobre el sensor de ping ya que es muy básico crearlo, para CPU, RAM, DISCO, y Ethernet, lo tenemos todo aquí, elegir los que necesiteis:
Para monitorizar la cola de mensajes en una misma gráfica usaremos el sensor de SNMP Custom/Advanced, donde introduciremos los OID que obtuvimos anteriormente:
En este sensor de SNMP, podemos introducir diferentes channel, con diferentes OID, aquí vemos por ejemplo tres, pero he añadido todos como he indicado en la lista anterior:
Además, para el tamaño de mensajes enviados y recibidos he realizado la misma operación (advertencia por ahora el resultado viene en bytes)
Para los Recipients y los Senders he preferido tener un campo individual para cada uno:
Una vez ver más usaremos el OID de los Recipients aquí:
Para los Dominios que envían y reciben he preferido una gráfica combinada:
Por último para los servicios externos como son HTTPS, IMAPS, etc, lo configuraremos de la siguiente manera:
Para HTTPS introduciremos la URL del Web Client en modo GET:
Para IMAP, seleccionaremos el Sensor llamado IMAP que podremos incluso añadir una cuenta, especial para monitorización sin datos, para comprobar que está todo funcionando correctamente:
Igual para POP3, usaremos el sensor de POP3, al cual podríamos configurar también usuario y password:
Similar para SMTP, que podemos también controlar que está arriba sin problemas de conexión, e incluso enviar un email de prueba para comprobar que el relay de correo funciona:
Para los certificados SSL, tengo una entrada de Blog dedicada entera a esto, pero básicamente seleccionaremos el FQDN que queremos monitorizar:
Mapa de PRTG monitorizando Zimbra Collaboration
He creado este mapa interactivo de PRTG con todas las gráficas importantes de mi servidor de correo, ya que se trata de un Single Server es muy detallado, pero ya os mostraré un mapa con un entorno multi-server.



Excelente Jorge muchas gracias por compartir tu conocimientos !
Es posible o existe alguna herramienta que se pueda vincular a zimbra para saber de que país inician sesión ? asi como google analytics o piwik ?
estoy siendo atacado y mi zimbra solo funciona para mi pais quisiera ver un detallado de eso y así bloquear esas ip
soy algo nuevo en esto….
Saludos Brian,
Si utilizas Elastic para ver tus Logs podrás conocer toda la información, algo más de info aquí:
https://www.sysadminsdecuba.com/2017/05/instalar-elk-stack-elasticsearch-logstash-y-kibana-para-el-monitoreo-de-logs-1era-parte/
https://www.sysadminsdecuba.com/2017/06/elk-stack-elasticsearch-logstash-kibana-y-grafana-para-el-monitoreo-de-logs-de-zimbra/
Un saludo
Pflogsumm me está dando un error en zimbra 8.7, cosa que no me pasaba en 8.6
Sabes si hay alguna versión actualizada del script?
(El error que me da es:
= STRING: Redundant argument in printf at /opt/zimbra/common/bin/zimbra-pflogsumm-prtg.pl line 962, line 101439.
2856 )
Ya lo resolví, le saqué el “-w” al inicio del script para que no me muestre el warning, y ya está funcionando bien.
Saludos!
Hola Jorge
hice funcionar el snmp, pero aveces deja de recibir el prtg y da este error
No response (check: firewalls, routing, snmp settings of device, IPs, SNMP version, community, passwords etc) (SNMP error # -2003)
y al rato vuelve solo
Zimbra 8.7.9_GA_1794 (build 20170505054622)
tenes alguna idea?
saludos
Este error se da, ya que el Script consume bastates recuersos. Y se satura el procesador. Lo puedes solucionar haciendo un reinicio al SNMP, pero es temporal ya que nuevamente el script saturará al equipo,
Seguramente sea la forma de leer las colas de correos que no es la mejor, voy a ojear a ver que consigo encontrar, un saludo
hola!una consulta simple:
Como lograst e colocar los graficos del estilo velocidad en el mapa?
Gracias
Saludos, esas son las colas de mensajes, aquí tienes como lo hice como sensor https://www.jorgedelacruz.es/wp-content/uploads/2017/08/zimbra-prtg-snmp-016.png mezclando varios OID, luego el gráfico ya te sale suave.
Gracias por tu rta. aparecieron en el mismo formato. El unico problema que tengo es que cuando lo doy de alta en el mapa lo veo con un formato de “un monitor” y solo el primer valor(en este caso los enviados). no veo la opcion de mostrarlo como aparece en el dispositivo.
Gracias nuevamente
Saludos Mariano, tienes que hacer click en ese monitor, buscar las formas en la derecha que te gusten y arrastrar esa forma al monitor y cambiara.
un saludo!
si. esta claro. lo unico que no me queda claro es el tipo de grafico que usas. en la opcion grafico a la dercha donde tu dices solo me muestra opciones de grfico de tabla y no me de medidor. en la parte de dispostivo y luego medidor hay graficos de pings y otras metricas ya generadas.
gracias
Hola Mariano,

Mira adjunto la imagen de como logarlo:
ahiva queriendo!
gracias
De paso consulta dos:
Es posible borrar diariamente los stats del snmp para obtener un reporte diario de los correos que saca y recibe zimbra???
no sirve mucho ver el acumulado. Es mas util para mi caso ver el diario arrancando desde 0 a las 0 horas
gracias
Saludos Mariano, supongo que editando el script perl que genera este dato sera suficiente, quizá si guardas los valores del script a un fichero estático, y le pasas ese fichero estático a snmp.
Hola Jorge
Excelente tu aporte, la verdad que no trabajo muy frecuentemente con linux, pero la verdad que esta tan bien la explicación que pude avanzar, sin embargo me quede trancado cuando hago la siguiente consulta:
root@zimbra-storage01:/opt/zimbra/common/bin# snmpwalk -c public -v2c 127.0.0.1 NET-SNMP-EXTEND-MIB::nsExtendOutLine
/etc/snmp/snmp.conf: line 6: Warning: Unknown token: rocommunity.
/etc/snmp/snmp.conf: line 7: Warning: Unknown token: syslocation.
/etc/snmp/snmp.conf: line 8: Warning: Unknown token: syscontact.
NET-SNMP-EXTEND-MIB::nsExtendOutLine.”ZimbraHeld”.1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine.”ZimbraBounced”.1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine.”ZimbraSenders”.1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine.”ZimbraDeferred”.1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine.”ZimbraReceived”.1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine.”ZimbraRejected”.1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine.”ZimbraDelivered”.1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine.”ZimbraDiscarded”.1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine.”ZimbraForwarded”.1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine.”ZimbraRecipients”.1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine.”ZimbraBytesReceived”.1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine.”ZimbraRejectWarning”.1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine.”ZimbraBytesDelivered”.1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine.”ZimbraSendingDomains”.1 = STRING: 0
NET-SNMP-EXTEND-MIB::nsExtendOutLine.”ZimbraRecipientDomains”.1 = STRING: 0
Como puedes ver todos los resultados están en Cero y la verdad que no se que me falta, si me puedes ayudar te agradecería
Jorge
Se me olvido comentarte que la version de Zimbra es la 8.5.0_GA_3050 y esta repartido en tres servidores, el LDAP, el Storage y el MTA.
Toda la instalación la estoy realizando en el Storage
Hola Jorge… estoy teniendo algunos problemas con la configuración.
El tuto mostrado aquí es para Debian/Ubuntu con Zimbra???
Por que muchas path no los encuentro ya que estoy en CentOS
Muchas gracias
Saludos, esto es para Zimbra 8.7.x en Ubuntu, desde Febrero de 2018 no he vuelto a tocar esto realmente, lo siento.
Buen dia Jorge, muchas gracias por compartir tu conocimiento!!
Tengo una pregunta que hacerte, ¿Qué me recomiendas para poder extraer una estadistica del promedio de Mb o Kb recibidos por mailbox en mi servidor Zimbra?
Quedo a la espera de tu valioso apoyo.
Saludos desde la Republica de El Salvador.
Hola Jorge, para Centos 7, el comando # snmpd options (use syslog, close stdin/out/err).
SNMPDOPTS=’-Lsd -Lf /dev/null -u snmp -g snmp -I -smux,mteTrigger,mteTriggerConf -p /var/run/snmpd.pid’, mi consulta es: como seria para centos 7?
Que tal Jorge buen día.
Enserio muchas gracias por tu blog y todos tus tutoriales, me han servido como no tienes idea.
Una duda, esperando me puedas ayudar, seguí tus pasos al pie de la letra, solo que al ejecutar el comando snmpwalk -On -v2c -c public 127.0.0.1 NET-SNMP-EXTEND-MIB::nsExtendOutputFull.\”ZimbraReceived\” siempre me arroja “Timeout: No response from 127.0.0.1” tendrás idea del por que me arroja eso?
De antemano gracias por compartir tu conocimiento.
Saludos.
Saludos Marcos,
Estos pasos son desde el propio Zimbra?
Saludos Jorge, gracias por tu respuesta, es correcto, lo hago desde el mismo servidor, incluso eh reemplazado la ip 127.0.0.1 por localhost o la ip del servidor y en ciertas ocasiones responde solo 1 linea y despues me vuelve a dar el mismo error de timeout.
Gracias por tu ayuda.
Que raro, tienes el servicio de SNMP arriba?
Hola Jorge,
muchas gracias por tu blog, está muy bien explicado todo. Actualmente quiero monitorizar mi Zimbra desde PRTG y estoy teniendo problemas por que cuando pongo las extensiones en snmp del fichero zimbra_pflogsumm-prtg.pl para las colas obtengo un time out, aunque si lo ejecuto a mano si obtengo el resultado correcto.
Comentarte que el SNMP está bien ya que obtengo información de otras cosas, como de los servicios.