Nagios

De SergiTurWiki

Share/Save/Bookmark
Dreceres ràpides: navegació, cerca
Aquesta wiki forma part dels materials d'un curs
Curs: SeguretatXarxesInformàtiques, LinuxAdministracioAvancada, DissenyXarxesLinux
Fitxers: EinesMonitoritzacio.pdf (EinesMonitoritzacio.odp)

EinesMonitoritzacio2.pdf (EinesMonitoritzacio2.odp)

Repositori SVN: https://anonymous@svn.projectes.lafarga.cat/svn/iceupc/SeguretatXarxesInformàtiques
Usuari: anonymous
Paraula de pas: sense paraula de pas
Autors: Sergi Tur Badenas

Contingut

Instalació i primers passos

Nagios és una aplicació de monitorització de recursos. Nagios està incorporat a SkoleLinux.

En les màquines ubuntu en les que he instalat Nagios he utilitzat els repositoris main i apt-get o synaptic per instal·lar els següents paquets:

  1. nagios-common
  2. nagios-text (Es poden instalar este o nagios-mysql o nagios-postgresql.)
  3. nagios-plugins

L'altre opció és compilar el codi font. Esta explicada al manual de nagios o per exemple a aquest HOW-TO en castellà.

Nagios a Ubuntu. Instal·lació des del codi font

Consulteu el quickstart oficial.

Nagios 3.0

--acacha 07:39, 23 abr 2009 (UTC)

$ sudo apt-get install nagios3
 S'instal·laran els següents paquets extres:
  bsd-mailx exim4 exim4-base exim4-config exim4-daemon-light libfreetype6 libgd2-noxpm libjpeg62 libnet-snmp-perl
  libperl5.10 libpng12-0 libradius1 libsensors3 libsnmp-base libsnmp15 nagios-images nagios-plugins nagios-plugins-basic
  nagios-plugins-standard nagios3-common nagios3-doc radiusclient1 snmp
Paquets suggerits:
  mail-reader eximon4 exim4-doc-html exim4-doc-info libmail-spf-query-perl swaks libfreetype6-dev libgd-tools
  libcrypt-des-perl libdigest-hmac-perl libio-socket-inet6-perl lm-sensors nagios2 nagios-text nagios whois
  nagios-nrpe-plugin
Paquets recomanats:
  mailx
S'instal·laran els següents paquets NOUS:
  bsd-mailx exim4 exim4-base exim4-config exim4-daemon-light libfreetype6 libgd2-noxpm libjpeg62 libnet-snmp-perl
  libperl5.10 libpng12-0 libradius1 libsensors3 libsnmp-base libsnmp15 nagios-images nagios-plugins nagios-plugins-basic
  nagios-plugins-standard nagios3 nagios3-common nagios3-doc radiusclient1 snmp
0 actualitzats, 24 nous a instal·lar, 0 a eliminar i 20 no actualitzats.
Es necessita obtenir 11,4MB d'arxius.
After this operation, 29,7MB of additional disk space will be used.
Voleu continuar [S/n]? s

Ara ja podeu accedir a nagios accedint a la URL:

http://localhost/nagios3

Però us demanara un usuari i paraula de pas. L'heu d'establir amb:

$ sudo htpasswd /etc/nagios3/htpasswd.users nagiosadmin

Nagios 2.0

$ sudo apt-get install nagios2
$ sudo apt-get install nagios-text

Imatge:NagiosTxtInstalation.png

Escollim la contrasenya. Ara per cal executar:

$ sudo ln -s /etc/nagios/htpasswd.users /etc/nagios2/htpasswd.users 

Per evitar l'error Nagios#Internal_Server_Error

Ara ja podem accedir a Nagios, obrint el navegador i anant a la web

http://localhost/nagios2

L'usuari i contrasenya són:

  • Usuari: nagiosadmin
  • Contrasenya: L'hem escollit durant la instal·lació.

Configuració de Nagios

La configuració del nagios és fa amb els fitxers de la carpeta /etc/nagios.

NOTA: a SkoleLinux els fitxers estan a /etc/nagios/debian-edu

Nagios 3

La configuració com marca l'estàndard FHS es fa a la carpeta /etc/nagios3.

$ ls /etc/nagios3
apache2.conf  cgi.cfg  commands.cfg  conf.d  htpasswd.users  nagios.cfg  resource.cfg  stylesheets

On:

El fitxer principal de configuració és:

