Prima di immergerci nei dettagli dell'installazione e configurazione di Nagios, diamo una rapida occhiata al layout della rete che andremo a monitorare. È una rete molto semplice e minimale, formata da:
Il nostro server di monitoraggio è una macchina critica dal punto di vista della sicurezza e non avrà bisogno di accedere direttamente ad Internet, quindi si troverà benissimo nella LAN interna.
La procedura di installazione di OpenBSD è documentata in dettaglio nelle FAQ ufficiali, quindi non ci soffermeremo su di essa. Nagios non ha esigenze particolari e un'installazione standard andrà benissimo: stando alla documentazione, si accontenta di una macchina con Linux (o altra variante di UNIX)
. Non suona poi così esigente, no?
L'installazione di Nagios richiede solo l'aggiunta di alcuni package:
La procedura di installazione creerà automaticamente l'utente e il gruppo con cui girerà il demone (_nagios). Il flavor chroot installerà Nagios all'interno della chroot di Apache, cioè con i CGI linkati staticamente e tutti i file di configurazione e di log all'interno della directory /var/www. A questo proposito, Nagios ha una struttura di directory particolare con cui conviene familiarizzare:
Come promemoria, il seguente schema, gentilmente offerto da Bren Smith, rappresenta visivamente la struttura delle directory di Nagios (clicca qui per ingrandire).
La configurazione di Nagios può sembrare piuttosto complicata a prima vista; perfino la documentazione avverte che Nagios è molto potente e flessibile, ma può richiedere parecchio lavoro per essere configurato esattamente come lo si vuole
. Comunque, l'importante è non scoraggiarsi! Una volta capita la logica sottostante alla sua configurazione "orientata agli oggetti", non si può che apprezzare la flessibilità e la semplicità di Nagios. Per le prime prove, conviene partire dai file di configurazione di esempio contenuti nella directory /usr/local/share/examples/nagios/, modificandoli secondi le proprie esigenze.
La sintassi dei file di configurazione di Nagios segue alcune regole di base:
La configurazione comprende l'impostazione di parecchi parametri riguardanti il demone di monitoraggio, i CGI e, ovviamente, gli host e i servizi da monitorare. Tutte queste informazioni sono sparse fra vari file: esaminiamoli a turno.
Il comportamento generale del demone Nagios è determinato dalle direttive all'interno del file di configurazione principale, /var/www/etc/nagios/nagios.cfg. Nonostante questo file comprenda parecchie decine di parametri, nella maggior parte dei casi il valore di default è il più ragionevole e ci si occuperà solo di pochissimi parametri (generalmente cfg_file, cfg_dir e admin_email). In ogni caso, una descrizione dettagliata di ogni singolo parametro è disponibile nella documentazione ufficiale.
# Percorso del file di log e della directory di archivio dei log. Tutti i # percorsi sono relativi alla directory chroot '/var/www/' log_file=/var/log/nagios/nagios.log log_archive_path=/var/log/nagios/archives # Percorsi dei file gestiti internamente dall'applicazione object_cache_file=/var/nagios/objects.cache precached_object_file=/var/nagios/objects.precache status_file=/var/nagios/status.dat state_retention_file=/var/nagios/retention.dat command_file=/var/nagios/rw/nagios.cmd lock_file=/var/run/nagios/nagios.pid temp_file=/var/nagios/nagios.tmp temp_path=/tmp check_result_path=/var/spool/nagios # Le definizioni degli oggetti (vd. prossimo capitolo) possono essere divise in # piu' file. E' possibile elencare i file individualmente (usando il parametro # 'cfg_file') o raggrupparli in directory (usando il parametro 'cfg_dir'). In # questo secondo caso, Nagios processera' tutti i file con estensione '.cfg' # all'interno delle directory indicate e le loro sottodirectory cfg_file=/etc/nagios/timeperiods.cfg cfg_file=/etc/nagios/contacts.cfg cfg_file=/etc/nagios/commands.cfg cfg_file=/etc/nagios/generic-hosts.cfg cfg_file=/etc/nagios/generic-services.cfg cfg_dir=/etc/nagios/hosts cfg_dir=/etc/nagios/services # Percorso del resource file, contenente le macro definite dall'utente # (vd. sotto). Puoi specificare altri resource file usando piu' direttive # 'resource_file' resource_file=/etc/nagios/resource.cfg # Utente e gruppo con cui girera' il processo Nagios nagios_user=_nagios nagios_group=_nagios # Indirizzo email e numero di pager dell'amministratore della macchina admin_email=nagios@kernel-panic.it admin_pager=xxx-xxx-xxxx # Formato della data (opzioni possibili: us, euro, iso8601 o strict-iso8601) date_format=euro # Abilita controlli, notifiche e gestori di eventi. I controlli passivi # consentono ad applicazioni esterne di sottoporre a Nagios i risultati dei # controlli. I gestori di eventi sono comandi opzionali da eseguire ad ogni # cambio di stato di un host o servizio 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 # Opzioni sulla 'freschezza' dei controlli. Abilitare queste opzioni garantisce # che i controlli passivi siano sempre aggiornati check_service_freshness=1 service_freshness_check_interval=60 check_host_freshness=0 host_freshness_check_interval=60 additional_freshness_latency=15 # I comandi esterni consentono all'interfaccia web e ad applicazioni esterne # (come NSCA) di impartire comandi a Nagios. Con un intervallo pari a '-1', # Nagios controllera' i comandi esterni il piu' spesso possibile check_external_commands=1 command_check_interval=-1 external_command_buffer_slots=4096 # Varie opzioni di log log_rotation_method=d 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 # Abilita il salvataggio delle informazioni di stato fra restart (vd. # documentazione per ulteriori dettagli) retain_state_information=1 retention_update_interval=60 use_retained_program_state=1 use_retained_scheduling_info=0 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 # Opzioni di flapping dello stato (vd. documentazione per ulteriori dettagli) enable_flap_detection=0 low_service_flap_threshold=5.0 high_service_flap_threshold=20.0 low_host_flap_threshold=5.0 high_host_flap_threshold=20.0 # Varie opzioni di tuning, performance e sicurezza (vd. documentazione per # ulteriori dettagli) interval_length=60 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 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 status_update_interval=15 event_broker_options=-1 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 use_aggressive_host_checking=0 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=0 check_for_orphaned_hosts=1 p1_file=/usr/local/bin/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 daemon_dumps_core=0 use_large_installation_tweaks=0 enable_environment_macros=1 # Opzioni di debug debug_level=0 debug_verbosity=1 debug_file=/var/nagios/nagios.debug max_debug_file_size=1000000
Il resource file consente di assegnare un valore alle macro definibili dall'utente "$USERn$" (dove n è un numero compreso fra 1 e 32). Fondamentalmente, in Nagios, le macro sono variabili (che cominciano e finiscono con un segno di dollaro, "$") che si possono inserire all'interno delle definizioni dei comandi e che verrano sostituite con il rispettivo valore subito prima dell'esecuzione del comando. Le macro definite dall'utente (e le molte altre macro che Nagios rende disponibili) consentono di mantenere le definizioni dei comandi generiche e semplici (vd. il prossimo capitolo per alcuni esempi).
Le macro definite dagli utenti contengono normalmente elementi ricorrenti nelle definizioni dei comandi (come i percorsi di directory) e informazioni sensibili (come nomi utente e password). È consigliabile impostare permessi restrittivi (600) sul resource file in modo da proteggere le informazioni sensibili.
# Assegna a $USER1$ il percorso dei plugin $USER1$=/usr/local/libexec/nagios # MySQL username e password $USER2$=root $USER3$=password
Il prossimo passo è la configurazione dei dati degli oggetti da monitorare, che è probabilmente la parte più complessa della configurazione. Dedicheremo quindi il prossimo capitolo interamente a questo argomento.