Oscar Mas de Cadinor, nos deja hoy una entrada muy buena. Lo que vamos a ver hoy, es como podemos monitorizar un sistema basado en Zimbra con un Nagios. Quiero destacar, que este manual está enfocado a los administradores que tienen implementado un nagios ( http://www.nagios.org/ ) y desean monitorizar su sistema de Zimbra. Este manual, no está enfocado a instalar Nagios, ya que por internet existen muchos howtos magníficos, en los cuales explican como desplegar este sistema de monitorización. Esto es un simple ejemplo de qué y como monitorizar un sistema de Zimbra. Si vosotros tenéis algún otro plugging o servicio que se haya de monitorizar, os animo a que me lo indiquéis, así haremos de este post, un post de referencia para otras personas que quieran monitorizar un sistema de Zimbra.
Preparando nuestro servidor de Nagios
Antes de empezar a monitorizar, dejaremos nuestros ficheros de configuración preparados. Crearemos el servidor de Zimbra y un grupo:
root@firewall:~# vim /etc/nagios3/conf.d/ilba_zimbra.cfg
define host{use generic-host
host_name zimbra.ilba.cat
alias zimbra.ilba.cat
address 192.168.100.20
}root@firewall:~# vim /etc/nagios3/conf.d/hostgroups_nagios2.cfg
define hostgroup {
hostgroup_name zimbra-servers
alias Zimbra
members zimbra.ilba.cat
}
Instalando NRPE en nuestro servidor de Zimbra
Lo que haremos, es instalar el cliente de Nagios en nuestro servidor de Zimbra . En mi caso es una CentOS y por defecto, este sistema operativo, no viene el cliente de Nagios en los repositorios oficiales, por consiguiente tendremos que añadir el repositorio EPEL ( Linux Empresarial ) para poder instalar el cliente. OS dejo una captura donde se ve claramente como funciona el sistema de monitorización de Nagios con NRPE ( Nagios Remote Plugin Executor ):
Para instalar el cliente haremos lo siguiente, como ya he indicado anteriormente, añadiremos el repositorios EPEL :
[root@zimbra ~]# rpm -Uhv http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
Una vez añadido el repositorio de EPEL, ya podremos instalar el cliente NRPE en nuestro servidor de Zimbra:
[root@zimbra ~]# yum install nagios-plugins-nrpe nagios-plugins-all nrpe
Ahora tendremos que configurar el cliente de Nagios para que nos acepte argumentos y nos permita acceder desde nuestro servidor de Nagios la monitorización:
[root@zimbra ~]# vim /etc/nagios/nrpe.cfg
allowed_hosts=192.168.100.1
dont_blame_nrpe=1[root@zimbra ~]# service nrpe restart
[root@zimbra ~]# vim /etc/selinux/config
SELINUX=disabled
Monitorizando servicio SMTP
El Simple Mail Transfer Protocol (SMTP) (Protocolo para la transferencia simple de correo electrónico), es un protocolo de red utilizado para el intercambio de mensajes de correo electrónico entre ordenadores u otros dispositivos. Lo que haremos es monitorizar desde fuera del servidor de Zimbra, que el servicio SMTP esté levantado:
root@firewall:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service{
use generic-service
hostgroup_name zimbra-servers
service_description SMTP
check_command check_smtp
}
Monitorizando servicio SUBMISSION
El Submission, es un protocolo de red (puerto 587) utilizado para el intercambio de mensajes de correo electrónico entre ordenadores u otros dispositivos, este puerto es el alternativo al SMTP. Lo que haremos es monitorizar desde fuera del servidor de Zimbra, que el servicio Submission esté levantado:
root@firewall:~# vim /etc/nagios3/commands.cfg
define command{
command_name check_submission
command_line /usr/lib/nagios/plugins/check_smtp -H $HOSTADDRESS$ -p 587
}root@firewall:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service{
use generic-service
hostgroup_name zimbra-servers
service_description Submission
check_command check_submission
}
Monitorizando servicio IMAP
Internet Message Access Protocol (IMAP), es un protocolo de aplicación que permite el acceso a mensajes almacenados en un servidor de Internet. Mediante IMAP se puede tener acceso al correo electrónico desde cualquier equipo que tenga una conexión a Internet. IMAP tiene varias ventajas sobre POP3 (otro protocolo empleado para obtener correos desde un servidor). Por ejemplo, es posible especificar en IMAP carpetas del lado del servidor. Por otro lado, es más complejo que POP3 ya que permite visualizar los mensajes de manera remota y no descargando los mensajes como lo hace POP3. Lo que haremos es monitorizar desde fuera del servidor de Zimbra, que el servicio IMAP esté levantado:
root@firewall:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service{
use generic-service
hostgroup_name zimbra-servers
service_description IMAP
check_command check_imap
}
Monitorizando servicio POP3
En informática se utiliza el Post Office Protocol (POP3, Protocolo de Oficina de Correo o “Protocolo de Oficina Postal”) en clientes locales de correo para obtener los mensajes de correo electrónico almacenados en un servidor remoto. Lo que haremos es monitorizar desde fuera del servidor de Zimbra, que el servicio POP3 esté levantado:
root@firewall:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service{
use generic-service
hostgroup_name zimbra-servers
service_description POP3
check_command check_pop
}
Monitorizando servicio IMAP SSL
Este protocolo, es el mismo que el IMAP, pero el acceso se realiza de manera segura mediante certificados. Lo que haremos es monitorizar desde fuera del servidor de Zimbra, que el servicio IMAP SSL SSL esté levantado:
root@firewall:~# vim /etc/nagios3/commands.cfg
define command{
command_name check_imaps
command_line /usr/lib/nagios/plugins/check_imap -H $HOSTADDRESS$ -p 993 -S
}root@firewall:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service{
use generic-service
hostgroup_name zimbra-servers
service_description IMAP SSL
check_command check_imaps
}
Monitorizando servicio POP3 SSL
Este protocolo, es el mismo que el POP3, pero el acceso se realiza de manera segura mediante certificados. Lo que haremos es monitorizar desde fuera del servidor de Zimbra, que el servicio POP3 SSL SSL esté levantado:
root@firewall:~# vim /etc/nagios3/commands.cfg
define command{
command_name check_pops
command_line /usr/lib/nagios/plugins/check_pop -H $HOSTADDRESS$ -p 995 -S
}root@firewall:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service{
use generic-service
hostgroup_name zimbra-servers
service_description POP3 SSL
check_command check_pops
}
Monitorizando el servicio de ClamAV
ClamAv es el antivirus que usa el sistema de Zimbra. Lo que haremos es monitorizar internamente del servidor de Zimbra, que el servicio ClamAV tenga un socket, eso nos indicará que esta funcionando:
[root@zimbra ~]# vim /etc/nagios/nrpe.cfg
command[check_clamd]=/usr/lib64/nagios/plugins/check_clamd /opt/zimbra/data/clamav/clamav.sock[root@zimbra ~]# service nrpe restart
root@firewall:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service {
use generic-service
hostgroup_name zimbra-servers
service_description ClamAV
check_command check_nrpe_1arg!check_lmtp
}
Monitorizando el servicio LMTP
Local Mail Transfer Protocol o LMTP (Protocolo de transporte local de correo) es un derivado de SMTP, el Simple Mail Transfer Protocol. LMTP es diseñado como una alternativa a SMTP para situaciones donde el lado receptor no dispone de cola de correo (queue mail), como unMTA (Mail Delivery Agent) que entiende conversaciones SMTP.Lo que haremos es monitorizar internamente del servidor de Zimbra, que el servicio LMTP esta funcionando:
[root@zimbra ~]# vim /etc/nagios/nrpe.cfg
command[check_lmtp]=/usr/lib64/nagios/plugins/check_smtp -H localhost -p 7025[root@zimbra ~]# service nrpe restart
root@firewall:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service {
use generic-service
hostgroup_name zimbra-servers
service_description LMTP
check_command check_nrpe_1arg!check_lmtp
}
Monitorizando el servicio SpellCheck
SpellCheck es el corrector ortográfico de Zimbra. Lo que haremos es monitorizar internamente del servidor de Zimbra, que el servicio SpellCheck esta funcionando:
[root@zimbra ~]# vim /etc/nagios/nrpe.cfg
command[check_spell]=/usr/lib64/nagios/plugins/check_http -H localhost -p 7780[root@zimbra ~]# service nrpe restart
root@firewall:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service {
use generic-service
hostgroup_name zimbra-servers
service_description SpellCheck
check_command check_nrpe_1arg!check_spell
}
Monitorizando el servicio DNS
Verificaremos que el servidor de Zimbra tenga acesso a internet y lo que haremos es monitorizar internamente, desde el servidor de Zimbra, que tenga resolución:
[root@zimbra ~]# vim /etc/nagios/nrpe.cfg
command[check_dns]=/usr/lib64/nagios/plugins/check_dns -H google.com[root@zimbra ~]# service nrpe restart
root@firewall:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service {
use generic-service
hostgroup_name zimbra-servers
service_description DNS
check_command check_nrpe_1arg!check_dns
}
Monitorizando el certificado
Ya que el certificado que se instala en nuestro servidor de Zimbra es vital, ya que sin él dejaría de funcionar el sistema. Lo que haremos es monitorizar internamente del servidor de Zimbra, que el certificado no nos haya caduque:
[root@zimbra ~]# vim /etc/nagios/nrpe.cfg
command[check_cert]=/usr/lib64/nagios/plugins/check_http -S -H localhost -C 30[root@zimbra ~]# service nrpe restart
root@firewall:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service {
use generic-service
hostgroup_name zimbra-servers
service_description Cert HTTPS
check_command check_nrpe_1arg!check_cert
}
Monitorizando usuarios logueados
Es importante saber cuantos usuarios hay loginados, ya que si hay varias personas trabajando en el servidor, podemos llegar a chafar procesos o configuraciones entre nosotros.
[root@zimbra ~]# vim /etc/nagios/nrpe.cfg
command[check_users]=/usr/lib64/nagios/plugins/check_users -w 2 -c 3[root@zimbra ~]# service nrpe restart
root@firewall:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service {
use generic-service
hostgroup_name zimbra-servers
service_description Usuarios
check_command check_nrpe_1args!check_users
}
Monitorizando Load Average
El Load Average, se compone de varios elementos, los cuales nos informarán de la carga del servidor.
root@firewall:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service {
use generic-service
hostgroup_name zimbra-servers
service_description Load Average
check_command check_nrpe!check_load!5!10
}
Monitorizando PING
Monitorizando el Ping, podemos llegar a saber si nuestro servidor sufre latencias, las cuales pueden llegar a ser problemáticas para el correcto funcionamiento de nuestro servidor.
define service {
use generic-service
hostgroup_name zimbra-servers
service_description Ping6
check_command check_ping!100.0,20%!500.0,60%
}
Monitorizando espacios
Como podréis ver en la captura, yo tengo mi servidor de Zimbra seccionado en tres particiones: OPT, HSM y Backups. Lo que haremos es monitorizarlas, para que cuando quede poco espacio nos avise.
[root@zimbra ~]# vim /etc/nagios/nrpe.cfg
command[check_opt]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /opt
command[check_backup]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /opt/zimbra/backup
command[check_hsm]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /opt/zimbra/hsm[root@zimbra ~]# service nrpe restart
root@firewall:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service {
use generic-service
hostgroup_name zimbra-servers
service_description Espacio OPT
check_command check_nrpe_1arg!check_opt
}
define service {
use generic-service
hostgroup_name zimbra-servers
service_description Espacio HSM
check_command check_nrpe_1arg!check_hsm
}
define service {
use generic-service
hostgroup_name zimbra-servers
service_description Espacio Backup
check_command check_nrpe_1arg!check_backup
}
Al final de todos estos checks, nos tendría que quedar de la siguiente manera en nuestro Nagios:
Update de Jorge
Adicionalmente a este estúpendo tutorial, añado un par de entradas más interesantes a tener en cuenta:
Plugin check_zmstatus.pl
Este Plugin nos monitoriza el estado de los servicios, directamente ejecutando en el servidor el comando zmcontrol status, como usuario Zimbra. Este plugin puede descargarse aquí y debe meterse en la carpeta donde tengamos nuestros plugins, /usr/lib64/nagios/plugins (para CentOS 64bit), /usr/lib/nagios/plugins (para Ubuntu 12.04 64bit) Este plugin es gracias a schose.net
También hay que ejecutar algunos comandos adicionales, meter en el fichero /etc/sudoers la siguiente línea:
%nagios ALL=(zimbra) NOPASSWD:/opt/zimbra/bin/zmcontrol
Y en nuestro fichero de nrpe.cfg lo siguiente:
[root@zimbra ~]# vim /etc/nagios/nrpe.cfg
command[check_zmstatus]=/usr/lib64/nagios/plugins/check_zmstatus.pl -b $ARG1$
[root@zimbra ~]# service nrpe restart
Ahora en nuestro server de Nagios:
root@srvnagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service {
use generic-service
hostgroup_name zimbra-servers
service_description Zimbra Status
check_command check_nrpe_zimbra
}
Y metemos el comando en nuestro commands.cfg
define command{
command_name check_nrpe_zimbra
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_zmstatus -u
}
El aspecto de este plugin es el siguiente:
Monitorizando MySQL
Y también no olvidemos un servicio clave en nuestra instalación Zimbra, MySQL, podemos comprobarlo de una manera muy sencilla, en nuestro Server de Zimbra ejecutamos:
[root@zimbra ~]# vim /etc/nagios/nrpe.cfg
command[check_zimbra_mysql]=/usr/lib64/nagios/plugins/check_mysql -s /opt/zimbra/db/mysql.sock
[root@zimbra ~]# service nrpe restart
En nuestro server de Nagios ejecutamos lo siguiente:
root@firewall:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service {
use generic-service
hostgroup_name zimbra-servers
service_description Comprobar MySQL
check_command check_nrpe_1arg!check_zimbra_mysql
}define service {
use generic-service
hostgroup_name zimbra-servers
service_description Comprobar MySQL Logger
check_command check_nrpe_1arg!check_zimbra_mysql_logger
}
Es posible que tengamos problemas con las credenciales, hay que crear un usuario en MySQL, sin privilegios ni nada, de la siguiente manera:
mysql> select password(‘PASSWORDVUESTRA’);
+——————————————-+
| password(‘nagios2014’) |
+——————————————-+
| *AB6F6BD001383BE123123123123fdssdf7379334 |
+——————————————-+
1 row in set (0.00 sec)mysql> CREATE USER nagios IDENTIFIED BY PASSWORD ‘*AB6F6BD001383BE123123123123fdssdf7379334’;
Query OK, 0 rows affected (0.52 sec)
Y modificar el command del cliente de la siguiente manera:
[root@zimbra ~]# vim /etc/nagios/nrpe.cfg
command[check_zimbra_mysql]=/usr/lib64/nagios/plugins/check_mysql -s /opt/zimbra/db/mysql.sock -u nagios -p PASSWORDVUESTRA
[root@zimbra ~]# service nrpe restart
Monitorizando Mailq
Otro servicio importante es Mailq, el servicio que nos muestra los mensajes que tenemos en cola, podemos monitorizar si tenemos un problema grande de spam, o que se han quedado los mensajes parados, vamos a monitorizarlo de la siguiente manera:
[root@zimbra ~]# vim /etc/nagios/nrpe.cfg
command[check_zimbra_mailq]=/usr/lib/nagios/plugins/check_mailq -w 100 -c 150 -M postfix
Para este caso, además, tenemos que modificar un fichero, ya que la ruta de mailq dentro de nuestro utils no es correcta:
root@zmmt00:/home/sistemas# vi /usr/lib/nagios/plugins/utils.pm
Y cambiar el $PATH_TO_MAILQ que apunta a /usr/bin/mailq
Por lo siguiente /opt/zimbra/postfix-2.10.1.2z/sbin/mailq que es la ruta correcta en Zimbra
Ejecutando el check de nuevo, veremos que ya podemos ver el número de mensajes en cola, 6 en mi caso.![]()
Esperamos que os sea de ayuda para poder monitorizar vuestros servidores de Zimbra. Como hemos indicado al principio del post, si tenéis algún servicio monitorizado que no esté indicado, os animamos a que nos lo comentéis e iremos añadiéndolo.
Un saludo








Brutal este post! ¿No tendréis lo mismo pero para zabbix?
Un saludo!
Buenos días Roberto, muchas gracias por el comentario. Yo no trabajo zon Zabbix, pero se que Óscar si lo usa de vez en cuando, a ver si se anima 😛
Hola Roberto…..
Me alegra que uses Zabbix, yo a nivel profesional también lo uso. Lo que podemos hacer es colgar la plantilla de Zabbix….
Excelente articulo. Tengo el Nagios bastante saturado ya… no se si podrá aguantar estos check del zimbra.
Gracias y un saludo.
Gran trabajo!!
Gracias, viniendo de ti es un halago 😉
no se podria adaptar todos estos chequeos para Check_mk?? saludos y gracias de antemano
Buenas tardes Daro,
Que yo vea de manera sencilla no. Pero si acabas por migrarlo todo sobre Check_MK y quieres compartirlo con nosotros, lo publicaremos sin problema.
Un saludo
estoy tratando de poder adaptar todo esto en check _mk con chequeos manuales, cuando lo logre lo comparto, un saludo
Jorge, no meu ambiente nao funcionou o check_zmstatus.pl. veja:
/usr/local/nagios/libexec/check_zmstatus.pl -b $ARG1$
CRITICAL: ZMStatus not found – $
Fiz as alterações no /etc/sudoers conforme solicitado.
Minha versao do zimbra é a 8.0.6.
Será que falta alguma coisa?
Obrigado.
Hola Christiano,
¿Qué sucede si ejecutas en Linux simplemente /usr/lib/nagios/plugins/check_zmstatus.pl? Mira mi ejemplo:
root@zmmb01:/home/# /usr/lib/nagios/plugins/check_zmstatus.pl
OK: every service is running fine
root@zmmb01:/home/#
Luego en el fichero nrpe.cfg debe estar así, por favor, asegurate que tienes tu script en /usr/lib/nagios/plugins y no otra ruta, si es otra ruta, cambialo en este fichero:
command[check_zmstatus]=/usr/lib/nagios/plugins/check_zmstatus.pl -b $ARG1$
Y por último en el server de Nagios yo tengo de command esto, donde la variable USER1 es la ruta de los plugins:
$USER1$/check_nrpe -H $HOSTADDRESS$ -c check_zmstatus -u
Un saludo
Excelente post Jorge.
Tengo icinga 1.7.1, sabes si serían aplicables las configuraciones en este entorno?
en caso contrario, que versión de Nagios me recomiendas?
Muchas gracias
Buenas tardes Juan Carlos,
No utilizo Icinga, lo mejor para probar esto con Nagios es buscar una solución que tenga ya Nagios, estadísticas, etc. Lo mejor es que bajes CentreON, que tiene un appliance que es bajar y ya está, y desde ahí configures todo.
Un saludo !
Gracias Jorge, muy amable.
Como siempre unos crack´s. Esta me la perdi y no lo entiendo porque me declaro “fan” de esta página.
Yo tengo habilitada la monitorización con nagios de forma similar a la vuestra, pero hay una cosa que me ha amargado durante un periodo grande de tiempo.
El problema es que me ha dado más de un disgusto el llenado de la partición de logs. El problema es bien sencillo , tenia un problema con el backup que hago del servidor de zimbra, no del backup propio del sistema, cuando coincidian (full de fin de semana..) la partición de logs /opt/zimbra/logs se me llenaba, generaba un log de error por falta de memoria de 55 G , vamos me dejaba frito por eso monitorice el fichero mailbox.log y cuando crece por encima de 10 G .. problemas y mensage..
Saludos
Muchas gracias Alberto,
No se, la entrada ya tiene mucho tiempo, quizá fué antes de que nos leyeras. Muchas gracias por leernos, si quieres añadir el script o líneas para monitorizar el tamaño de Mailbox.log, será de ayuda para el resto.
Un saludo
Muy bueno tu post, una pregunta… Sabes como puedo generar un reporte historico en Nagios Core?
Saludos Carlos, supongo que debes usar extensiones externas:
https://exchange.nagios.org/directory/Addons/Reporting
Un saludo
Hola,
Una consulta… tengo una intranet en la cual me pide autentificación al ingresar al sitio web, mi problema que no encuentro algún plugins para que pueda ingresar en la configuración de nagios el usuario y password para que pueda monitorear el sitio.
Actualmente estoy ocupando el check_http pero este solo me esta monitoreando que el apache se encuentra arriba y ya me he topado que el sitio se encuentra abajo.
Habrá algún plugins??
Saludos Felipe,
Para esto deberas preparar un .html o .php o .aspx que haga lo que necesites internamente, ya sea chequear la bbdd, etc, y te devuelva algo, entonces eso lo recoges con Nagios. O tambien puedes chequear el estado de la web, 404, error 500, etc.
https://exchange.nagios.org/directory/Plugins/Websites,-Forms-and-Transactions/check_website-PHP-script/details
Un saludo