$ cat /etc/nagios3/nagios.cfg | grep -v '^#\|^$\|^;'
log_file=/var/log/nagios3/nagios.log
cfg_file=/etc/nagios3/commands.cfg
cfg_dir=/etc/nagios-plugins/config
cfg_dir=/etc/nagios3/conf.d
object_cache_file=/var/cache/nagios3/objects.cache
precached_object_file=/var/lib/nagios3/objects.precache
resource_file=/etc/nagios3/resource.cfg
status_file=/var/cache/nagios3/status.dat
status_update_interval=10
nagios_user=nagios
nagios_group=nagios
check_external_commands=0
command_check_interval=-1
command_file=/var/lib/nagios3/rw/nagios.cmd
external_command_buffer_slots=4096
lock_file=/var/run/nagios3/nagios3.pid
temp_file=/var/cache/nagios3/nagios.tmp
temp_path=/tmp
event_broker_options=-1
log_rotation_method=d
log_archive_path=/var/log/nagios3/archives
use_syslog=1
log_notifications=1
log_service_retries=1
log_host_retries=1
log_event_handlers=1
log_initial_states=0
log_external_commands=1
log_passive_checks=1
service_inter_check_delay_method=s
max_service_check_spread=30
service_interleave_factor=s
host_inter_check_delay_method=s
max_host_check_spread=30
max_concurrent_checks=0
check_result_reaper_frequency=10
max_check_result_reaper_time=30
check_result_path=/var/lib/nagios3/spool/checkresults
max_check_result_file_age=3600
cached_host_check_horizon=15
cached_service_check_horizon=15
enable_predictive_host_dependency_checks=1
enable_predictive_service_dependency_checks=1
soft_state_dependencies=0
auto_reschedule_checks=0
auto_rescheduling_interval=30
auto_rescheduling_window=180
sleep_time=0.25
service_check_timeout=60
host_check_timeout=30
event_handler_timeout=30
notification_timeout=30
ocsp_timeout=5
perfdata_timeout=5
retain_state_information=1
state_retention_file=/var/lib/nagios3/retention.dat
retention_update_interval=60
use_retained_program_state=1
use_retained_scheduling_info=1
retained_host_attribute_mask=0
retained_service_attribute_mask=0
retained_process_host_attribute_mask=0
retained_process_service_attribute_mask=0
retained_contact_host_attribute_mask=0
retained_contact_service_attribute_mask=0
interval_length=60
use_aggressive_host_checking=0
execute_service_checks=1
accept_passive_service_checks=1
execute_host_checks=1
accept_passive_host_checks=1
enable_notifications=1
enable_event_handlers=1
process_performance_data=0
obsess_over_services=0
obsess_over_hosts=0
translate_passive_host_checks=0
passive_host_checks_are_soft=0
check_for_orphaned_services=1
check_for_orphaned_hosts=1
check_service_freshness=1
service_freshness_check_interval=60
check_host_freshness=0
host_freshness_check_interval=60
additional_freshness_latency=15
enable_flap_detection=1
low_service_flap_threshold=5.0
high_service_flap_threshold=20.0
low_host_flap_threshold=5.0
high_host_flap_threshold=20.0
date_format=iso8601
p1_file=/usr/lib/nagios3/p1.pl
enable_embedded_perl=1
use_embedded_perl_implicitly=1
illegal_object_name_chars=`~!$%^&*|'"<>?,()=
illegal_macro_output_chars=`~$&|'"<>
use_regexp_matching=0
use_true_regexp_matching=0
admin_email=root@localhost
admin_pager=pageroot@localhost
daemon_dumps_core=0
use_large_installation_tweaks=0
enable_environment_macros=1
debug_level=0
debug_verbosity=1
debug_file=/var/log/nagios3/nagios.debug
max_debug_file_size=1000000

La majoria de paràmetres generals no cal modificar-los, les opcions per defecte són correctes. El més important és:

 cfg_dir=/etc/nagios3/conf.d

que és la carpeta on es configuren els recursos a monitoritzar.

$ ls /etc/nagios3/conf.d
contacts_nagios2.cfg  generic-host_nagios2.cfg     host-gateway_nagios3.cfg  localhost_nagios2.cfg  timeperiods_nagios2.cfg
extinfo_nagios2.cfg   generic-service_nagios2.cfg  hostgroups_nagios2.cfg    services_nagios2.cfg

Aquí podeu configurar:

  • Fitxers de màquines: Per defecte es monitoritza localhosti el gateway (només pings)
  • Localhost (localhost_nagios2.cfg):
  • Gateway (host-gateway_nagios3.cfg):
  • Grups de màquines (hostgroups_nagios2.cfg):
  • Serveis (services_nagios2.cfg): S'apliquen a grups de màquines per fer més ràpida la configuració (http-servers, ping-servers, ssh-servers
  • Contactes (contacts_nagios2.cfg):
  • Plantilla de màquina genèrica (generic-host_nagios2.cfg):
  • Plantilla de servei genèric (generic-service_nagios2.cfg):

Afegir un nou host

$ cd /etc/nagios3/conf.d
$ sudo cp localhost_nagios2.cfg cop.cfg

Modifiqueu les línies:

$ sudo joe cop.cfg
define host{
       use                     generic-host            ; Name of host template to use
       host_name               cop
       alias                   cop
       address                 192.168.0.4
       }

Comenteu la resta del fitxer. Ara l'afegirem als grups:

  • servidors-debian
  • servidors-ubuntu
  • http-servers
  • ssh-servers
  • ping-servers

Vegem un exemple de com afegir al grup http-servers:

$ sudo joe hostgroups_nagios2.cfg 
# A list of your web servers
define hostgroup {
        hostgroup_name  http-servers
                alias           HTTP servers
                members         localhost,cop
        }

La resta de grups es procedeix similar. El grup servidros-ubuntu l'hem afegit amb les següents línies:

# A list of your Ubuntu GNU/Linux servers
define hostgroup {
        hostgroup_name  ubuntu-servers
                alias           Debian GNU/Linux Servers
                members         localhost,cop
        }

