Old:Nagios: monitorare server e servizi: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (Aggiunta Configurazione Apache2)
 
(27 versioni intermedie di 7 utenti non mostrate)
Riga 1: Riga 1:
==Caratteristiche==
{{Old}}
== Introduzione ==
Nagios ([http://www.nagios.org Home Page]) è uno strumento molto usato ed utilissimo per il monitoraggio di server e servizi. All'inizio, per molti utenti, è un po' complicato da configurare, ma dopo aver capito il funzionamento risulterà semplice, potente e versatile, attributi necessari per questo genere di strumenti.
{{ Warningbox | Da Debian Lenny 5.0 in poi il pacchetto <code>nagios2</code> non è più presente nei repository. Al suo posto è stato inserito il più aggiornato <code>nagios3</code>.<br/>
Per queste versioni si consiglia pertanto di far riferimento alla guida aggiornata. [[Nagios: monitoraggio infrastruttura IT]] }}


* Intel Pentium M 1.6 GHz
== Installazione ==
* 2x256 MB DDR-SDRAM
La macchina su cui verrà installato Nagios è una Debian Etch. Installeremo la versione 2 di Nagios, con i relativi pacchetti per avere un maggior numero di plugin e immagini (vedremo dopo come usarle).
* 40 GB Matshita hd
* ATI Mobility Radeon 9600 M10 (RV350)
* Audio Intel AC'97
* Matshita DVD-RAM UJ-820s
* Realtek Ethernet Controller
* LCD 15.4"
* ENE PCMCIA Controller
* Intel Pro/Wireless 2200BG
* Alps Touchpad


<pre># lspci
Per installare nagios è sufficiente un:
0000:00:00.0 Host bridge: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
<pre>
0000:00:00.1 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
# apt-get install nagios2 nagios2-common nagios-plugins nagios-images nagios-plugins-basic  nagios-plugins-standard
0000:00:00.3 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
</pre>
0000:00:01.0 PCI bridge: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to AGP Controller (rev 02)
0000:00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 03)
0000:00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 03)
0000:00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 03)
0000:00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 03)
0000:00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 83)
0000:00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 03)
0000:00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 03)
0000:00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 03)
0000:00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 03)
0000:00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 03)
0000:01:00.0 VGA compatible controller: ATI Technologies Inc RV350 [Mobility Radeon 9600 M10]
0000:02:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller (rev 80)
0000:02:01.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
0000:02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG (rev 05)
0000:02:04.0 CardBus bridge: ENE Technology Inc CB-710/2/4 Cardbus Controller
0000:02:04.1 FLASH memory: ENE Technology Inc ENE PCI Memory Stick Card Reader Controller
0000:02:04.2 0805: ENE Technology Inc ENE PCI Secure Digital Card Reader Controller
0000:02:04.3 FLASH memory: ENE Technology Inc: Unknown device 0520</pre>
 
==Installazione di Debian Etch==
 
Secondo me il modo pi� veloce � utilizzare la Netinst che ci permete di installare solo quello che vogliamo, a maggior ragione se si possiede una connesione ADSL tramite router. Tuttavia quello che segue � valido per qualsiasi metodo scelto.
 
Il comando di boot per installare � questo:
<pre>install acpi=yes vga=792</pre>
 
Se volete usare il nuovo installer grafico il comando � il seguente:
<pre>installgui acpi=yes vga=792</pre>
 
===Partizionamento===
 
Ad un certo punto ci troviamo davanti al partizionatore. Le teorie su come partizionare il disco rigido sono tante. Un corretto partizionamento, basato sull'uso che si vuol fare della macchina, rende il sistema pi� sicuro e pi� usabile. Io non sono un grande esperto quindi provate ad informarvi bene su questo punto cercando in rete, consultando pi� di un howto. In definitiva io farei almeno tre partizioni:
 
* 5-7 GB per la partizione di root ( / ), cio� dove risiede il sistema operativo;
* 1-2 GB per la partizione di swap, cio� la memoria virtuale, usata in mancanza di RAM;
* il restante spazio (nel nostro caso 31-34 GB) per la partizione di home ( /home ), dove risiedono i file degli utenti.
 
Il file system da utilizzare per la partizione di root � a scelta Ext3 o Reiserfs (Grub ha dei problemi a installarsi su XFS o JFS). In definitiva consiglierei Ext3, visto che Reiserfs non viene (credo) pi� sviluppato, dopo i problemi legali del suo sviluppatore.


La scelta per il file system per la partizione di home � pi� ampia, ma dipende comunque dall'uso che farete del vostro computer. In generale Ext3 rimane ancora una scelta abbastanza valida. Se il vostro disco rigido ospiter� tanti file di piccole dimensioni, Reiserfs avr� qualche vantaggio prestazionale, altrimenti XFS e JFS, che sono pi� recenti (anche se in teoria pi� instabili) sono consigliabili.
Dopo aver scaricato (sono circa 3.5Mb) ed installato nagios provvediamo all'installazione di un web server (necessario per consultare la comoda [[web-interface]]); la mia scelta è ricaduta su apache2, anche perché il server in questione ospiterà applicazioni scritte in PHP. Procediamo ad installare apache2 con:
 
===Installazione===
 
Dopo aver impostato utenti e password e aver scelto di installare Grub nel Master Boot Record, verr� il momento di scegliere il tipo di installazione. Il mio consiglio � quello di selezionare solamente '''Sistema base''' e '''Portatile'''. Non credo che selezionare anche '''Ambiente desktop''' sia sensato, in quanto di default viene messo Gnome (a meno che non sia quello che vogliate voi ;) ).
 
L'installer a questo punto scaricher� (da internet o dal cd/dvd) il necessario per il sistema base. Una volta installato e configurato, riavviamo e facciamo il login nel sistema. Adesso � il momento di installare il necessario per il desktop:
<pre>
<pre>
# aptitude install xserver-xorg kde kde-i18n-it
# apt-get install apache2 libapache2-mod-php5
</pre>
</pre>


Sostituiamo <tt>'''kde kde-i18n-it'''</tt> con <tt>'''gnome'''</tt> o <tt>'''xfce4'''</tt> per i rispettivi desktop environment.
Se vogliamo qualcosa di pi carino, ci conviene installare anche un desktop manager come <tt>'''kdm''', '''gdm''' o '''xdm'''</tt>.


==Configurazione==
== Configurazione ==
=== Apache ===
Al momento dell'installazione viene creato in modo automatico il file <code>/etc/apache2/conf.d/nagios2.conf</code> (il file è, a tutti gli effetti, un link simbolico al file <code>/etc/nagios2/apache2.conf</code>) con il seguente contenuto:
<pre>
# apache configuration for nagios 2.x
# note to users of nagios 1.x:
# throughout this file are commented out sections which preserve
# backwards compatibility with bookmarks/config for nagios 1.x.  simply
# look for lines following "nagios 1.x:" comments.


===LAN===
ScriptAlias /cgi-bin/nagios2 /usr/lib/cgi-bin/nagios2
ScriptAlias /nagios2/cgi-bin /usr/lib/cgi-bin/nagios2
# nagios 1.x:
#ScriptAlias /cgi-bin/nagios /usr/lib/cgi-bin/nagios2
#ScriptAlias /nagios/cgi-bin /usr/lib/cgi-bin/nagios2


Sono riuscito a configurare correttamente la connessione a internet tramite router.
# Where the HTML pages live
Alias /nagios2 /usr/share/nagios2/htdocs
# nagios 1.x:
#Alias /nagios /usr/share/nagios2/htdocs


La procedura � ben descritta in [[Condividere la connessione a internet]].
<DirectoryMatch (/usr/share/nagios2/htdocs|/usr/lib/cgi-bin/nagios2)>
Options FollowSymLinks


===Wireless===
DirectoryIndex index.html


