viernes, julio 03, 2009

FreeBSD + NAGIOS

Requerimientos:

FreeBSD instalado
Apache2 instalado

Instalacion:

1) Instalar nagios
# whereis nagios
nagios: /usr/ports/net-mgmt/nagios
# cd /usr/ports/net-mgmt/nagios
# make install clean

Al finalizar la instalacion te mostrara las lineas que debes poner en el archivo /usr/local/etc/apache22/httpd.conf

<Directory /usr/local/www/nagios>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>

<Directory /usr/local/www/nagios/cgi-bin>
Options ExecCGI
</Directory>

ScriptAlias /nagios/cgi-bin/ /usr/local/www/nagios/cgi-bin/
Alias /nagios/ /usr/local/www/nagios/

2) Hacer que inicie con el sistema colocando en /etc/rc.conf
nagios_enable="YES"

Nota:
Nagios por defecto requiere autenticacion, se puede desactivar temporalmente si cambiamos en
/usr/local/etc/nagios/cgi.cfg
la linea original
use_authentication=1
Por esta otra
use_authentication=0

Y asi podemos hacer pruebas temporalmente para poder ver los contenidos CGI mediante el navegador, pero no es buena idea dejarlo asi.

3) Activando la autenticacion para nagios
En las lineas que nos recomienda la instalacion de nagios para el http.conf le adicionaremos otras de modo que quede asi:

# Modificacion para NAGIOS inicio

<Directory /usr/local/www/nagios>
Order deny,allow
Deny from all
#Allow from 127.0.0.1
Allow from all
# Autenticacion inicio
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/etc/nagios/htpasswd.users
Require valid-user
# Autenticacion fin
</Directory>

<Directory /usr/local/www/nagios/cgi-bin>
Options ExecCGI
# Autenticacion inicio
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/etc/nagios/htpasswd.users
Require valid-user
# Autenticacion fin
</Directory>

ScriptAlias /nagios/cgi-bin/ /usr/local/www/nagios/cgi-bin/
Alias /nagios/ /usr/local/www/nagios/

# Modificacion para NAGIOS fin

Y ya si podemos dejar la linea original como recomiendan para cgi.cfg "use_authentication=1"

4) Creando el password
Crear el archivo htpasswd.users
# touch /usr/local/etc/nagios/htpasswd.users
Ponerle la clave
# htpasswd -c /usr/local/etc/nagios/htpasswd.users nagiosadmin
New password: ******
Re-type new password: ******
Adding password for user nagiosadmin

Para el usuario guest (a,b,c):

a) Para permitir el usuario guest, luego de aver configurado nagiosadmin:
Para permitir el usuario guest, el comando seria asi:
# htpasswd /usr/local/etc/nagios/htpasswd.users guest
New password: *****
Re-type new password: *****
Adding password for user guest

b) Luego en el archivo /usr/local/etc/nagios/cgi.cfg
se comentan las lineas originales y se agregan las nuevas, se ve asi:

#authorized_for_all_services=nagiosadmin
authorized_for_all_services=nagiosadmin,guest
#authorized_for_all_hosts=nagiosadmin
authorized_for_all_hosts=nagiosadmin,guest

c) Hay que re-iniciar nagios
# /usr/local/etc/rc.d/nagios restart

5) Re-iniciar el apache
# /usr/local/etc/rc.d/apache22 restart
Ya al tratar de ingresar con el navegador a:
http://miservidor/nagios/
nos debera pedir el usuario (nagiosadmin) y la clave (miclavesecreta)

6) Configurando los equipos dentro de nagios
Bueno, esto no sera una guia completa, ya que hay muchas posibilidades.

Nagios se inicia con el comando
# /usr/local/etc/rc.d/nagios start

Pero seguramente no nos iniciara hasta que le dejemos los archivos que requiere, es que vienene con nombres como

Los que estan en /usr/local/etc/nagios/
cgi.cfg-sample
nagios.cfg-sample
resource.cfg-sample

Los que estan en /usr/local/etc/nagios/objects/
commands.cfg-sample
contacts.cfg-sample
localhost.cfg-sample
printer.cfg-sample
switch.cfg-sample
templates.cfg-sample
timeperiods.cfg-sample
windows.cfg-sample

Bueno, en ambos casos solo hay que compiar cada uno de los archivos dentro de sus respectivos folders con los nombres sin el "-sample" y luego editarlos segun se requiera.

Luego inticiamos nagios nuevamente y vemos si arranca sin errores.

Para chequear luego de hacer algun cambio en los archivos podemos usar este comando y si todo esta bien, lo re-iniciamos
# /usr/local/bin/nagios -v /usr/local/etc/nagios/nagios.cfg

Actualizacion:

1) Algunas funciones requiren la instalacion de nagios-plugin

# whereis nagios-plugins
nagios-plugins: /usr/ports/net-mgmt/nagios-plugins
# cd /usr/ports/net-mgmt/nagios-plugins
# make config
[X] NETSNMP SNMP support (check_snmp)
[X] IPv6 support

Guarde e instale
# make install clean

2) Para poder ponerle los logos, hay que instalar nagios-base-logos

# whereis nagios-base-logos
nagios-base-logos: /usr/ports/misc/nagios-base-logos
# cd /usr/ports/misc/nagios-base-logos
# make install clean

De aqui se pueden bajar mas logos http://exchange.nagios.org/directory/Images-and-Logos
se deben descomprimir en la carpeta /usr/local/www/nagios/images/logos/

Actualizacion 2

Crear grupos
Por defecto me tocaba meter los equipos con Gnu/Linux dentro del archivo windows.cfg y esto no me gustaba...

Crear un grupo LINUX

1) editar el archivo /usr/local/etc/nagios/nagios.cfg
AGREGAR LA LINEA

# Definitions for monitoring a Linux machine
cfg_file=/usr/local/etc/nagios/objects/linux.cfg

2) Crear el archivo /usr/local/etc/nagios/objects/linux.cfg
AGEGAR LAS LINEAS

# HOST DEFINITION
define host{
use linux-server ; Inherit default values from a template
host_name ISP ; The name we're giving to this switch
alias UNE ; A longer name associated with the switch
icon_image linux40.png
statusmap_image linux40.gd2
address google.com ; IP address of the switch
parents ADSL
}

# HOST GROUP DEFINITION
define hostgroup{
hostgroup_name linux-servers ; The name of the hostgroup
alias Linux Servers ; Long name of the group
members ; Comma separated list of hosts that belong to this group
}

# SERVICE DEFINITIONS
define service{
use generic-service ; Name of service template to use
host_name ISP
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}

3) Editar el archivo /usr/local/etc/nagios/objects/templates.cfg
AGREGAR LAS LINEAS EN LA SECCION # HOST TEMPLATES

# LINUX host definition template - This is NOT a real host, just a template!

define host{
name linux-server ; The name of this host template
use generic-host ; Inherit default values from the generic-host template
check_period 24x7 ; By default, Windows servers are monitored round the clock
check_interval 5 ; Actively check the server every 5 minutes
retry_interval 1 ; Schedule host check retries at 1 minute intervals
max_check_attempts 10 ; Check each server 10 times (max)
check_command check-host-alive ; Default command to check if servers are "alive"
notification_period 24x7 ; Send notification out at any time - day or night
notification_interval 30 ; Resend notifications every 30 minutes
notification_options d,r ; Only send notifications for specific host states
contact_groups admins ; Notifications get sent to the admins by default
hostgroups linux-servers ; Host groups that Windows servers should be a member of
register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE
}

4) Re-iniciar Nagios
/usr/local/etc/rc.d/nagios restart

1 comentario:

samuel arellano dijo...

alguna experiencia integrando nagiosQL ?