Per aplicar els canvis vegeu Nagios#Verificant_la_configuraci.C3.B3._Execuci.C3.B3_de_Nagios.

Nagios 2

La configuració com marca l'estàndard FHS es fa a la carpeta /etc/nagios2 o en alguns casos /etc/nagios:

$ ls /etc/nagios
apache.conf checkcommands.cfg contacts.cfg escalations.cfg hosts.cfg minimal.cfg nagios.cfg
services.cfg timeperiods.cfg cgi.cfg contactgroups.cfg dependencies.cfg hostgroups.cfg
htpasswd.users misccommands.cfg resource.cfg stylesheets

/etc/nagios/resource.cfg

En aquest fitxer es poden definir MACROS o variables que es poden utilitzar en els fitxers de configuració de Nagios. És útil per emmagatzemar dades crítiques com usuaris i contrasenyes.

Fitxer hosts.cfg

En aquest fitxers es defineixen les màquines que es volen monitoritzar.

Exemples:

# Exemple de host
define host{
      use                     generic-host            ; Name of host template to use
      host_name               NomDeLaMaquina
      alias                   Una descripcio
      address                 127.2.2.1
      check_command           check-host-alive
      max_check_attempts      20
      notification_interval   60
      notification_period     24x7
      notification_options    d,u,r
      }

Podem afegir tantes màquines com creiem convenient. Si ens fixem les màquines utilitzen una plantilla o template (intrucció use generic-host). El template es troba a l'inici del fitxer hosts.cfg

define host{
      name                            generic-host    ; The name of this host template - referenced in other host 
      notifications_enabled           1       ; Host notifications are enabled
      event_handler_enabled           0       ; Host event handler is disabled
      flap_detection_enabled          0       ; Flap detection is disabled
      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 restarts
      register                        0   ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
      }

Nota: perquè el Nagios pugui trobar la màquina (host) que hem definit, haurem d'agregar el valor de "host_name" a l'arxiu /etc/hosts de la màquina

Fitxer hostsgroups.cfg

En aquest fitxers es defineixen els grups de màquines.

  1. Default gateway host group definition
define hostgroup{

      hostgroup_name  Servers
      alias           Linux Servers
      contact_groups  linux-servers-admins
      members         NomDeLaMaquina,NomDeLaMaquina2
      }

Fitxer services.cfg

Aquí és poden definir els serveis que volem monitoritzar dels hosts que hem registrat. El mateix fitxer ens ofereix infinitat d'exemples dels serveis que es poden monitoritzar (HTTP, ports TCP-IP, base de dades, recursos d'espai i memòria,etc)

Igual que el que succeïx amb el fitxer hosts.cfg és pot utilitzar un template:

define service{
      name                            generic-service    ;The 'name' of this service template, referenced in other 
      active_checks_enabled           1       ; Active service checks are enabled
      passive_checks_enabled          0       ; Passive service checks are enabled/disabled
      parallelize_check               1       ; Active service checks should be parallelized
                                              ; (disabling this can lead to major performance problems)
      obsess_over_service             1       ; We should obsess over this service (if necessary)
      check_freshness                 0       ; Default is to NOT check service 'freshness'
      notifications_enabled           0       ; Service notifications are disabled
      event_handler_enabled           0       ; Service event handler is disabled
      flap_detection_enabled          0       ; Flap detection is disabled
      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 restarts
      register                        0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
      }


Fitxer contacts.cfg

En aquest fitxer es defineixen les persones i les seves dades de contacte (email, beeper, SMS) encarregades de la monitorització. Aquest contactes són els que, en el cas de que el servei monitoritzat tingui el servei d'alertes instal·lat, rebran les alertes de possibles problemes amb els serveis.

define contact{
      contact_name                    nagios
      alias                           Nagios Admin
      service_notification_period     24x7
      host_notification_period        24x7
      service_notification_options    w,u,c,r
      host_notification_options       d,u,r
      service_notification_commands   notify-by-email,notify-by-epager
      host_notification_commands      host-notify-by-email,host-notify-by-epager
      email                           emailNagiosAdmin@localhost
      pager                           pagenagios-admin@localhost
      }


Exemple de configuració

Anem a veure pas a pas que s'ha de fer per monitoritzar una màquina. La configuració de Nagios es realitza editant fitxers de la carpeta /etc/nagios2/. Normalment només caldrà modificar els fitxers de la carpeta /etc/nagios2/conf.d.

El primer que cal fer és afegir una màquina que vulguem monitoritzar:

$ cd /etc/nagios2/conf.d

I creem un fitxer per a la màquina:

$ cat host-gateway.cfg 
# a host definition for the gateway of the default route
define host {
        host_name   gateway
        alias       Default Gateway
        address     192.168.1.1
        use         generic-host    
        }

El més important és:

host_name   gateway

Aquest és el nom (descriptiu que escolliu vosaltres) que li poseu a la màquina

alias       Default Gateway

Descripció llarga. Text lliure

address     192.168.1.1

El més important. L'adreça IP de la màquina a monitoritzar

use         generic-host

Això indica que utilitzem una plantilla per aquest host. La plantilla generic-host la proporciona per defecte Nagios.