La scheda di rete wireless � riconosciuta automaticamente dal kernel. Dobbiamo solamente mettere il firmware reperibile [http://ipw2200.sourceforge.net/firmware.php qui] in <tt>/lib/firmware/</tt>. La versione da scaricare dovrebbe essere la 3.0 .
AllowOverride AuthConfig
Order Allow,Deny
Allow From All


====Il WEP====
AuthName "Nagios Access"
''(by jockerfox)''
AuthType Basic
AuthUserFile /etc/nagios2/htpasswd.users
# nagios 1.x:
#AuthUserFile /etc/nagios/htpasswd.users
require valid-user
</DirectoryMatch>


No problem !
# Where the stylesheets (config files) reside
#Alias /nagios2/stylesheets /etc/nagios2/stylesheets
# nagios 1.x:
#Alias /nagios/stylesheets /etc/nagios2/stylesheets


A.S.: Il KWiFIManager e' utile, ma non per configurare la chiave WEP!!!
# Enable this ScriptAlias if you want to enable the grouplist patch.
# See http://apan.sourceforge.net/download.html for more info
# It allows you to see a clickable list of all hostgroups in the
# left pane of the Nagios web interface
# XXX This is not tested for nagios 2.x use at your own peril
#ScriptAlias /nagios2/side.html /usr/lib/cgi-bin/nagios2/grouplist.cgi
# nagios 1.x:
#ScriptAlias /nagios/side.html /usr/lib/cgi-bin/nagios2/grouplist.cgi
</pre>
Il file contiene una bozza di configurazione per nagios che permette di raggiungere il servizio digitando, semplicemente <nowiki>http://IP/nagios2/</nowiki>. Questo sistema a me, personalmente, non piace, in quanto nagios sarebbe accessibile da qualsiasi sito ospitato sulla macchina, semplicemente digitando <nowiki>http://www.sito.it/nagios2/</nowiki>, non molto sicuro e pulito.


;Importante: In primis, abilitate la chiave WEP nel router (esempio io la ho abilitata in 128 bit)
Creeremo, quindi, un sottodominio dedicato a nagios, modificando il file nel seguente modo:
e '''scrivetevi il codice esadecimale''' in un foglio senza sbagliare !!
<pre>
# Da Konsole digitate : network-admin (lo trovate anche nel menu' K) e vi chiedera' la password di amministratore.. inseritela !
# Una volta "entrati dentro", cliccate sull'icona del Wireless, e poi cliccate sull'icona "modifica" (e' un'icona con una chiave inglese) e inserite la chiave WEP in esadecimale (ex:ABF0D3...); non occorre aggiungere "0x" avanti alla chiave, (0xABFoD3...NO!!) digitatela direttamente in esadecimale (ABF0D3...SI!)
# selezionate la casellina "questo dispositivo e' configurato"
# le altre opzioni se volete... tipo ESSID Dopo premete OK (due volte) e reboot !!!


Sperando di non essermi dimenticato qualcosa... ciao!
<VirtualHost *:80>
    ServerAdmin root@knio.it
#    DocumentRoot /var/www/nagios/
    ServerName nagios.knio.it


===VIDEO===
    ErrorLog /var/log/apache2/nagios.knio.it_error.log
    CustomLog /var/log/apache2/nagios.knio.it_access.log combined


====Utilizzare i driver open source ====
    <Directory />
        AllowOverride All
        Options +Multiviews
        Options Indexes Includes FollowSymLinks MultiViews
        DirectoryIndex index index.html
    </Directory>


I driver ati open source sono parzialmente accelerati. Dalla mia esperienza � possibile usarli tranquillamente. E' sufficiente avere le librerie mesa (<tt>libglu1-mesa libgl1-mesa-glx libgl1-mesa-dri</tt>) e modificare il file <tt>/etc/X11/xorg.conf</tt>. Riporto solo le sezioni da aggiungere o modificare:
    ScriptAlias /cgi-bin/nagios2 /usr/lib/cgi-bin/nagios2
<pre>Section "Module"
    ScriptAlias /nagios2/cgi-bin /usr/lib/cgi-bin/nagios2
        ...
        Load    "dbe"
        Load    "dri"
        Load    "extmod"
        Load    "glx"
        ...
EndSection


Section "Device"
   
        Identifier      "ATI Technologies, Inc. RV350 [Mobility Radeon 9600 M10]"
    #Alias /nagios2/stylesheets /etc/nagios2/stylesheets
        Driver          "radeon"
    Alias /nagios2 /usr/share/nagios2/htdocs
        BusID          "PCI:1:0:0"
    # Enable this ScriptAlias if you want to enable the grouplist patch.
EndSection
    # See http://apan.sourceforge.net/download.html for more info
    # It allows you to see a clickable list of all hostgroups in the
    # left pane of the Nagios web interface
    # XXX This is not tested for nagios 2.x use at your own peril
    #ScriptAlias /nagios2/side.html /usr/lib/cgi-bin/nagios2/grouplist.cgi
    <DirectoryMatch (/usr/share/nagios2/htdocs|/usr/lib/cgi-bin/nagios2)>
Options FollowSymLinks
DirectoryIndex index.html
AllowOverride AuthConfig
Order Allow,Deny
Allow From All
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /etc/nagios2/htpasswd.users
require valid-user
    </DirectoryMatch>
</VirtualHost>
</pre>


Section "DRI"
Creiamo la Root Directory per questo sito con:
        Mode    0666
<pre>
EndSection</pre>
# mkdir  /var/www/nagios
# chown -R www-data:www-data /var/www/nagios/
# touch /var/www/nagios/index.html
</pre>
la directory conterrà un file <code>index.html</code> vuoto, in questo file potremmo mettere o una pagina di benvenuto oppure un redirect alla directory contenente l'applicativo, a piacere.


Se invece vogliamo utilizzare i drive proprietari Ati:
Ora manca solo una cosa da fare: aggiungere l'utente per l'accesso a nagios (operazione obbligatoria, pena un errore di tipo 500 quando si tenta di accedere all'applicazione).


la guida � qui: [[Installazione driver proprietari Ati]].
Per aggiungere l'utente usiamo il comando <code>htpasswd</code>:
 
<pre>
Dopo le modifiche '''riavviamo X.'''
# htpasswd  -c  /etc/nagios2/htpasswd.users nagiosadmin
 
</pre>
====xorg.conf====
alla richiesta di password, inseriamo una password a nostro piacimento.


Questo e' il mio <tt>xorg.conf</tt>:
Ora possiamo testare la configurazione, ma prima è necessario riavviare Apache per rendere effettive le modifiche che abbiamo effettuato:
<pre>
<pre>
# /etc/X11/xorg.conf (xorg X Window System server configuration file)
# /etc/init.d/apache2 restart
#
</pre>
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the /etc/X11/xorg.conf manual page.
# (Type "man /etc/X11/xorg.conf" at the shell prompt.)
#
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
#  sudo dpkg-reconfigure -phigh xserver-xorg


Section "Files"
Collegandosi alla pagina <nowiki>http://nagios.knio.it/nagios2/</nowiki> ci verrà chiesto username/password per accedere a nagios, dopodiché ci verrà mostrata la schermata di default.
FontPath "/usr/share/fonts/X11/misc"
FontPath "/usr/share/fonts/X11/100dpi/:unscaled"
FontPath "/usr/share/fonts/X11/75dpi/:unscaled"
FontPath "/usr/share/fonts/X11/Type1"
FontPath "/usr/share/fonts/X11/100dpi"
FontPath "/usr/share/fonts/X11/75dpi"
# path to defoma fonts
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection


Section "Module"
=== Nagios ===
Load "dbe"
==== Introduzione alla configurazione ====
Load "bitmap"
La configurazione di nagios è situata, come da [[FHS]] in <code>/etc/nagios2/</code>. All'interno di questa directory sono presenti i seguenti file (e directory):
Load "ddc"
; cgi.cfg : il file contiene la configurazione dell'interfaccia web di nagios (quindi i percorsi dove trovare i file di configurazione ed alcuni comportamenti base; la configurazione dei permessi degli utenti e perfino i suoni da riprodurre in caso di problemi)
Load "dri"
; commands.cfg : contiene la configurazione dei comandi eseguibili da nagios: check, notifiche ed altri
Load "extmod"
; conf.d : una directory che ha lo scopo di raccogliere i file di configurazione di tutti i vari host monitorati da nagios
Load "freetype"
; htpasswd.users : contiene (come abbiamo visto prima) le chiavi di accesso di tutti gli utenti che possono accedere all'interfaccia web di nagios (i permessi, per questi utenti, sono definiti in <code>cgi.cfg</code>)
Load "glx"
; nagios.cfg : contiene la configurazione vera e propria del demone di nagios, la configurazione di default è corretta nella maggior parte dei casi
Load "int10"
; resource.cfg : in questa guida non lo modificheremo
Load "type1"
; stylesheets : directory per inserire i fogli di stile personalizzati (in questa guida non li useremo)
Load "vbe"
EndSection


Section "InputDevice"
==== Come gestire al meglio i file di configurazione ====
Identifier "Keyboard"
Anche se la struttura dei file di configurazione è semplice, ci vuole molto poco a renderla una vera e propria accozzaglia di file. Ci sono varie scuole di pensiero su come gestire i file.
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "it"
EndSection


Section "InputDevice"
La prima è quella di inserire, all'interno della directory <code>conf.d/</code> un file per ogni host, raggruppando, poi, gli host tramite gli hostgroup. La tecnica è valida e funzionale, a meno che non ci si trovi a gestire un numero eccessivo di host.
Identifier "Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "Protocol" "ExplorerPS/2"
Option "Emulate3Buttons" "true"
EndSection


Section "InputDevice"
La seconda tecnica, è quella di creare tante directory quanti sono i segmenti della rete, così da racchiudere i file di configurazione in directory meno popolate, così da rendere più facilmente individuabile un file.  
Identifier    "Touchpad"
Driver        "mouse"
Option        "Device"        "/dev/input/mice"
Option       "Name" "AlpsPS/2 ALPS GlidePoint"
Option        "Protocol"      "ExplorerPS/2"
Option       "Vendor" "Sysp"
Option        "LeftEdge"      "1700"
Option        "RightEdge"    "5300"
Option        "TopEdge"      "1700"
Option        "BottomEdge"    "4200"
Option        "FingerLow"    "25"
Option        "FingerHigh"    "30"
Option        "MaxTapTime"    "180"
Option        "MaxTapMove"    "220"
Option        "VertScrollDelta" "100"
Option        "MinSpeed"      "0.10"
Option        "MaxSpeed"      "0.30"
Option        "AccelFactor" "0.015"
Option        "SHMConfig"    "on"
EndSection


Section "Device"
Personalmente trovo più comodo gestire la prima, con la seguente convenzione:
Identifier "ATI Technologies, Inc. RV350 [Mobility Radeon 9600 M10]"
* ogni file ha la forma <code>'''type'''-'''name'''.cfg</code> dove '''type''' rappresenta la tipologia del file di configurazione (''host'' per un server, ''switch'' per uno switch di rete, ''router'' per un router, e così via...) e dove '''name''' è il nome univoco associato alla macchina (e usato anche all'interno di Nagios).
Driver "radeon"
* i file contenenti i gruppi, le definizioni dei periodi e simili hanno una struttura <code>'''type'''.cfg</code> dove ''type'' può essere:
Option "ColorTiling"    "on"            # Aggiunto per AIGLX
** '''contacts''': per le definizioni dei contatti
Option "EnablePageFlip" "true"          # Aggiunto per AIGLX
** '''timeperiods''': per le definizioni dei periodi
Option "AccelMethod"    "EXA"          # Aggiunto per AIGLX
** '''extinfo''': per le definizioni delle informazioni aggiuntive
Option "RenderAccel"    "true"          # Aggiunto per AIGLX
** '''hostgroups''': per la definizione dei gruppi di host
Option "AGPFastWrite"  "on"            # Aggiunto per AIGLX (Sperimentale)
** '''services''': per la definizione dei gruppi di servizi
Option "AGPMode"        "8"            # Aggiunto per AIGLX (Sperimentale)
Option "XAANoOffscreenPixmaps" "true" # Aggiunto per Compiz
BusID "PCI:1:0:0"
EndSection


Section "Monitor"
Un'accortezza da adottare, inoltre, quando si modifica un file di configurazione è quella di effettuare un check di correttezza tramite il comando:
Identifier "Monitor"
<pre>
Option "DPMS" "true"
# nagios -v /etc/nagios2/nagios.conf
HorizSync 30-70
</pre>
VertRefresh 50-100
In questo modo si eviteranno [[downtime]] e si sarà sicuri che nagios ripartirà senza problemi (almeno legati alla sintassi dei file di configurazione...).
EndSection


Section "Screen"
==== Gli Host ====
Identifier "Screen"
Tramite gli '''[[host]]''' è possibile definire i PC, server, switch e tutte le altre apparecchiature presenti nella rete da monitorare. Saranno poi i '''servizi''' a determinare cosa monitorare effettivamente.
Device "ATI Technologies, Inc. RV350 [Mobility Radeon 9600 M10]"
Monitor "Monitor"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1280x800" "1024x768" "800x600" "640x480"
EndSubSection
EndSection


Section "ServerLayout"
La definizione classica e minimale di un host è la seguente:
Identifier "Default Layout"
<pre>
Option "AIGLX" "true"  # Aggiunto per AIGLX
define host{
Screen          "Screen"
  use        generic-host
# Option "BlankTime" "1" # Oscura lo schermo dopo x minuti (Fake)
  host_name  serverino
# Option "StandbyTime" "3" # Spegne lo schermo dopo x minuti (DPMS)
  alias      Server di Produzione
# Option "SuspendTime" "10" # Sospende dopo x minuti
  address    192.168.0.15
# Option "OffTime" "30" # Spegne dopo x minuti
}
InputDevice "Keyboard"
</pre>
InputDevice "Mouse"
InputDevice "Touchpad" "AlwaysCore"
EndSection


Section "DRI"
I parametri della definizione sono i seguenti:
Mode 0666
; use : permette di specificare un [[template]] da utilizzare all'interno del nostro host. L'utilizzo di un template permette di minimizzare i parametri necessari da passare ad un host. Il template che usiamo, per ora, è ''generic-host'' che è quello fornito di default in Debian. In seguito provvederemo a creare dei template che permetteranno uan suddivisione degli host in modo semplice ed immediato.
EndSection
; host_name : l'[[hostname]] dell'host. Deve essere univoco, in quanto viene utilizzato all'interno di Nagios come nome univoco di un host. è buona pratica utilizzare l'hostname della macchina, in quanto permetterà, in seguito, di identificarla più facilmente. In caso di switch od altri componenti conviene identificarli nel seguente modo: '''switch-dmz''', '''firewall-dmz''', etc.
; alias : rappresenta il nome comune dell'host.
; address : l'indirizzo IP dell'host. Deve essere inserito solo l'indirizzo Primario, e non una lista di indirizzi! Se si vogliono monitorare più indirizzi IP o più servizi legati a più indirizzi IP, sarà opportuno o definire un altro host (non molto corretto) oppure aggiungere servizi in cui viene indicato, come parametro, l'indirizzo IP secondario.


Section "Extensions"
Oltre a quelli specificati è possibile aggiungere questi parametri (per quelli utilizzati nel template rimando al sottocapitolo dedicato):
Option "Composite" "Enable"
; parents <host_names> : permette di indicare, tramite un elenco di host separati da virgola, i "parenti" di quell'host (ad esempio switch, gateway, ecc). Utile per la rappresentazione grafica della struttura della rete
EndSection
; hostgroups <hostgroup_names> : permette di specificare i gruppi, sempre separati da virgola, a cui appartiene l'host.


### EOF ###
Come convenzione per la creazione di un host creeremo un file col formato '''/etc/nagios2/conf.d/hosts/hostname.cfg''' dove ''hostname'' va sostituito con l'hostname dell'host definito.
</pre>
 
====Xorg 1.4.0.90====


Se avete aggiornato a Sid (Debian unstable) potreste avere dei problemi con il server grafico. X si autoconfigura da solo. L'unica cosa che io ho dovuto fare perch� le cose funzionassero al meglio � stato quello di disabilitare il DRI. Non so perch� ma X si freeza e niente risponde se non si fa quest'operazione:
==== I Servizi ====
Se anche voi avete questo problema, modificate la sezione "Device" nel file <tt>xorg.conf</tt>, aggiungendo, tra _Section "Device"_ e _EndSection_, la riga:
I servizi vengono utilizzati per definire un controllo su un servizio presente su un determinato host. Possono essere associati ad un determinato host (utile per controlli specifici) oppure ad un hostgroup (utile per controlli generici o comunque monitoraggio di servizi standard).


Un servizio ha, normalmente, la seguente struttura:
<pre>
<pre>
Option      "DRI"    "off"
define service{
  use                  generic-service
  host_name            localhost
  service_description  Disk Space
  check_command        check_all_disks!20%!10%
}
</pre>
</pre>


===AUDIO===
Dove vengono usati i seguenti parametri:
; use <service-template> : indica il template da utilizzare. Il template contiene tutti i parametri necessari per la configurazione del servizio. In caso di necessità, comunque, è possibile sovrascrivere un parametro presente nel template semplicemente ridefinendolo all'interno del servizio.
; host_name <hostname> : l'hostname specificato nella configurazione dell'host di cui si vuole monitorare il servizio
; service_description <description> : la descrizione ''umana'' del servizio
; check_command <command> : il [[#I_Comandi | comando]] da utilizzare per eseguire il controllo del servizio.


Bisogna installare i paccheti ALSA:
L'esempio sopra riportato associa il servizio ad un determinato host, ma è possibile associarlo ad un hostgroup, sostituendo la voce <code>host_name</code> con <code>hostgroup_name</code>.
<pre># apt-get install alsa-base alsa-utils</pre>
Poi fare un bel:
<pre># alsaconf</pre>
seguire le istruzioni e poi:
<pre># alsamixer</pre>
per settare i volumi.


===Touchpad===
Per i servizi verrà adottata la seguente convenzione:
* se il servizio è dedicato ad un singolo host, viene inserito all'interno del file di configurazione dell'host
* se il servizio è dedicato ad un hostgroup, invece, verrà inserito all'interno del file di definizione dell'[[#hostgroup | hostgroup]].


Questo portatile ha un touchpad Alps, ma funziona anche con i driver Synaptics (a patto di rinunciare al tapping e allo scrolling, se non sbaglio).
==== I Comandi ====
I comandi rappresentano i mattoni su cui costruire i check dei sistemi. Essi possono essere specifici (ad esempio il check di funzionamento di un server [[IMAP]]) o generici (come il test dell'apertura di una porta [[TCP]]).


Per usare i driver Synaptics, la guida � qui: [[Synaptics touchpad]].
I comandi base sono definiti in <code>/etc/nagios2/commands.cfg</code>, mentre quelli installati tramite i plugin (i pacchetti ''nagios-plugins*'') sono contenuti in <code>/etc/nagios-plugins/config/</code>.


Se invece non volete usare i suddetti driver, quindi far funzionare il tapping e lo scrolling pi� felicemente, lasciate la configurazione presente nel file <tt>xorg.conf</tt> riportato sopra. Probabilmente i valori sono da aggiustare.
La sintassi per la definizione di un comando è la seguente:
<pre>define command{
  template      <templatename>
  name          <objectname>
  command_name  <commandname>
  command_line  <commandline>
}</pre>


===PCMCIA===
Dove:
; template <templatename> : permette di caricare un template (cioè un'altra definizione di comando da cui attingere i valori opzionali)
; command_name  <commandname> : il nome (univoco) del comando. Per convenzione, non potendo inserire spazi all'interno del nome, sostituiremo quest'ultimi con dei '''-'''.
; command_line  <commandline> : il percorso completo del comando (script o eseguibile) da lanciare, con gli eventuali parametri specificati.


Su internet ho trovato che l'adattatore PCMCIA, su questo modello, � riconosciuto con il modulo <tt>yenta_socket</tt>.
===== Utilizzare quelli esistenti =====
Carpire il corretto utilizzo dei comandi può essere, a volte, un po' complesso. Per capire come utilizzare quelli definiti, possiamo adottare la seguente strategia:
* identifichiamo il percorso completo del comando da eseguire. In questo esempio ci riferiremo ai comandi contenuti in <code>/etc/nagios-plugins/config/http.cfg</code>. Il path del comando che viene richiamato è <code>/usr/lib/nagios/plugins/check_http</code>.
* visualizziamo l'output dell'help del comando:
<pre>
# /usr/lib/nagios/plugins/check_http -h
check_http (nagios-plugins 1.4.5) 1.96
Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>
Copyright (c) 1999-2006 Nagios Plugin Development Team
        <nagiosplug-devel@lists.sourceforge.net>


===Gestione energetica===
This plugin tests the HTTP service on the specified host. It can test
normal (http) and secure (https) servers, follow redirects, search for
strings and regular expressions, check connection times, and report on
certificate expiration times.


Date un'occhiata qui: [[Cpufreqd: Cpuscaling per Intel Pentium M]]


Io, per risolvere, ho attivato i seguenti moduli:
Usage: check_http -H <vhost> | -I <IP-address> [-u <uri>] [-p <port>]
<pre>acpi-cpufreq
      [-w <warn time>] [-c <critical time>] [-t <timeout>] [-L]
ac
      [-a auth] [-f <ok | warn | critical | follow>] [-e <expect>]
battery
      [-s string] [-l] [-r <regex> | -R <case-insensitive regex>] [-P string]
button
      [-m <min_pg_size>:<max_pg_size>] [-4|-6] [-N] [-M <age>] [-A string] [-k string]
fan
NOTE: One or both of -H and -I must be specified
processor
thermal
cpufreq_userspace
freq_table</pre>
� possibile farlo con <tt>modconf</tt>.
Comunque molti sono gia' attivati.
Inoltre vanno installati:
<pre>acpi cpufreqd cpufrequtils</pre>
Con il comando:
<pre>cpufreq-set</pre>
potete cambiare la frequenza del processore. Esempio:
<pre>cpufreq-set -f 1.2GHz</pre>
oppure ottenere info con:
<pre>cpufreq-info</pre>


Se vi intendete di liguaggio C, o avete lavorato per Microsoft o Intel, potete provare a ricompilarvi la DSDT (Differentiated System Description Table). Questo vi permetter�, forse, di ottenere prestazioni migliori, di correggere qualche errore o di aggiungerne di nuovi. La guida � qui: [[ACPI e DSDT]].
Options:
-h, --help
    Print detailed help screen
-V, --version
    Print version information
-H, --hostname=ADDRESS
    Host name argument for servers using host headers (virtual host)
    Append a port to include it in the header (eg: example.com:5000)
-I, --IP-address=ADDRESS
    IP address or name (use numeric address if possible to bypass DNS lookup).
-p, --port=INTEGER
Port number (default: 80)
-4, --use-ipv4
    Use IPv4 connection
-6, --use-ipv6
    Use IPv6 connection
-S, --ssl
  Connect via SSL
-C, --certificate=INTEGER
  Minimum number of days a certificate has to be valid.
  (when this option is used the url is not checked.)


===Sensori===
-e, --expect=STRING
    String to expect in first (status) line of server response (default:
HTTP/1.
    If specified skips all other status line logic (ex: 3xx, 4xx, 5xx processing)
-s, --string=STRING
    String to expect in the content
-u, --url=PATH
    URL to GET or POST (default: /)
URL to GET or POST (default: /)
,-P, --post=STRING    URL encoded http POST data
-N, --no-body
    Don't wait for document body: stop reading after headers.
    (Note that this still does an HTTP GET or POST, not a HEAD.)
-M, --max-age=SECONDS
    Warn if document is more than SECONDS old. the number can also be of
    the form "10m" for minutes, "10h" for hours, or "10d" for days.
-T, --content-type=STRING
    specify Content-Type header media type when POSTing


Guida: [[I2c e lm-sensors]]
-l, --linespan
    Allow regex to span newlines (must precede -r or -R)
-r, --regex, --ereg=STRING
    Search page for regex STRING
-R, --eregi=STRING
    Search page for case-insensitive regex STRING
--invert-regex
    Return CRITICAL if found, OK if not


Anche se questo laptop dovrebbe avere i sensori per le temperature e la ventola, <tt>lm-sensors</tt> non sembra rilevarli.  
-a, --authorization=AUTH_PAIR
    Username:password on sites with basic authentication
-A, --useragent=STRING
    String to be sent in http header as "User Agent"
-k, --header=STRING
    Any other tags to be sent in http header. Use multiple times for additional headers
-L, --link=URL
    Wrap output in HTML link (obsoleted by urlize)
-f, --onredirect=<ok|warning|critical|follow>
    How to handle redirected pages
-m, --pagesize=INTEGER<:INTEGER>
    Minimum page size required (bytes) : Maximum page size required (bytes)
-w, --warning=DOUBLE
    Response time to result in warning status (seconds)
-c, --critical=DOUBLE
    Response time to result in critical status (seconds)
-t, --timeout=INTEGER
    Seconds before connection times out (default: 10)
-v, --verbose
    Show details for command-line debugging (Nagios may truncate output)
Notes: This plugin will attempt to open an HTTP connection with the host.
Successful connects return STATE_OK, refusals and timeouts return STATE_CRITICAL
other errors return STATE_UNKNOWN.  Successful connects, but incorrect reponse
messages from the host result in STATE_WARNING return values.  If you are
checking a virtual server that uses 'host headers' you must supply the FQDN
(fully qualified domain name) as the [host_name] argument.
This plugin can also check whether an SSL enabled web server is able to
serve content (optionally within a specified time) or whether the X509
certificate is still valid for the specified number of days.
Examples: CHECK CONTENT: check_http -w 5 -c 10 --ssl www.verisign.com


===Note per Debian Sarge===
When the 'www.verisign.com' server returns its content within 5 seconds,
a STATE_OK will be returned. When the server returns its content but exceeds
the 5-second threshold, a STATE_WARNING will be returned. When an error occurs,
a STATE_CRITICAL will be returned.


Riporto a fini di completezza alcuni accorgimenti per installare Debian Sarge:
CHECK CERTIFICATE: check_http www.verisign.com -C 14


====Installazione====
When the certificate of 'www.verisign.com' is valid for more than 14 days,
Il comando di boot per installare:
a STATE_OK is returned. When the certificate is still valid, but for less than
<pre>linux26 acpi=yes vga=792 hw-detect/start_pcmcia=false</pre>
14 days, a STATE_WARNING is returned. A STATE_CRITICAL will be returned when
per impedire all'installer di bloccarsi al rilevamento del controller PCMCIA. Appena finita la prima parte di installazione, subito dopo il riavvio, dobbiamo sistemare la configurazione del PCMCIA (vedi appena sotto).
the certificate is expired.


====PCMCIA====
(by  [[Utente:Alex|Alex]])


Sistemiamola procedendo in questo modo:
Send email to nagios-users@lists.sourceforge.net if you have questions
 
regarding use of this software. To submit patches or suggest improvements,
Al GRUB, selezionare:
send email to nagiosplug-devel@lists.sourceforge.net
<pre>Debian GNU/LINUX, kernel 2.6.8-2-686 (failsafe)</pre>
</pre>
in maniera da accedere come root alla console. A questo punto bisogna dare i seguenti comandi:
* confrontiamo la definizione del comando con l'help appena ottenuto:
<pre># nano /etc/pcmcia/config.opts</pre>
Si aprir� il file di configurazione della pcmcia, dove bisogna cercare la seguente riga:
<pre>include port 0x800-0x8ff</pre>
e commentarla con #:
<pre>#include port 0x800-0x8ff</pre>
A questo punto, salvato il file, si potr� dare il reboot e concludere l'installazione normalmente.
 
====Server X====
Configuriamo il server XFree86 nel file <tt>/etc/X11/XF86Config-4</tt>, riporto solo le sezioni da modificare:
<pre>
<pre>
Subsection "Display"
define command{
    Deph          24
  command_name    check_http
    Modes        "1280x800" "1024x768" "800x600" "640x480"
  command_line    /usr/lib/nagios/plugins/check_http -H $HOSTADDRESS$ -I $HOSTADDRESS$
EndSubSection
}</pre>
in questo caso, si occuperà di controllare che ci sia un [[webserver]] funzionante sulla porta 80 dell'host di cui stiamo eseguendo il check (<code>$HOSTADDRESS$</code> e <code>$HOSTADDRESS$</code> sono delle Macro. Per approfondimenti consultare il paragrafo [[#Le Macro |Le Macro]]).


Section "Monitor"
Un altro esempio potrebbe essere il comando <code>check_disk</code>, che ha la seguente definizione:
Identifier "Monitor"
<pre>define command{
HorizSync 30-70
        command_name    check_disk
VertRefresh 50-100
        command_line    /usr/lib/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -
Option "DPMS"
p $ARG3$
EndSection</pre>
}</pre>
In questo caso si tratta di un controllo locale (quindi viene effettuato sulla macchina su è installato Nagios), infatti non sono presenti le macro viste prima, ma al loro posto sono presenti <code>$ARG1$</code> <code>$ARG2$</code> e <code>$ARG3$</code>, che rappresentano i parametri passati, all'interno della configurazione dei servizi. In questo caso, la prima opzione (<code>-w</code>) imposta il livello di warning, la seconda (<code>-c</code>) imposta la soglia critica e il terzo (<code>-p</code>) indica la partizione su cui effettuare il controllo.


'''Nota''' ''(by jokerfox)'': Nel Toshiba M30X-159, per vedere bene le risoluzioni da 1024x768 in su.. ho dovuto modificare nella sezione "Monitor" la sincronizzazione orizzontale e verticale nel seguente modo :
Quando andremo a richiamare il comando all'interno della definizione del servizio, lo faremo in questo modo:
<pre>
<pre>
Section "Monitor"
define service{
Identifier "LPL:0000"
        use                            generic-service
HorizSync 30-61
        host_name                      localhost
VertRefresh 56-75
        service_description            Disk Space on /dev/hda1
Option "DPMS"
        check_command                  check_all_disks!20%!10%!"/dev/hda1"
EndSection
}</pre>
</pre>
Com'è facilmente intuibile, il servizio controllerà la partizione ''/dev/hda1'' ed andrà in stato di warning quando ci sarà meno del 20% di spazio disponibile, ed in stato di errore critico quando ce ne sarà meno del 10%.


====Wireless====
I parametri sono separati da un '''!''' e vanno indicati nell'ordine corretto (<code>$ARG1$</code> indica il primo parametri, e così via...)!


Guida@Debianizzati.org : [[Intel PRO/Wireless 2200BG]]
===== Creare nuovi comandi =====
Per semplicità (e convenzione di questa guida) i comandi ''personalizzati'' verranno salvati in <code>/etc/nagios2/conf.d/commands.cfg</code> in modo da non modificare il file di configurazione di default di Nagios (cosa che tornerà utile in caso di aggiornamenti e/o migrazioni).


=====Debian way=====
==== I Gruppi di Host (hostgroup) ====
''(by ckale)''
Un '''hostgroup''' è semplicemente un sistema per raggruppare più host in base a delle caratteristiche comuni (che spaziano dall'appartenenza ad una stessa sottorete all'erogazione di uno stesso tipo di servizio, ...).


Per evitare, in parte, di fare il passaggio 1 e 2  (vedi sotto), installate attraverso apt-get il "[[Pagina di manuale di module-assistant|module-assistant]]". Questo vi consentir� di recuperare, pachettizzare ed installare il modulo per il ipw2200. Una volta installato, con <tt>apt-get install module-assistant</tt> modifichiamo anche il source.list di apt che si trova <tt>/etc/apt/source.list</tt> aggiungendo "non-free" e "contrib" sia per il repo "deb" che deb-src come in esempio :
Una definizione standard di hostgroup è la seguente:
<pre>
define hostgroup {
  hostgroup_name  http-servers
  alias            HTTP servers
  members          hostname1, hostname2
}
</pre>


deb http://debian.fastweb.it/debian/ stable main non-free contrib
Con i seguenti parametri:
deb-src http://debian.fastweb.it/debian/ stable main non-free contrib
; hostgroup_name <hostgroupname> : il nome (univoco e senza spazi) dell'hostgroup. Verrà utilizzato all'interno dei file di configurazione di nagios per fare riferimento a questo gruppo di host
; alias <alias> : un nome comprensibile (una breve descrizione) del gruppo
; members <hostname1, hostname2> : i membri (<code>members</code>) appartenenti al gruppo. <code>members</code> e <code>hostgroups</code> (visto in precedenza all'interno della sezione [[#Gli_Host |Gli Host]] hanno la stessa funzione, ma in più permettono di decidere come gestire l'assegnazione: tramite <code>members</code> viene inserita la lista degli host che fanno parte del gruppo, quindi l'associazione avviene all'interno del file che definisce l'hostgroup; tramite <code>hostgroups</code> l'associazione avviene all'interno del file di configurazione dell'host, in cui vengono indicati tutti i gruppi a cui appartiene. Personalmente ritengo più comodo il secondo metodo in quanto, in caso di rimozione di un host, col primo metodo bisognerebbe modificare tutti i file dei gruppi di cui l'host era membro, pena l'impossibilità di far ripartire nagios; inoltre, specificando tutti i gruppi a cui appartiene un host all'interno del proprio file di configurazione permette di avere sotto controllo l'appartenenza di uno specifico host ad un gruppo.


Un volta fatto ci� aggiorniamo apt-get update e lanciamo module-assistant.
Per gli hostgroup si adotta la convenzione di inserirli nella directory <code>/etc/nagios2/conf.d/hostgroups/</code>, specificando per ogni gruppo un file con la sintassi <code>hostgroupname.cfg</code>.
Ricordiamoci pero' di copiare i file firmware nella cartella <tt>/usr/lib/hotplug/firmware/</tt> (con il [[Udev e Debian|nuovo udev]] il percorso � <tt>/lib/firmware</tt>).
I servizi dedicati a quell'hostgroup andranno, a loro volta, inseriti nel file di configurazione del gruppo di host, così come si è fatto per i servizi di un singolo host.


A questo punto proviamo a caricare il modulo con modprobe ipw2200
==== I Gruppi di Servizi ====
==== I Contatti ====
==== I Timeperiod ====
==== Le notifiche ====
===== Notifiche via e-mail =====
===== Notifiche via SMS (vodafone) =====
===== Notifiche via SMS (gateway) =====


Una volta caricato il modulo procediamo con l'installazione delle utility wireless, apt-get install wireless-utility. Con il comando iwconfig possiamo vedere le interfacce di rete wifi.  
== Varie ==
=== Nagios Checker ===
Nagios Checker ([https://addons.mozilla.org/it/firefox/addon/3607 Home Page]) è una comoda estensione per Firefox che permette di monitorare, direttamente dal browser, lo stato delle nostre macchine. In caso di problemi verrà mostrato un avviso (in rosso) e verrà riprodotto un suono di allarme. Tramite l'estensione sarà possibile, inoltre, accedere direttamente alla pagina dell'host (o del servizio) che danno problemi per approfondire. Un must!


{{Warningbox|Se non funziona controllate il log del modprobe e verificate che il modulo cerchi il driver corretto, mi � capitato che lui cercasse un file con un nome diverso, naturalmente mi � bastato rinominare i firmware ;)}}
== FAQ ==
=== Come posso aggiungere un altro utente a Nagios? ===
Per aggiungere un nuovo utente è necessario effettuare due passi:


=====Old Style=====
1) creazione dell'account all'interno del file <code>/etc/nagios2/htpasswd.users</code>
''(by jockerfox)''
<pre>
# htpasswd /etc/nagios2/htpasswd.users nomeutente
</pre>


1) Dal sito Sourceforge.net
2) Inserire l'utente appena creato all'interno della configurazione di Nagios. Per fare questo bisogna modificare il file <code>/etc/nagios2/cgi.cfg</code> aggiungendo l'utente appena creato alle seguenti direttive (in base ai permessi che si vogliono dare al nuovo utente):
scaricate i seguenti pacchetti :
<pre>
 
authorized_for_system_information=nagiosadmin
http://ipw2200.sourceforge.net/#downloads il driver "ipw2200-1.0.4.tgz"
authorized_for_configuration_information=nagiosadmin
http://ipw2200.sourceforge.net/firmware.php il firmware "v1.0.4-current firmware"
authorized_for_system_commands=nagiosadmin
 
authorized_for_all_services=nagiosadmin
Con Synaptic scaricare i seguenti pacchetti:
authorized_for_all_hosts=nagiosadmin
:1: kernel-headers-2.6.8-2-686 (in automatico scaricher� anche kernel-headers-2.6.8-2 e kernel-kbuild-2.6-3)
#authorized_for_all_services=nagiosadmin,guest
:2: net-tools
#authorized_for_all_hosts=nagiosadmin,guest
 
authorized_for_all_service_commands=nagiosadmin
2) Fatto cio':
authorized_for_all_host_commands=nagiosadmin
:* scompattare "ipw2200-1.0.4.tgz" in una directory qualsiasi e da SU (#) fate un "make", poi "make install"
</pre>
:* scompattare in una diversa directory "v1.0.4-current firmware" e copiare tutto in /usr/lib/hotplug/firmware/
 
'''P.S.''': non occorre copiare i file tipo "LICENZE" e varie... che non servono a nulla.
 
3) aprite una Konsole e da SU scrivete "nano /etc/network/interfaces" e aggiungete prima di eth0:


Dopo le varie modifiche è necessario ricaricare la configurazione di nagios con un:
<pre>
<pre>
auto eth1
# /etc/init.d/nagios2 reload
iface eth1 inet dhcp
</pre>
</pre>


4) reboot ... e funziona !!
{{Autori
 
|Autore=[[Utente:MaXeR|MaXeR]]
{{Warningbox|Ricordate di mettere il router senza chiave WEP (o varie cifrature) per essere sicuri che tutto funzioni come da dovere... dopo di che' abilitate allora la Key WEP nel router (vedi sopra)}}
}}
 
====Guida veloce====
Una buona guida all'installazione a Debian Sarge � qui:
[http://fabrizio.ciacchi.it/guide.php?pagina=sarge Guida veloce]
 
 
----
----
 
Chiunque volesse contribuire a questa guida � benvenuto (soprattutto e a maggior ragione se ho detto cose '''poco esatte''').
 
----
 
Autore: [[Utente:Superflieriam|Superflieriam]]
 
Ampliamenti: [[Utente:Jokerfox|Jokerfox]], [[Utente:Ckale|Ckale]], [[Utente:Alex|Alex]]
 
[[Categoria:Laptop]]

Versione attuale delle 13:01, 19 giu 2016

Emblem-important.png Attenzione. Questa guida è obsoleta. Viene mantenuta sul Wiki solo per motivi di natura storica e didattica.


Introduzione

Nagios (Home Page) è uno strumento molto usato ed utilissimo per il monitoraggio di server e servizi. All'inizio, per molti utenti, è un po' complicato da configurare, ma dopo aver capito il funzionamento risulterà semplice, potente e versatile, attributi necessari per questo genere di strumenti.

Warning.png ATTENZIONE
Da Debian Lenny 5.0 in poi il pacchetto nagios2 non è più presente nei repository. Al suo posto è stato inserito il più aggiornato nagios3.

Per queste versioni si consiglia pertanto di far riferimento alla guida aggiornata. Nagios: monitoraggio infrastruttura IT


Installazione

La macchina su cui verrà installato Nagios è una Debian Etch. Installeremo la versione 2 di Nagios, con i relativi pacchetti per avere un maggior numero di plugin e immagini (vedremo dopo come usarle).

Per installare nagios è sufficiente un:

#  apt-get install nagios2 nagios2-common nagios-plugins nagios-images nagios-plugins-basic  nagios-plugins-standard 

Dopo aver scaricato (sono circa 3.5Mb) ed installato nagios provvediamo all'installazione di un web server (necessario per consultare la comoda web-interface); la mia scelta è ricaduta su apache2, anche perché il server in questione ospiterà applicazioni scritte in PHP. Procediamo ad installare apache2 con:

# apt-get install apache2 libapache2-mod-php5


Configurazione

Apache

Al momento dell'installazione viene creato in modo automatico il file /etc/apache2/conf.d/nagios2.conf (il file è, a tutti gli effetti, un link simbolico al file /etc/nagios2/apache2.conf) con il seguente contenuto:

# apache configuration for nagios 2.x
# note to users of nagios 1.x:
#	throughout this file are commented out sections which preserve
#	backwards compatibility with bookmarks/config for nagios 1.x.  simply
#	look for lines following "nagios 1.x:" comments.

ScriptAlias /cgi-bin/nagios2 /usr/lib/cgi-bin/nagios2
ScriptAlias /nagios2/cgi-bin /usr/lib/cgi-bin/nagios2
# nagios 1.x:
#ScriptAlias /cgi-bin/nagios /usr/lib/cgi-bin/nagios2
#ScriptAlias /nagios/cgi-bin /usr/lib/cgi-bin/nagios2

# Where the HTML pages live
Alias /nagios2 /usr/share/nagios2/htdocs
# nagios 1.x:
#Alias /nagios /usr/share/nagios2/htdocs

<DirectoryMatch (/usr/share/nagios2/htdocs|/usr/lib/cgi-bin/nagios2)>
	Options FollowSymLinks

	DirectoryIndex index.html

	AllowOverride AuthConfig
	Order Allow,Deny
	Allow From All

	AuthName "Nagios Access"
	AuthType Basic
	AuthUserFile /etc/nagios2/htpasswd.users
	# nagios 1.x:
	#AuthUserFile /etc/nagios/htpasswd.users
	require valid-user
</DirectoryMatch>

# Where the stylesheets (config files) reside
#Alias /nagios2/stylesheets /etc/nagios2/stylesheets
# nagios 1.x:
#Alias /nagios/stylesheets /etc/nagios2/stylesheets

# Enable this ScriptAlias if you want to enable the grouplist patch.
# See http://apan.sourceforge.net/download.html for more info
# It allows you to see a clickable list of all hostgroups in the
# left pane of the Nagios web interface
# XXX This is not tested for nagios 2.x use at your own peril
#ScriptAlias /nagios2/side.html /usr/lib/cgi-bin/nagios2/grouplist.cgi
# nagios 1.x:
#ScriptAlias /nagios/side.html /usr/lib/cgi-bin/nagios2/grouplist.cgi

Il file contiene una bozza di configurazione per nagios che permette di raggiungere il servizio digitando, semplicemente http://IP/nagios2/. Questo sistema a me, personalmente, non piace, in quanto nagios sarebbe accessibile da qualsiasi sito ospitato sulla macchina, semplicemente digitando http://www.sito.it/nagios2/, non molto sicuro e pulito.

Creeremo, quindi, un sottodominio dedicato a nagios, modificando il file nel seguente modo:


<VirtualHost *:80>
    ServerAdmin root@knio.it
#    DocumentRoot /var/www/nagios/
    ServerName nagios.knio.it

    ErrorLog /var/log/apache2/nagios.knio.it_error.log
    CustomLog /var/log/apache2/nagios.knio.it_access.log combined

     <Directory />
         AllowOverride All
         Options +Multiviews
         Options Indexes Includes FollowSymLinks MultiViews
         DirectoryIndex index index.html
     </Directory>

    ScriptAlias /cgi-bin/nagios2 /usr/lib/cgi-bin/nagios2
    ScriptAlias /nagios2/cgi-bin /usr/lib/cgi-bin/nagios2

    
    #Alias /nagios2/stylesheets /etc/nagios2/stylesheets
    Alias /nagios2 /usr/share/nagios2/htdocs
    # Enable this ScriptAlias if you want to enable the grouplist patch.
    # See http://apan.sourceforge.net/download.html for more info
    # It allows you to see a clickable list of all hostgroups in the
    # left pane of the Nagios web interface
    # XXX This is not tested for nagios 2.x use at your own peril
    #ScriptAlias /nagios2/side.html /usr/lib/cgi-bin/nagios2/grouplist.cgi
    <DirectoryMatch (/usr/share/nagios2/htdocs|/usr/lib/cgi-bin/nagios2)>
	Options FollowSymLinks
	DirectoryIndex index.html
	AllowOverride AuthConfig
	Order Allow,Deny
	Allow From All
	AuthName "Nagios Access"
	AuthType Basic
	AuthUserFile /etc/nagios2/htpasswd.users
	require valid-user
    </DirectoryMatch>
</VirtualHost>

Creiamo la Root Directory per questo sito con:

# mkdir  /var/www/nagios
# chown -R www-data:www-data /var/www/nagios/
# touch /var/www/nagios/index.html

la directory conterrà un file index.html vuoto, in questo file potremmo mettere o una pagina di benvenuto oppure un redirect alla directory contenente l'applicativo, a piacere.

Ora manca solo una cosa da fare: aggiungere l'utente per l'accesso a nagios (operazione obbligatoria, pena un errore di tipo 500 quando si tenta di accedere all'applicazione).

Per aggiungere l'utente usiamo il comando htpasswd:

# htpasswd  -c  /etc/nagios2/htpasswd.users nagiosadmin

alla richiesta di password, inseriamo una password a nostro piacimento.

Ora possiamo testare la configurazione, ma prima è necessario riavviare Apache per rendere effettive le modifiche che abbiamo effettuato:

# /etc/init.d/apache2 restart

Collegandosi alla pagina http://nagios.knio.it/nagios2/ ci verrà chiesto username/password per accedere a nagios, dopodiché ci verrà mostrata la schermata di default.

Nagios

Introduzione alla configurazione

La configurazione di nagios è situata, come da FHS in /etc/nagios2/. All'interno di questa directory sono presenti i seguenti file (e directory):

cgi.cfg
il file contiene la configurazione dell'interfaccia web di nagios (quindi i percorsi dove trovare i file di configurazione ed alcuni comportamenti base; la configurazione dei permessi degli utenti e perfino i suoni da riprodurre in caso di problemi)
commands.cfg
contiene la configurazione dei comandi eseguibili da nagios: check, notifiche ed altri
conf.d
una directory che ha lo scopo di raccogliere i file di configurazione di tutti i vari host monitorati da nagios
htpasswd.users
contiene (come abbiamo visto prima) le chiavi di accesso di tutti gli utenti che possono accedere all'interfaccia web di nagios (i permessi, per questi utenti, sono definiti in cgi.cfg)
nagios.cfg
contiene la configurazione vera e propria del demone di nagios, la configurazione di default è corretta nella maggior parte dei casi
resource.cfg
in questa guida non lo modificheremo
stylesheets
directory per inserire i fogli di stile personalizzati (in questa guida non li useremo)

Come gestire al meglio i file di configurazione

Anche se la struttura dei file di configurazione è semplice, ci vuole molto poco a renderla una vera e propria accozzaglia di file. Ci sono varie scuole di pensiero su come gestire i file.

La prima è quella di inserire, all'interno della directory conf.d/ un file per ogni host, raggruppando, poi, gli host tramite gli hostgroup. La tecnica è valida e funzionale, a meno che non ci si trovi a gestire un numero eccessivo di host.

La seconda tecnica, è quella di creare tante directory quanti sono i segmenti della rete, così da racchiudere i file di configurazione in directory meno popolate, così da rendere più facilmente individuabile un file.

Personalmente trovo più comodo gestire la prima, con la seguente convenzione:

  • ogni file ha la forma type-name.cfg dove type rappresenta la tipologia del file di configurazione (host per un server, switch per uno switch di rete, router per un router, e così via...) e dove name è il nome univoco associato alla macchina (e usato anche all'interno di Nagios).
  • i file contenenti i gruppi, le definizioni dei periodi e simili hanno una struttura type.cfg dove type può essere:
    • contacts: per le definizioni dei contatti
    • timeperiods: per le definizioni dei periodi
    • extinfo: per le definizioni delle informazioni aggiuntive
    • hostgroups: per la definizione dei gruppi di host
    • services: per la definizione dei gruppi di servizi

Un'accortezza da adottare, inoltre, quando si modifica un file di configurazione è quella di effettuare un check di correttezza tramite il comando:

# nagios -v /etc/nagios2/nagios.conf

In questo modo si eviteranno downtime e si sarà sicuri che nagios ripartirà senza problemi (almeno legati alla sintassi dei file di configurazione...).

Gli Host

Tramite gli host è possibile definire i PC, server, switch e tutte le altre apparecchiature presenti nella rete da monitorare. Saranno poi i servizi a determinare cosa monitorare effettivamente.

La definizione classica e minimale di un host è la seguente:

define host{
   use         generic-host
   host_name   serverino
   alias       Server di Produzione
   address     192.168.0.15
}

I parametri della definizione sono i seguenti:

use
permette di specificare un template da utilizzare all'interno del nostro host. L'utilizzo di un template permette di minimizzare i parametri necessari da passare ad un host. Il template che usiamo, per ora, è generic-host che è quello fornito di default in Debian. In seguito provvederemo a creare dei template che permetteranno uan suddivisione degli host in modo semplice ed immediato.
host_name
l'hostname dell'host. Deve essere univoco, in quanto viene utilizzato all'interno di Nagios come nome univoco di un host. è buona pratica utilizzare l'hostname della macchina, in quanto permetterà, in seguito, di identificarla più facilmente. In caso di switch od altri componenti conviene identificarli nel seguente modo: switch-dmz, firewall-dmz, etc.
alias
rappresenta il nome comune dell'host.
address
l'indirizzo IP dell'host. Deve essere inserito solo l'indirizzo Primario, e non una lista di indirizzi! Se si vogliono monitorare più indirizzi IP o più servizi legati a più indirizzi IP, sarà opportuno o definire un altro host (non molto corretto) oppure aggiungere servizi in cui viene indicato, come parametro, l'indirizzo IP secondario.

Oltre a quelli specificati è possibile aggiungere questi parametri (per quelli utilizzati nel template rimando al sottocapitolo dedicato):

parents <host_names>
permette di indicare, tramite un elenco di host separati da virgola, i "parenti" di quell'host (ad esempio switch, gateway, ecc). Utile per la rappresentazione grafica della struttura della rete
hostgroups <hostgroup_names>
permette di specificare i gruppi, sempre separati da virgola, a cui appartiene l'host.

Come convenzione per la creazione di un host creeremo un file col formato /etc/nagios2/conf.d/hosts/hostname.cfg dove hostname va sostituito con l'hostname dell'host definito.

I Servizi

I servizi vengono utilizzati per definire un controllo su un servizio presente su un determinato host. Possono essere associati ad un determinato host (utile per controlli specifici) oppure ad un hostgroup (utile per controlli generici o comunque monitoraggio di servizi standard).

Un servizio ha, normalmente, la seguente struttura:

define service{
   use                   generic-service
   host_name             localhost
   service_description   Disk Space
   check_command         check_all_disks!20%!10%
}

Dove vengono usati i seguenti parametri:

use <service-template>
indica il template da utilizzare. Il template contiene tutti i parametri necessari per la configurazione del servizio. In caso di necessità, comunque, è possibile sovrascrivere un parametro presente nel template semplicemente ridefinendolo all'interno del servizio.
host_name <hostname>
l'hostname specificato nella configurazione dell'host di cui si vuole monitorare il servizio
service_description <description>
la descrizione umana del servizio
check_command <command>
il comando da utilizzare per eseguire il controllo del servizio.

L'esempio sopra riportato associa il servizio ad un determinato host, ma è possibile associarlo ad un hostgroup, sostituendo la voce host_name con hostgroup_name.

Per i servizi verrà adottata la seguente convenzione:

  • se il servizio è dedicato ad un singolo host, viene inserito all'interno del file di configurazione dell'host
  • se il servizio è dedicato ad un hostgroup, invece, verrà inserito all'interno del file di definizione dell' hostgroup.

I Comandi

I comandi rappresentano i mattoni su cui costruire i check dei sistemi. Essi possono essere specifici (ad esempio il check di funzionamento di un server IMAP) o generici (come il test dell'apertura di una porta TCP).

I comandi base sono definiti in /etc/nagios2/commands.cfg, mentre quelli installati tramite i plugin (i pacchetti nagios-plugins*) sono contenuti in /etc/nagios-plugins/config/.

La sintassi per la definizione di un comando è la seguente:

define command{
   template      <templatename>
   name          <objectname>
   command_name  <commandname>
   command_line  <commandline>
}

Dove:

template <templatename>
permette di caricare un template (cioè un'altra definizione di comando da cui attingere i valori opzionali)
command_name <commandname>
il nome (univoco) del comando. Per convenzione, non potendo inserire spazi all'interno del nome, sostituiremo quest'ultimi con dei -.
command_line <commandline>
il percorso completo del comando (script o eseguibile) da lanciare, con gli eventuali parametri specificati.
Utilizzare quelli esistenti

Carpire il corretto utilizzo dei comandi può essere, a volte, un po' complesso. Per capire come utilizzare quelli definiti, possiamo adottare la seguente strategia:

  • identifichiamo il percorso completo del comando da eseguire. In questo esempio ci riferiremo ai comandi contenuti in /etc/nagios-plugins/config/http.cfg. Il path del comando che viene richiamato è /usr/lib/nagios/plugins/check_http.
  • visualizziamo l'output dell'help del comando:
# /usr/lib/nagios/plugins/check_http -h
check_http (nagios-plugins 1.4.5) 1.96
Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>
Copyright (c) 1999-2006 Nagios Plugin Development Team
        <nagiosplug-devel@lists.sourceforge.net>

This plugin tests the HTTP service on the specified host. It can test
normal (http) and secure (https) servers, follow redirects, search for
strings and regular expressions, check connection times, and report on
certificate expiration times.


Usage: check_http -H <vhost> | -I <IP-address> [-u <uri>] [-p <port>]
       [-w <warn time>] [-c <critical time>] [-t <timeout>] [-L]
       [-a auth] [-f <ok | warn | critical | follow>] [-e <expect>]
       [-s string] [-l] [-r <regex> | -R <case-insensitive regex>] [-P string]
       [-m <min_pg_size>:<max_pg_size>] [-4|-6] [-N] [-M <age>] [-A string] [-k string]
NOTE: One or both of -H and -I must be specified

Options:
 -h, --help
    Print detailed help screen
 -V, --version
    Print version information
 -H, --hostname=ADDRESS
    Host name argument for servers using host headers (virtual host)
    Append a port to include it in the header (eg: example.com:5000)
 -I, --IP-address=ADDRESS
    IP address or name (use numeric address if possible to bypass DNS lookup).
 -p, --port=INTEGER
 Port number (default: 80)
 -4, --use-ipv4
    Use IPv4 connection
 -6, --use-ipv6
    Use IPv6 connection
 -S, --ssl
   Connect via SSL
 -C, --certificate=INTEGER
   Minimum number of days a certificate has to be valid.
   (when this option is used the url is not checked.)

 -e, --expect=STRING
    String to expect in first (status) line of server response (default:
HTTP/1.
    If specified skips all other status line logic (ex: 3xx, 4xx, 5xx processing)
 -s, --string=STRING
    String to expect in the content
 -u, --url=PATH
    URL to GET or POST (default: /)
 URL to GET or POST (default: /)
,-P, --post=STRING    URL encoded http POST data
 -N, --no-body
    Don't wait for document body: stop reading after headers.
    (Note that this still does an HTTP GET or POST, not a HEAD.)
 -M, --max-age=SECONDS
    Warn if document is more than SECONDS old. the number can also be of
    the form "10m" for minutes, "10h" for hours, or "10d" for days.
 -T, --content-type=STRING
    specify Content-Type header media type when POSTing

 -l, --linespan
    Allow regex to span newlines (must precede -r or -R)
 -r, --regex, --ereg=STRING
    Search page for regex STRING
 -R, --eregi=STRING
    Search page for case-insensitive regex STRING
 --invert-regex
    Return CRITICAL if found, OK if not

 -a, --authorization=AUTH_PAIR
    Username:password on sites with basic authentication
 -A, --useragent=STRING
    String to be sent in http header as "User Agent"
 -k, --header=STRING
     Any other tags to be sent in http header. Use multiple times for additional headers
 -L, --link=URL
    Wrap output in HTML link (obsoleted by urlize)
 -f, --onredirect=<ok|warning|critical|follow>
    How to handle redirected pages
 -m, --pagesize=INTEGER<:INTEGER>
    Minimum page size required (bytes) : Maximum page size required (bytes)
 -w, --warning=DOUBLE
    Response time to result in warning status (seconds)
 -c, --critical=DOUBLE
    Response time to result in critical status (seconds)
 -t, --timeout=INTEGER
    Seconds before connection times out (default: 10)
 -v, --verbose
    Show details for command-line debugging (Nagios may truncate output)
Notes: This plugin will attempt to open an HTTP connection with the host.
 Successful connects return STATE_OK, refusals and timeouts return STATE_CRITICAL
 other errors return STATE_UNKNOWN.  Successful connects, but incorrect reponse
 messages from the host result in STATE_WARNING return values.  If you are
 checking a virtual server that uses 'host headers' you must supply the FQDN
 (fully qualified domain name) as the [host_name] argument.
 This plugin can also check whether an SSL enabled web server is able to
 serve content (optionally within a specified time) or whether the X509
 certificate is still valid for the specified number of days.
Examples: CHECK CONTENT: check_http -w 5 -c 10 --ssl www.verisign.com

 When the 'www.verisign.com' server returns its content within 5 seconds,
 a STATE_OK will be returned. When the server returns its content but exceeds
 the 5-second threshold, a STATE_WARNING will be returned. When an error occurs,
 a STATE_CRITICAL will be returned.

 CHECK CERTIFICATE: check_http www.verisign.com -C 14

 When the certificate of 'www.verisign.com' is valid for more than 14 days,
 a STATE_OK is returned. When the certificate is still valid, but for less than
 14 days, a STATE_WARNING is returned. A STATE_CRITICAL will be returned when
 the certificate is expired.


Send email to nagios-users@lists.sourceforge.net if you have questions
regarding use of this software. To submit patches or suggest improvements,
send email to nagiosplug-devel@lists.sourceforge.net
  • confrontiamo la definizione del comando con l'help appena ottenuto:
define command{
   command_name    check_http
   command_line    /usr/lib/nagios/plugins/check_http -H $HOSTADDRESS$ -I $HOSTADDRESS$
}

in questo caso, si occuperà di controllare che ci sia un webserver funzionante sulla porta 80 dell'host di cui stiamo eseguendo il check ($HOSTADDRESS$ e $HOSTADDRESS$ sono delle Macro. Per approfondimenti consultare il paragrafo Le Macro).

Un altro esempio potrebbe essere il comando check_disk, che ha la seguente definizione:

define command{
        command_name    check_disk
        command_line    /usr/lib/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -
p $ARG3$
}

In questo caso si tratta di un controllo locale (quindi viene effettuato sulla macchina su è installato Nagios), infatti non sono presenti le macro viste prima, ma al loro posto sono presenti $ARG1$ $ARG2$ e $ARG3$, che rappresentano i parametri passati, all'interno della configurazione dei servizi. In questo caso, la prima opzione (-w) imposta il livello di warning, la seconda (-c) imposta la soglia critica e il terzo (-p) indica la partizione su cui effettuare il controllo.

Quando andremo a richiamare il comando all'interno della definizione del servizio, lo faremo in questo modo:

define service{
        use                             generic-service
        host_name                       localhost
        service_description             Disk Space on /dev/hda1
        check_command                   check_all_disks!20%!10%!"/dev/hda1"
}

Com'è facilmente intuibile, il servizio controllerà la partizione /dev/hda1 ed andrà in stato di warning quando ci sarà meno del 20% di spazio disponibile, ed in stato di errore critico quando ce ne sarà meno del 10%.

I parametri sono separati da un ! e vanno indicati nell'ordine corretto ($ARG1$ indica il primo parametri, e così via...)!

Creare nuovi comandi

Per semplicità (e convenzione di questa guida) i comandi personalizzati verranno salvati in /etc/nagios2/conf.d/commands.cfg in modo da non modificare il file di configurazione di default di Nagios (cosa che tornerà utile in caso di aggiornamenti e/o migrazioni).

I Gruppi di Host (hostgroup)

Un hostgroup è semplicemente un sistema per raggruppare più host in base a delle caratteristiche comuni (che spaziano dall'appartenenza ad una stessa sottorete all'erogazione di uno stesso tipo di servizio, ...).

Una definizione standard di hostgroup è la seguente:

define hostgroup {
   hostgroup_name   http-servers
   alias            HTTP servers
   members          hostname1, hostname2
}

Con i seguenti parametri:

hostgroup_name <hostgroupname>
il nome (univoco e senza spazi) dell'hostgroup. Verrà utilizzato all'interno dei file di configurazione di nagios per fare riferimento a questo gruppo di host
alias <alias>
un nome comprensibile (una breve descrizione) del gruppo
members <hostname1, hostname2>
i membri (members) appartenenti al gruppo. members e hostgroups (visto in precedenza all'interno della sezione Gli Host hanno la stessa funzione, ma in più permettono di decidere come gestire l'assegnazione: tramite members viene inserita la lista degli host che fanno parte del gruppo, quindi l'associazione avviene all'interno del file che definisce l'hostgroup; tramite hostgroups l'associazione avviene all'interno del file di configurazione dell'host, in cui vengono indicati tutti i gruppi a cui appartiene. Personalmente ritengo più comodo il secondo metodo in quanto, in caso di rimozione di un host, col primo metodo bisognerebbe modificare tutti i file dei gruppi di cui l'host era membro, pena l'impossibilità di far ripartire nagios; inoltre, specificando tutti i gruppi a cui appartiene un host all'interno del proprio file di configurazione permette di avere sotto controllo l'appartenenza di uno specifico host ad un gruppo.

Per gli hostgroup si adotta la convenzione di inserirli nella directory /etc/nagios2/conf.d/hostgroups/, specificando per ogni gruppo un file con la sintassi hostgroupname.cfg. I servizi dedicati a quell'hostgroup andranno, a loro volta, inseriti nel file di configurazione del gruppo di host, così come si è fatto per i servizi di un singolo host.

I Gruppi di Servizi

I Contatti

I Timeperiod

Le notifiche

Notifiche via e-mail
Notifiche via SMS (vodafone)
Notifiche via SMS (gateway)

Varie

Nagios Checker

Nagios Checker (Home Page) è una comoda estensione per Firefox che permette di monitorare, direttamente dal browser, lo stato delle nostre macchine. In caso di problemi verrà mostrato un avviso (in rosso) e verrà riprodotto un suono di allarme. Tramite l'estensione sarà possibile, inoltre, accedere direttamente alla pagina dell'host (o del servizio) che danno problemi per approfondire. Un must!

FAQ

Come posso aggiungere un altro utente a Nagios?

Per aggiungere un nuovo utente è necessario effettuare due passi:

1) creazione dell'account all'interno del file /etc/nagios2/htpasswd.users

# htpasswd /etc/nagios2/htpasswd.users nomeutente

2) Inserire l'utente appena creato all'interno della configurazione di Nagios. Per fare questo bisogna modificare il file /etc/nagios2/cgi.cfg aggiungendo l'utente appena creato alle seguenti direttive (in base ai permessi che si vogliono dare al nuovo utente):

authorized_for_system_information=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
#authorized_for_all_services=nagiosadmin,guest
#authorized_for_all_hosts=nagiosadmin,guest
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin

Dopo le varie modifiche è necessario ricaricare la configurazione di nagios con un:

# /etc/init.d/nagios2 reload




Guida scritta da: MaXeR Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized