Nagios
De SergiTurWiki
| Curs: | SeguretatXarxesInformàtiques, LinuxAdministracioAvancada, DissenyXarxesLinux |
| Fitxers: | EinesMonitoritzacio.pdf (EinesMonitoritzacio.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 |
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:
- nagios-common
- nagios-text (Es poden instalar este o nagios-mysql o nagios-postgresql.)
- 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
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:
- /etc/nagios3/apache2.conf: És la configuració d'Apache. S'instal·la fen un enllaç simbòlic cap a aquest fitxer a la carpeta etc/apache2/conf.d.
- /etc/nagios3/htpasswd.users: Usuari(s) i paraula de pas HTTP. L'usuari per defecte és nagiosadmin i la paraula de pas ens l'ha ha preguntat durant l'instal·lació de Nagios.
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.
- 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:
- http://nagios.sourceforge.net/docs/nrpe/NRPE.pdf
- http://nagios.sourceforge.net/docs/3_0/monitoring-linux.html
- http://nagios.sourceforge.net/docs/3_0/addons.html#nrpe
- http://www.linux4all.net/monitoring_linux_hosts_with_nrpe_server_from_nagios
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

