Nagios es un proyecto de código libre que nos permite monitorizar a pequeña,media o gran escala equipos y servicios, y teniendo múltiples opciones de configuración a través de plugins o diversos protocolos,alertas via sms de poco espacio en disco, ping para saber si está up, memoria ram disponible y un largo etcétera, de tal manera que podemos saber algo que va a ocurrir, antes de que ocurra =)
Para más info www.nagios.org
Primeramente,hay que escoger el tipo de instalación de Nagios que vamos a realizar,compilado desde tarball o mediante los repositorios de Debian Etch,para el primer caso realizariamos lo siguiente:
Download Nagios 2.6 y plugins 1.4.4 en tarball de la pagina oficial Descomprimir Nagios,acceder al directorio:
Se crea un usuario y grupo de nombre nagios
$ groupadd nagios && useradd nagios -g nagios
Se agrega un grupo para ejecutar comandos nagios utilizando el grupo nagios:
$ usermod -G nagios (usuario-apache)*
El usuario apache se extrae de ps -aux|grep apache2 = www-data
Configure
./configure --prefix=/usr/local/nagios --with-cgiurl=/nagios/cgi-bin --with-htmlurl=/nagios/ --with-nagios-user=nagios
--with-nagios-grp=nagios --with-command-grp=nagios
Compilar :
$ make all
Instalacion Binarios y archivos html :
$ make install
Instalar ejemplos de configuracion:
$ make install-config en /usr/local/nagios/etc/
Instala script de iniciacion:
$ make install-init
Todos los archivos de /usr/local/nagios deben pertenecer a usuario y grupo nagios:
$ chown -R nagios:nagios nagios
$ ls -sahl /usr/local/nagios
Configuracion del script creado para que se ejecue siempre al arranque:
$ update-rc.d nagios defaults
Configuracion permisos de algunos directorios:
$ make install-commandmode
Creacion de symlins de binarios para nuestro sistema:
$ ln -s /usr/local/nagios/bin/nagios /usr/sbin/nagios
$ ln -s /usr/local/nagios/bin/nagiostats /usr/bin/nagiostats
Instalacion de los plugins:
$ tar -zxvf nagios-plugins-1.4.4.tar.gz && cd nagios-1.4.4
Configuracion:
$ ./configure --prefix=/usr/local/nagios --with-cgiurl=/nagios/cgi-bin
Instalacion:
$ make && make install && make install-root
Creacion de interfaz web editando /etc/apache2/sites-available/
Creacion del archivo login/pass:
$htpasswd -c /usr/local/nagios/etc/htpasswd.users admin
$cat /usr/local/nagios/etc/htpasswd.users
Al haber ejecutado make install-config se nos crean ficheros sample de configuracion de nagios en /usr/local/nagios/etc/, debemos renombrarlos de fichero-sample.cfg a fichero.cfg,aun así,nos faltarán diversos ficheros que son los siguientes y que iremos creando a mano:
Fichero contactgroup.cfg
define contactgroup{
contactgroup_name admin
alias Nagios Administrators
members nagiosadmin
}
Fichero contacts.cfg
define contact{
contact_name nagiosadmin
alias Nagios Administrator
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email root@localhost
}
Fichero hostgroups.cfg
define hostgroup{
hostgroup_name oficina
alias equipos_oficina
members pc-javi
}
Fichero hosts.cfg
define host{
name generic-host ; The name of this host template
notifications_enabled 1 ; Host notifications are enabled
event_handler_enabled 1 ; Host event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program r
notification_period 24x7 ; Send host notifications at any time
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLA
}
define host{
use generic-host ; Name of host template to use
host_name pc-javi
alias PC de Javi
address 192.168.1.110
check_command check-host-alive
max_check_attempts 20
contact_groups admin
notification_interval 60
notification_period 24x7
notification_options d,u,r
}
Fichero services.cfg
define service{
name generic-service ; The n ame of this service template
active_checks_enabled 1 ; Active service checks are enabled
passive_checks_enabled 1 ; Passive service checks are enabled/accepted
parallelize_check 1 ; Active service checks should be parallelized (disabling t
obsess_over_service 1 ; We should obsess over this service (if necessary)
check_freshness 0 ; Default is to NOT check service freshness
notifications_enabled 1 ; Service notifications are enabled
event_handler_enabled 1 ; Service event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program r
is_volatile 0 ; The service is not volatile
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEM
}
define service{
# use generic-service ; Name of service template to use
host_name pc-javi
service_description PING
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups admin
notification_interval 240
notification_period 24x7
notification_options c,r
check_command check_ping!100.0,20%!500.0,60%
}
Fichero timeperiods.cfg
# This defines a timeperiod where all times are valid for checks,
# notifications, etc. The classic 24x7 support nightmare. : - )
define timeperiod{
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
# workhours timeperiod definition
define timeperiod{
timeperiod_name workhours
alias Normal Working Hours
monday 09:00-18:00
tuesday 09:00-18:00
wednesday 09:00-18:00
thursday 09:00-18:00
friday 09:00-18:00
saturday 10:00-13:00
}
# nonworkhours timeperiod definition
define timeperiod{
timeperiod_name nonworkhours
alias Non-Work Hours
sunday 00:00-24:00
monday 00:00-09:00,18:00-24:00
tuesday 00:00-09:00,18:00-24:00
wednesday 00:00-09:00,18:00-24:00
thursday 00:00-09:00,18:00-24:00
friday 00:00-09:00,18:00-24:00
saturday 00:00-10:00,13:00-24:00
}
# none timeperiod definition
define timeperiod{
timeperiod_name none
alias No Time Is A Good Time
}
Revisión de los ficheros de configuracion con:
$nagios -v /usr/local/etc/nagios.cfg
Total Warnings: 0
Total Errors: 0
Ahora solo debemos configurar apache para la autenticación de la siguiente manera editando el fichero /etc/apache2/sites-available/
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
nagios/">
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
Alias /nagios /usr/local/nagios/share
nagios/share">
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
Reiniciar apache2:
$ /etc/init.d/apache2 restart
Ejecutar http://192.168.1.90/nagios :)
Para el segundo caso mediante repositorios Debian Etch:
nagios2
apache2
libapache2-mod-php5
php5-common
php5-mysql
phpmyadmin
mysql-common
mysql-client-5.0
mysql-server
Una vez instalados y si podemos acceder a través de http://ip_server/nagios2, ingresaremos nombre de usuario y contraseña que nos pidió en el momento de configuración del paquete
Hay que tener en cuenta que los directorios a los que apunta "
$ htpasswd -c /etc/nagios2/htpasswd.users admin
Aquí ingresaremos el password del usuario admin para el acceso a Nagios. Una vez hecho esto se puede reiniciar apache para que tengan efecto las configuraciones
$ /etc/init.d/apache2 restart
Si podemos acceder con nombre de usuario y contraseña a http://servidor/nagios2 todo ha ido correctamente Una vez instalado Nagios usaremos Fruity para la configuración del mismo, Fruity es simplemente un front-end que ¿¿facilita?? bastante la tarea de administracion de host,servicios,etc,lo bajamos con:
$ wget -c http://heanet.dl.sourceforge.net/sourceforge/fruity/fruity- 1.0-rc1.tar.gz
Descomprimimos fruity en /var/www/
$ tar -zxvf fruity-1.0-rc1.tar.gz && mv fruity-1.0-rc1.tar.gz fruity && cd fruity
Creamos un symlink del directorio logos a fruity ya que ambos usan los mismos:
$ ln -s /usr/local/nagios/share/images/logos/ ./logos
Se edita nuevamente el /etc/apache2/sites-available/
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Fruity Access"
AuthType Basic
AuthUserFile /var/www/fruity/htpasswd.users
Require valid-user
$ htpasswd -c /var/www/fruity/htpasswd.users fruity
Ahora nos dirigimos al directorio /var/www/fruity/includes a editar en el fichero config.inc las siguientes variables:
$sys_config['logos_path'] = '/var/www/fruity/logos';
$sitedb_config['host'] = 'localhost';
$sitedb_config['username'] = 'fruity';
$sitedb_config['password'] = 'password';
$sitedb_config['database'] = 'fruity';
$sitedb_config['dbserv'] = 'mysql';
Una vez hecho esto se crea la bdd y se dan los permisos oportunos:
$ mysql -u root -p
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 2 to server version: 5.1.6-alpha
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql> SET PASSWORD FOR root@localhost=PASSWORD('password');
Query OK, 0 rows affected (0.01 sec)
mysql> create database fruity;
Query OK, 1 row affected (0.00 sec)
mysql> grant INSERT,SELECT on root.* to fruity@localhost;
Query OK, 0 rows affected (0.00 sec)
mysql> SET PASSWORD FOR fruity@localhost=PASSWORD('password');
Query OK, 0 rows affected (0.01 sec)
mysql> grant CREATE,INSERT,SELECT,DELETE,UPDATE on fruity.* to fruity@localhost;
Query OK, 0 rows affected (0.00 sec)
mysql> grant CREATE,INSERT,SELECT,DELETE,UPDATE on fruity.* to fruity;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
Después de crear la bdd importamos la configuración de las tablas para dicha bdd:
$ mysql -u fruity -p <>
E insertamos el password que anteriormente hemos asignado a fruity Ya está todo preparado para empezar a utilizar Fruity+Nagios,en el camino me encontré con dos problemas,el primero al lanzar fruity desde el navegador me tiraba el siguiente error :Warning: mysql_pconnect() [function.mysql-pconnect]: Lost connection to MySQL server at 'reading initial communication packet',
system error: 111 in /var/www/fruity/includes/adodb/drivers/adodb-mysql.inc. php
on line 372
Unable to connect to database. Please check your configuration.
Este problema se corrige comentando la linea 47 del fichero /etc/mysql/my.cnf:#bind-address = 127.0.0.1Se guarda el fichero,se levanta de nuevo mysql y listo. El segundo problema con el que me encontre fue una vez hechas las configuraciones anteriores y al acceder a http://servidor/fruity me saltó el siguiente error :
Warning: mysql_pconnect() [function.mysql-pconnect]: Access denied for user 'root'@'localhost'
(using password: NO) in /var/www/fruity/includes/adodb/drivers/adodb-mysql.inc. php on line 372
Unable to connect to database. Please check your configuration.Ésto es debido a que no se puede acceder a la BDD con el usuario root aunque tenga permisos,se soluciona editando de nuevo el fichero /var/www/fruity/includes/
config.inc y cambiar la directiva username que por defecto es root al usuario fruity que habíamos creado. Se reinicia mysql y a correr.
$sitedb_config['host'] = 'localhost';
$sitedb_config['username'] = 'fruity';
$sitedb_config['password'] = 'password';
$sitedb_config['database'] = 'fruity';
No hay comentarios:
Publicar un comentario