Hacia un rato que no tocaba ningún Nagios para instalar desde cero, y en esta semana tuve la necesidad de hacerlo, pero recordé que Max me comento de una nueva opción para realizar las mismas tareas que el Nagios, así que para ver algo nuevo o diferente me di a la tarea de ver opciones, de todas la que me llamo más la atención fue la de Icinga con su nueva interfaz, por que la anterior es un naufragios con otro logo, nada más.
En la distro que está instalada en la maquina donde lo instale es el Centos 6.3, en donde al realizar un simple $yum search icinga te indica que no se encuentra en los repositorios de la distro, siguiendo las instrucciones de la página de http://docs.icinga.org/latest/en/quickstart-icinga.html me asegure de cumplir con los requisitos que ahí marca y de los pasos subsecuentes…
No tuve ningún problema para la instalación guiada de acuerdo a la página de instalación hasta que llegue a probar el sistema y darme cuenta que el CGI reportaba un error de permisos de SE Linux
<code>
[Mon Jul 08 11:35:17 2013] [error] [client 127.0.0.1] user not found: /icinga
[Mon Jul 08 11:35:20 2013] [error] [client 127.0.0.1] user root not found: /icinga
[Mon Jul 08 11:36:28 2013] [error] [client 127.0.0.1] (13)Permission denied: exec of ‘/usr/lib64/icinga/cgi/status.cgi’ failed, referer: http://localhost/icinga/
[Mon Jul 08 11:36:28 2013] [error] [client 127.0.0.1] Premature end of script headers: status.cgi, referer: http://localhost/icinga/
[Mon Jul 08 11:36:28 2013] [error] [client 127.0.0.1] (13)Permission denied: exec of ‘/usr/lib64/icinga/cgi/tac.cgi’ failed, referer: http://localhost/icinga/
[Mon Jul 08 11:36:28 2013] [error] [client 127.0.0.1] Premature end of script headers: tac.cgi, referer: http://localhost/icinga/
[Mon Jul 08 11:37:14 2013] [error] [client 127.0.0.1] Directory index forbidden by Options directive: /var/www/html/
[Mon Jul 08 11:37:39 2013] [error] [client 127.0.0.1] (13)Permission denied: exec of ‘/usr/lib64/icinga/cgi/tac.cgi’ failed, referer: http://localhost/icinga/
[Mon Jul 08 11:37:39 2013] [error] [client 127.0.0.1] Premature end of script headers: tac.cgi, referer: http://localhost/icinga/
</code>
Aplique la fácil para identificar el problema
$ setenforce 0
Y después de aplicar dicha línea me dejo acceder a los CGI del sistema.
$ chcon -R -t httpd_sys_script_exec_t /usr/local/icinga/sbin/
$ chcon -R -t httpd_sys_content_t /usr/local/icinga/share/
$ chcon -R -t httpd_sys_script_rw_t /usr/local/icinga/var/rw/
Básicamente toda la configuración es la misma que la del Nagios no cambia nada mas que hacer un remplazo de donde diga Nagios cambiarlo por icinga :(, y gracias al síndrome de instalar todo lo antes posible me di cuenta hasta este paso que el paquete que baje e instale no traía la nueva versión web :(, así que en las próximas semanas tendré que hacer el cambio.
Instalando el Nagiosgraph
El Sancho Panza de Nagios el nagiosgraph me toco instalarlo haciéndole creer que si era Don Quijote, básicamente haciendo unos sutiles cambios en el archivo install.pl que pongo a su disposición, solo lo tengo modificado para RHEL o CentOS, pero les deberá de servir como guía para los otros layouts de instalación disponibles de la herramienta.
Al final como típico paranoico que somos no le permití al script hacer los cambios en los archivos de configuración correspondientes al icinga y al apache por lo que ejecute lo siguiente:
en el archivo: /etc/icinga/objects/commands.cfg
# command to process nagios performance data for nagiosgraph
define command {
command_name process-service-perfdata-for-nagiosgraph
command_line /usr/libexec/nagiosgraph/insert.pl
}
En el archivo de configuración del apache, agregue en los includes la siguiente línea:
include /etc/nagiosgraph/nagiosgraph-apache.conf
y por ultimo reinicie los servicios del icinga y del apache.
Y listo tengo a mi Nagios ups. Tengo a ¿? Icinga funcionando como mi viejo conocido Nagios, cuando actualice el template No-Mas-Nagios les comentare al respecto pero no espero nada muy relevante.
Notas:
A la hora de configurar un check_http sobre un puerto no tradicional el template del servicio no estaba correctamente configurado, en la línea original se tenía:
# ‘check_http’ command definition
define command{
command_name check_http
command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
}
Para que funcionase correctamente con un puerto no estándar modifique la penúltima línea para que quedara de la siguiente forma;
# ‘check_http’ command definition
define command{
command_name check_http
command_line $USER1$/check_http -I $HOSTADDRESS$ -p $ARG1$
}
Solo hay que agregar la -p.