NOTA: El fitxer pot tenir el nom que vulgueu, però és interessant seguir un patró com per exemple host-nommaquina.cfg

Un cop teniu la màquina configurada, saleu el fitxer i executeu:

$ sudo /etc/init.d/nagios2 restart

Això us permetrà comprovar si hi ha algun error en la configuració.

Ara cal configurar quins serveis volem monitoritzar en aquesta màquina. Els serveix més comuns són fàcils de configurar per què Nagios ens proporciona una forma fàcil de fer-ho utilitzant grups.

Per exemple, el primer que podem fer és que Nagios controli si la màquina esta encesa mitjançant pings. Per això només cal afegir la nostra màquina al grup de màquines a les que es fa ping.

Els grups estan definits al fitxer:

$ cat hostgroups_nagios2.cfg 
# Some generic hostgroup definitions

# A simple wildcard hostgroup
define hostgroup {
        hostgroup_name  all
                alias           All Servers
                members         *
        }  

# A list of your Debian GNU/Linux servers
define hostgroup {
        hostgroup_name  debian-servers
                alias           Debian GNU/Linux Servers
                members         localhost
        }  

# A list of your web servers
define hostgroup {
        hostgroup_name  http-servers
                alias           HTTP servers
                members         localhost
        }  

# A list of your ssh-accessible servers
define hostgroup {
        hostgroup_name  ssh-servers
                alias           SSH servers
                members         localhost
       } 

# nagios doesn't like monitoring hosts without services, so this is
# a group for devices that have no other "services" monitorable
# (like routers w/out snmp for example)
define hostgroup {
        hostgroup_name  ping-servers
                alias           Pingable servers
                members         gateway
        } 

Com podeu veure al final hi ha el grup ping-servers. Afegiu la vostra màquina de la següent forma

$ sudo joe hostgroups_nagios2.cfg
...

I modifiqueu:

 define hostgroup {
        hostgroup_name  ping-servers
                alias           Pingable servers
                members         gateway,altremaquina1,altremaquina2
        } 

També podeu fer el mateix amb les màquines que tinguin un servidor web:

 # A list of your web servers
define hostgroup {
        hostgroup_name  http-servers
                alias           HTTP servers
                members         localhost,gateway
        }  

Un cop fetes les modificacions executeu:

$ sudo /etc/init.d/nagios2 restart

Comproveu que no hi ha erros i consulteu la web de Nagios (potser haureu d'esperar uns minuts per tal de que refresqui) per consultar l'estat del servidor.

Configuració dels contactes

Al fitxer

$ cat /etc/nagios2/conf.d/contacts_nagios2.cfg

es configuren els contactes de nagios. Hi ha una zona anomenada CONTACTS:

###############################################################################
###############################################################################
#
# CONTACTS
#
###############################################################################
###############################################################################
....

Aquí, després del l'exemple de contacte que hi ha (root) heu d'afegir (podeu copiar de la plantilla de l'usuari root que acabem d'esmentar):

define contact{
        contact_name                    sergi
        alias                           Sergi Tur
        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                           correu_electrònic
        }

Com podeu veure hem afegit un usuari anomenat sergi (nom comple Sergi Tur) que esta disponible per rebre avisos les 24 hores dels set dies de la setmana (24x7) i que rebrà les notificacions per correu electrònic.

El correu no es mostra per evitar SPAM però s'indica a la línia:

email                           correu_electrònic

Per tal que funcioni cal tenir un servidor de correu electrònic. El més senzill possiblement és postfix i el podeu instal·lar amb:

$ sudo apt-get install postfix

Verificant la configuració. Execució de Nagios

IMPORTANT: Si teniu nagios3 en comptes de nagios2 canvieu les ordres nagios2 per nagios3 a tots els exemples d'aquest apartat. Per exemple:
$ sudo nagios3 -v /etc/nagios3/nagios.cfg 

Nagios té un script que permet verificar si els fitxers de configuració no tenen cap error. Executem:

$ nagios2 -v /etc/nagios2/nagios.cfg 

O si el teniu instal·lat des del codi font compilant:

$ sudo /usr/local/nagios/bin/nagios -v  /usr/local/nagios/etc/nagios.cfg

Si tot esta correctament:

Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check

Aleshores podem executar el dimoni de Nagios

$ sudo /etc/init.d/nagios2 restart
$ ps aux | grep nagios
PID TTY TIME CMD
29864 ? 00:00:00 nagios2

Ja tenim el nagios executant-se. Ara falta configurar Apache i el CGI de Nagios per poder accedir a la interfície web.

Configuració del CGI de nagios. Configuració d'Apache

Fitxer cgi.cfg

En aquest fitxer es controlen les opcions del cgi Nagios. La configuració per defecte normalment ja funciona.

Configuració d'Apache

A Apache hem de configurar l'accés a HTML i l'execució d'Scripts CGI:

CGI:

ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
<Directory "/usr/local/nagios/sbin">
  AllowOverride AuthConfig
  Options ExecCGI
  Order allow,deny
  Allow from all
</Directory>


HTML:

Alias /nagios /usr/local/nagios/share
<Directory "/usr/local/nagios/share">
  Options None
  AllowOverride AuthConfig
  Order allow,deny
  Allow from all
</Directory>

Un cop configurat Apache és necessari recarregar el dimoni:

/etc/init.d/httpd restart 

L'accés a la interface web és:

http://ip_de_la_teva_maquina/nagios

Més info sobre la configuració de la interface web : http://nagios.sourceforge.net/docs/2_0/installweb.html

Configuració de l'accés a la interface web

Canviar el password d'administrador

Nagios ve configurat per defecte amb un usuari nagiosadmin i un password pe defecte. Es pot canviar executant:

$  htpasswd -c /etc/nagios/htpasswd.users nagiosadmin


Es pot utilitzar httacces d'Apache: http://nagios.sourceforge.net/docs/2_0/cgiauth.html

A Skole-Linux els fitxers de configuració del nagios estan a un altre carpeta. Per tant:

sudo htpasswd -c /etc/nagios/debian-edu/htpasswd.users nagiosadmin

Configurar els teus propis serveis

Nagios utilitza un sistema de plugins que permet la seva extensibilitat i la possibilitat d'implementar els teus propis serveis.

Monitoritzar informació privada de màquines Unix/Linux Remotes

Es pot fer mitjançant el plugin nrpe. Utilitza una arquitectura client-servidor:

Client:

En aquest cas el client és la màquina on està instal·lat Nagios. Cal instal·lar el plugin:

$ sudo apt-get install nagios-nrpe-plugin

Atenció: sí teniu instal·lat Nagios des de una compilació del codi font podeu fer:

$ sudo cp /usr/lib/nagios/plugins/check_nrpe /usr/local/nagios/libexec
$ sudo chown nagios:nagios /usr/local/nagios/libexec//check_nrpe 

També es pot instal·lar la documentació amb:

$ sudo apt-get install nagios-nrpe-doc

Servidor:

A la màquina remota que es vol monitoritzar, cal instal·lar:

$ sudo apt-get install nagios-nrpe-server nagios-plugins

I definir quins Nagios tenen permisos per a fer consultes en aquesta màquina. Editeu el fitxer /etc/nagios/nrpe_local.cfg:

$ sudo joe /etc/nagios/nrpe_local.cfg

I afegiu la línia:

allowed_hosts=127.0.0.1,ipaddress.of.your.nagiosserver
NOTA: Si afegiu més d'una línia d0'allowed hosts, la última línia serà la única que s'aplicarà. Deixeu la IP local per tal 
que continuí funcionant en local

Poseu la IP del vostre servidor Nagios.

Cal tornar a iniciar el servei amb :

$ sudo /etc/init.d/nagios-nrpe-server restart

Al client heu d'afegir una definició de comanda al fitxer commands.cfg:

define command{
       command_name check_nrpe
       command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
       }


Podeu comprovar que teniu accés amb:

$ /usr/local/nagios/libexec/check_nrpe -H 192.168.0.7 -c check_load 
OK - load average: 0.22, 0.20, 0.18|load1=0.220;15.000;30.000;0; load5=0.200;10.000;25.000;0; load15=0.180;5.000;20.000;0;

o

$ /usr/lib/nagios/plugins/check_nrpe -H 192.168.0.7 -c check_load

El fitxer nrpe_local.cfg s'inclou al fitxer principal de configuració: '/etc/nagios/nrpe.cfg. Si llegiu el fitxer /etc/nagios/nrpe.cfg veureu que per defecte la IP de localhost ja te permisos.

El port que utilitza el servidor és el 5666. Podeu comprovar que el port és obert amb:

$ sudo nmap 192.168.0.7 -p 5666
Starting Nmap 4.53 ( http://insecure.org ) at 2009-05-14 10:49 CEST
Interesting ports on 192.168.0.7:
PORT     STATE SERVICE
5666/tcp open  unknown
MAC Address: 00:0F:FE:DE:81:6C (G-pro Computer)

Nmap done: 1 IP address (1 host up) scanned in 0.152 seconds

També des del servidor es pot executar:

$ sudo netstat -at | grep 5666
tcp        0      0 *:5666                  *:*                    LISTEN     

Ara a la configuració de nagios podeu afegir els següents serveis al host:

define service{
            use                         generic-service
            host_name                   remotehost
            service_description         CPU Load
            check_command               check_nrpe!check_load
            }

define service{
            use                         generic-service
            host_name                   remotehost
            service_description         Current Users
            check_command               check_nrpe!check_users
            }

define service{
            use                         generic-service
            host_name                   remotehost
            service_description         /dev/hda1 Free Space
            check_command               check_nrpe!check_hda1
            }

define service{
            use                        generic-service
            host_name                  remotehost
            service_description        Total Processes
            check_command              check_nrpe!check_total_procs
            }

define service{
            use
            host_name
            service_description
            check_command
            }
Atenció: Modifiqueu remotehost pel nom de la màquina remota que heu escollit

Recursos:

Activar el log

Cal activar-lo al fitxer /etc/nagios/nrpe.cfg:

debug=1

Els logs sortiran per syslog:

$ sudo tail -f /var/log/syslog
May 14 10:59:19 moodle nrpe[22354]: Caught SIGTERM - shutting down... 
May 14 10:59:19 moodle nrpe[22354]: Cannot remove pidfile '/var/run/nrpe.pid' - check your privileges.
May 14 10:59:19 moodle nrpe[22354]: Daemon shutdown 
May 14 10:59:20 moodle nrpe[23033]: Added command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10 
May 14 10:59:20 moodle nrpe[23033]: Added command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20 
May 14 10:59:20 moodle nrpe[23033]: Added command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -p /dev/hda1 
May 14 10:59:20 moodle nrpe[23033]: Added command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z 
May 14 10:59:20 moodle nrpe[23033]: Added command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200 
May 14 10:59:20 moodle nrpe[23033]: INFO: SSL/TLS initialized. All network traffic will be encrypted.
May 14 10:59:20 moodle nrpe[23034]: Starting up daemon
May 14 10:59:20 moodle nrpe[23034]: Listening for connections on port 5666 
May 14 10:59:20 moodle nrpe[23034]: Allowing connections from: 192.168.0.7 
May 14 11:00:01 moodle CRON[23069]: Sigfile not found

Monitoritzar informació privada de màquines Windoze Remotes

Recursos:

Monitorització de commutadors (switches) i encaminadors (routers)

Per monitoritzar commutadors el primer que cal fer és activar la línia (treien el símbol de comentari - # - ):

# Definitions for monitoring a router/switch
cfg_file=/usr/local/nagios/etc/objects/switch.cfg

Al fitxer de configuració de nagios: nagios.cfg. El podeu trobar a:

/usr/local/nagios/etc/nagios.cfg

o

/etc/nagios/nagios.cfg

Depenent si l'heu instal·lat compilant o des de els repositoris.

Això el que fa és activar les definicions per a commutadors i encaminadors.

Ara ja podeu crear una definició d'objecte de Nagios, per tal de poder monitoritzar un commutador o encaminador. Editeu el fitxer switch.cfg

$ sudo joe /usr/local/nagios/etc/objects/switch.cfg

I afegiu una nova definició de màquina (host). Un exemple

define host{
	use		generic-switch		; Inherit default values from a template
	host_name	linksys-srw224p		; The name we're giving to this switch
	alias		Linksys SRW224P Switch	; A longer name associated with the switch
	address		192.168.1.253		; IP address of the switch
	hostgroups	allhosts,switches	; Host groups this switch is associated with
	}

Observeu que el fitxer està ple d'exemples. Potser caldrà comentar o esborrar els exemples per tal d'evitar errors.

Recursos:

Pings a commutadors

Es pot utilitzar la comanda check_ping per tal de definir un servei de monitorització d'un commutador:

define service{
	use			generic-service	; Inherit values from a template
 	host_name			linksys-srw224p	; The name of the host the service is associated with
	service_description	PING		; The service description 
	check_command		check_ping!200.0,20%!600.0,60%	; The command used to monitor the service
	normal_check_interval	5	; Check the service every 5 minutes under normal conditions
	retry_check_interval	1	; Re-check the service every minute until its final/hard state is determined
	}

SNMP

Es pot utilitzar per fer preguntes específiques als commutadors o encaminadors.

Per exemple, per saber l'estat d'un port:

#Port 2: connexió al router del centre
define service{
      use                     generic-service ; Inherit values from a template
      host_name               Switch_Cisco_Servidors
      service_description     Port 2 Link Status: Router Centre
      check_command           check_snmp!-C public -o ifOperStatus.2 -r 1 -m RFC1213-MIB
      }

On:

  • -C public: indica la comunitat pública de SNMP
  • -o ifOperStatus.1: és el OID de SNMP que indica l'estat del port 1.
  • -r 1: indica que l'estat serà OK si el valor retornat és 1 i sinó donarà un error (CRITICAL)
  • -m RFC1213-MIB: opcional

Hi ha un munt de paràmetres SNMP que es poden utilitzar. Es pot consultar els paràmetres amb la comanda:

$ snmpwalk -v1 -c public 192.168.1.253 -m ALL .1 

O per saber el temps que porta encès el dispositiu:

define service{
      use                     generic-service                          ; Inherit values from a template
      host_name               Switch_Cisco_Servidors
      service_description     Uptime
      check_command           check_snmp!-C public -o sysUpTime.0
      }


Vegeu també l'article sobre SNMP.

Monitoritzar impressores

Podem monitoritzar impressores HP o que suportin JetDirect amb la comanda de nagios check_hpjd. Per saber si el vostre Nagios disposa d'aquesta comanda:

$ ls /usr/local/nagios/libexec | grep hp
check_hpjd

Per monitoritzar commutadors el primer que cal fer és activar la línia (treient el símbol de comentari - # - ):

# Definitions for monitoring a network printer
cfg_file=/usr/local/nagios/etc/objects/printer.cfg

Al fitxer de configuració de nagios: nagios.cfg. El podeu trobar a:

/usr/local/nagios/etc/nagios.cfg

o

/etc/nagios/nagios.cfg

Depenent si l'heu instal·lat compilant o des dels repositoris. Això el que fa és activar les definicions per a commutadors i encaminadors.

Ara ja podeu crear una definició d'objecte de Nagios, per tal de poder monitoritzar un commutador o encaminador. Editeu el fitxer printer.cfg

$ sudo joe /usr/local/nagios/etc/objects/printer.cfg

I afegiu una nova definició de màquina (host). Un exemple

define host{
       use             generic-printer         ; Inherit default values from a template
       host_name       hplj2605dn              ; The name we're giving to this printer
       alias           HP LaserJet 2605dn      ; A longer name associated with the printer
       address         192.168.1.30            ; IP address of the printer
       hostgroups      network-printers        ; Host groups this printer is associated with
       }

Observeu que el fitxer està ple d'exemples. Potser caldrà esborrar-los o comentar-los per tal d'evitar problemes.

Recursos:

Status i ping a la impressora

Per obtenir l'estatus de la impressora:

define service{
	use			generic-service		; Inherit values from a template
	host_name			hplj2605dn		; The name of the host the service is associated with
	service_description	Printer Status		; The service description
	check_command		check_hpjd!-C public	; The command used to monitor the service
	normal_check_interval	10	; Check the service every 10 minutes under normal conditions
	retry_check_interval	1	; Re-check the service every minute until its final/hard state is determined
	}

I per a fer-li un ping:

define service{
       use                     generic-service
       host_name               hplj2605dn
       service_description     PING
       check_command           check_ping!3000.0,80%!5000.0,100%
       normal_check_interval   10
       retry_check_interval    1
       }

Exemple des de la línia de comandes

$ /usr/local/nagios/libexec/check_hpjd -H 192.168.12.50 -C public
Printer ok - ("Modo Suspensi.n activado")


Valors a monitoritzar

#define HPJD_LINE_STATUS		".1.3.6.1.4.1.11.2.3.9.1.1.2.1"
#define HPJD_PAPER_STATUS		".1.3.6.1.4.1.11.2.3.9.1.1.2.2"
#define HPJD_INTERVENTION_REQUIRED	".1.3.6.1.4.1.11.2.3.9.1.1.2.3"
#define HPJD_GD_PERIPHERAL_ERROR	".1.3.6.1.4.1.11.2.3.9.1.1.2.6"
#define HPJD_GD_PAPER_JAM		".1.3.6.1.4.1.11.2.3.9.1.1.2.8"
#define HPJD_GD_PAPER_OUT		".1.3.6.1.4.1.11.2.3.9.1.1.2.9"
#define HPJD_GD_TONER_LOW		".1.3.6.1.4.1.11.2.3.9.1.1.2.10"
#define HPJD_GD_PAGE_PUNT		".1.3.6.1.4.1.11.2.3.9.1.1.2.11"
#define HPJD_GD_MEMORY_OUT		".1.3.6.1.4.1.11.2.3.9.1.1.2.12"
#define HPJD_GD_DOOR_OPEN	 	".1.3.6.1.4.1.11.2.3.9.1.1.2.17"
#define HPJD_GD_PAPER_OUTPUT		".1.3.6.1.4.1.11.2.3.9.1.1.2.19"
#define HPJD_GD_STATUS_DISPLAY		".1.3.6.1.4.1.11.2.3.9.1.1.3"

Recursos:

Scripts

A la carpeta /usr/lib/nagios/plugins/ podem trobar diferents scripts de control de serveis de nagios. Aquest scripts són les comandes que s'executen per comprovar el funcionament dels serveis.

Tal i com podem veure amb la comanda:

$ dpkg -S check_time
nagios-plugins-basic: /usr/lib/nagios/plugins/check_time

o amb

$ apt-cache search nagios 
sudo apt-cache search nagios
arrayprobe - command line HP (Compaq) SmartArray status checker
mailping - monitor email service availability and functioning
munin - network-wide graphing framework (grapher/gatherer)
nagat - Nagios Administration Tool
nagcon - console application interfacing to Nagios
nagios-common - A host/service/network monitoring and management system
nagios-images - Collection of images and icons for the nagios system
nagios-mysql - A host/service/network monitoring and management system
nagios-nrpe-plugin - Nagios Remote Plugin Exectutor Plugin
nagios-nrpe-server - Nagios Remote Plugin Exectutor Server
nagios-pgsql - A host/service/network monitoring and management system
nagios-plugins - Plugins for the nagios network monitoring and management system
nagios-plugins-basic - Plugins for the nagios network monitoring and management system
nagios-plugins-extra - radius plugin for nagios network monitoring and management system
nagios-plugins-standard - Plugins for the nagios network monitoring and management system
nagios-statd-client - nagios client for montioring remote system information
nagios-statd-server - nagios server for monitoring remote system information
nagios-text - A host/service/network monitoring and management system
nagios2 - A host/service/network monitoring and management system
nagios2-common - support files for nagios2
nagios2-dbg - debugging symbols for nagios2
nagios2-doc - documentation for nagios2
nsca - Nagios service monitor agent

Els paquets que ens proporcionen aquests scripts són les nagios-plugins-*

Configuració i ús d'scripts

A la carpeta /etc/nagios-plugins/config trobem la configuració dels scripts. Veiem un exemple, l'script check_dns:

$ cat /etc/nagios-plugins/config/dns.cfg 
# 'check_dns' command definition
define command{
        command_name    check_dns
        command_line    /usr/lib/nagios/plugins/check_dns -H www.google.com -s $HOSTADDRESS$
}  

# 'check_dig' command definition
define command{
        command_name    check_dig
        command_line    /usr/lib/nagios/plugins/check_dig -H $HOSTNAME$ -l $ARG1$
}  

Com podem veure també configura dig. Els paràmetres que cal tenir en compte:

  • $HOSTADDRESS$: és una variable que se substitueix per el nom de màquina de la que estem controlant el servei
  • $ARG1$: Primer paràmetre
  • $ARG2$: Segon paràmetre
  • $ARG3$: tercer paràmetre...


Els paràmetres es poden passar de la següent forma (utilitzant el símbol exclamació):

define service{

      use                             generic-service   
      host_name                       localhost
      service_description             dig
              check_command                   check_dig!www.example.com
      }

Nagios a SkoleLinux

Per tal d'accedir remotament al nagios (fora de la xarxa interna) cal afegir la següent línia al fitxer /etc/hosts

217.149.150.23 tjener.intern tjener

Sino dona error que no es pot accedir a tjener.intern.

Altres eines relacionades

http://www.nagiosexchange.org/cgi-bin/page.cgi?g=1745.html;d=1

Firefox addon. Nagios checker

Monarch

Recursos

Ignoramus

Recursos

NagiosAdmin

Recursos

Fruity

Recursos:

FAN

Resolució de problemes (Troubleshooting)

CHECK_NRPE: Error receiving data from daemon.

$ sudo /usr/local/nagios/libexec/check_nrpe -n -H 192.168.0.8 -c check_load 
CHECK_NRPE: Error receiving data from daemon.

Vigileu al utilitzar la opció -n. Això només s'aplica si el servidor no utilitza SSL (no és recomana per que aleshores es pot interceptar les dades intercanviades entre servidor i client).

A Ubuntu, per defecte el servidor nrpe utilitza SSL:

$ cat /etc/default/nagios-nrpe-server 
# defaults file for nagios-nrpe-server
# (this file is a /bin/sh compatible fragment)  

# DAEMON_OPTS are any extra cmdline parameters you'd like to
#             pass along to the nrpe daemon
DAEMON_OPTS="--no-ssl"

# NICENESS is if you want to run the server at a different nice() priority
#NICENESS=5

Per tant;

$ sudo /usr/local/nagios/libexec/check_nrpe -H 192.168.0.8 -c check_load 

Si el problema persisteix, activeu el log (opció debug=1 al fitxer de configuració del dimoni) i llegiu els logs amb:

$ sudo tail -f /var/log/syslog
May 14 10:59:19 moodle nrpe[22354]: Caught SIGTERM - shutting down... 
May 14 10:59:19 moodle nrpe[22354]: Cannot remove pidfile '/var/run/nrpe.pid' - check your privileges.
May 14 10:59:19 moodle nrpe[22354]: Daemon shutdown 
May 14 10:59:20 moodle nrpe[23033]: Added command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10 
May 14 10:59:20 moodle nrpe[23033]: Added command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20 
May 14 10:59:20 moodle nrpe[23033]: Added command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -p /dev/hda1 
May 14 10:59:20 moodle nrpe[23033]: Added command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z 
May 14 10:59:20 moodle nrpe[23033]: Added command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200 
May 14 10:59:20 moodle nrpe[23033]: INFO: SSL/TLS initialized. All network traffic will be encrypted.
May 14 10:59:20 moodle nrpe[23034]: Starting up daemon
May 14 10:59:20 moodle nrpe[23034]: Listening for connections on port 5666 
May 14 10:59:20 moodle nrpe[23034]: Allowing connections from: 192.168.0.7 

Assegureu-vos que la IP del client apareix a Allowing connections from:

Internal Server Error

Sempre que ens surti aquest missatge podem consultar el log d'errors d'apache2 $ sudo tail -f /var/log/apache2/error.log [Tue Nov 27 14:16:38 2007] [error] [client 127.0.0.1] (2)No such file or directory: Could not open password file: /etc/nagios2/htpasswd.users

El fitxer /etc/nagios2/htpasswd.users no existeix. El que si existeix és el de la versió 1. Podem solucionar-ho creant un link

$ sudo ln -s /etc/nagios/htpasswd.users /etc/nagios2/htpasswd.users

Whoops! Error: Could not read host and service status information!

Aquest error ens indica que hi ha algun problema amb el cgi de nagios. Comproveu que s'esta executant Nagios. Llegiu el fitxer de log /var/log/nagios/nagios.log.

Error: Could not connect to MySQL database ...

No s'ha configurat l'accés a la base de dades de Nagios en MySql. Si s'ha instalat Nagios utilitzant el paquet Debian (nagios-mysql) podem trobar la solució d'aquest error a:

/usr/share/doc/nagios-mysql
El fitxer README.Debian. Explica com configurar L'accés a base de dades de Nagios

Una solució potser més sencilla és utilitzar nagios en mode text: Es a dir instalar el paquet nagios-text en comptes del nagios-mysql.

Monitoritzar el log de Nagios

tail -f --lines=200 /var/log/nagios/nagios.log

Enllaços externs

IES Nicolau Copèrnic