Monitoraggio Server · 11 min read · Oct 18, 2025

Monitoraggio del Server Con Icinga Su Debian Squeeze - Pagina 2

3 Configurare Icinga

server1.example.com:

Il file di configurazione principale di Icinga è /etc/icinga/icinga.cfg, le configurazioni aggiuntive sono memorizzate in /etc/icinga/commands.cfg e /etc/icinga/resource.cfg. Di solito la configurazione predefinita va bene, quindi non è necessario modificare questi file.

La prima cosa che dovresti cambiare sono i dettagli di contatto in /etc/icinga/objects/contacts_icinga.cfg in modo che le notifiche vengano inviate all’indirizzo email corretto:

vi /etc/icinga/objects/contacts_icinga.cfg

| [...] define contact{ contact_name root alias Falko Timme service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,r service_notification_commands notify-service-by-email host_notification_commands notify-host-by-email email [email protected] } [...] |

I controlli del servizio per localhost (= server1.example.com) sono definiti in /etc/icinga/objects/localhost_icinga.cfg - dai un’occhiata a quel file:

cat /etc/icinga/objects/localhost_icinga.cfg

| # Un semplice file di configurazione per monitorare l'host locale # Questo può servire come esempio per configurare altri server; # I servizi personalizzati specifici per questo host sono aggiunti qui, ma i servizi definiti in icinga-common_services.cfg possono anche applicarsi. # define host{ use generic-host ; Nome del template host da utilizzare host_name localhost alias localhost address 127.0.0.1 } # Definisci un servizio per controllare lo spazio su disco della partizione root # sulla macchina locale. Avviso se < 20% libero, critico se # < 10% di spazio libero sulla partizione. define service{ use generic-service ; Nome del template servizio da utilizzare host_name localhost service_description Spazio Disco check_command check_all_disks!20%!10% } # Definisci un servizio per controllare il numero di utenti attualmente connessi # sulla macchina locale. Avviso se > 20 utenti, critico # se > 50 utenti. define service{ use generic-service ; Nome del template servizio da utilizzare host_name localhost service_description Utenti Correnti check_command check_users!20!50 } # Definisci un servizio per controllare il numero di processi attualmente in esecuzione # sulla macchina locale. Avviso se > 250 processi, critico se # > 400 processi. define service{ use generic-service ; Nome del template servizio da utilizzare host_name localhost service_description Processi Totali check_command check_procs!250!400 } # Definisci un servizio per controllare il carico sulla macchina locale. define service{ use generic-service ; Nome del template servizio da utilizzare host_name localhost service_description Carico Corrente check_command check_load!5.0!4.0!3.0!10.0!6.0!4.0 } |

I comandi check_command (come check_all_disks) sono definiti nei file di configurazione dei plugin di Nagios nella directory /etc/nagios-plugins/config:

ls -l /etc/nagios-plugins/config
root@server1:~# ls -l /etc/nagios-plugins/config  
total 144  
-rw-r--r-- 1 root root  277 Mag 23 04:55 apt.cfg  
-rw-r--r-- 1 root root  182 Mag 23 04:55 breeze.cfg  
-rw-r--r-- 1 root root  458 Mag 23 04:55 dhcp.cfg  
-rw-r--r-- 1 root root  909 Mag 23 04:55 disk.cfg  
-rw-r--r-- 1 root root 1722 Mag 23 04:55 disk-smb.cfg  
-rw-r--r-- 1 root root  321 Mag 23 04:55 dns.cfg  
-rw-r--r-- 1 root root  673 Mag 23 04:55 dummy.cfg  
-rw-r--r-- 1 root root  146 Mag 23 04:55 flexlm.cfg  
-rw-r--r-- 1 root root  159 Mag 23 04:55 fping.cfg  
-rw-r--r-- 1 root root  414 Mag 23 04:55 ftp.cfg  
-rw-r--r-- 1 root root  320 Mag 23 04:55 games.cfg  
-rw-r--r-- 1 root root  157 Mag 23 04:55 hppjd.cfg  
-rw-r--r-- 1 root root 3579 Mag 23 04:55 http.cfg  
-rw-r--r-- 1 root root  818 Mag 23 04:55 ifstatus.cfg  
-rw-r--r-- 1 root root  748 Mag 23 04:55 ldap.cfg  
-rw-r--r-- 1 root root  195 Mag 23 04:55 load.cfg  
-rw-r--r-- 1 root root 2062 Mag 23 04:55 mail.cfg  
-rw-r--r-- 1 root root  708 Mag 23 04:55 mailq.cfg  
-rw-r--r-- 1 root root  385 Mag 23 04:55 mrtg.cfg  
-rw-r--r-- 1 root root  567 Mag 23 04:55 mysql.cfg  
-rw-r--r-- 1 root root 2355 Mag 23 04:55 netware.cfg  
-rw-r--r-- 1 root root  420 Mag 23 04:55 news.cfg  
-rw-r--r-- 1 root root  491 Mag 23 04:55 nt.cfg  
-rw-r--r-- 1 root root  466 Mag 23 04:55 ntp.cfg  
-rw-r--r-- 1 root root  426 Mag 23 04:55 pgsql.cfg  
-rw-r--r-- 1 root root 2026 Mag 23 04:55 ping.cfg  
-rw-r--r-- 1 root root  511 Mag 23 04:55 procs.cfg  
-rw-r--r-- 1 root root  240 Mag 23 04:55 radius.cfg  
-rw-r--r-- 1 root root  397 Mag 23 04:55 real.cfg  
-rw-r--r-- 1 root root  315 Mag 23 04:55 rpc-nfs.cfg  
-rw-r--r-- 1 root root 5550 Mag 23 04:55 snmp.cfg  
-rw-r--r-- 1 root root  753 Mag 23 04:55 ssh.cfg  
-rw-r--r-- 1 root root  784 Mag 23 04:55 tcp_udp.cfg  
-rw-r--r-- 1 root root  438 Mag 23 04:55 telnet.cfg  
-rw-r--r-- 1 root root  155 Mag 23 04:55 users.cfg  
root@server1:~#

Diamo un’occhiata al file /etc/nagios-plugins/config/disk.cfg:

cat /etc/nagios-plugins/config/disk.cfg

| # definizione del comando 'check_disk' define command{ command_name check_disk command_line /usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e -p '$ARG3$' } # definizione del comando 'check_all_disks' define command{ command_name check_all_disks command_line /usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e } # definizione del comando 'ssh_disk' define command{ command_name ssh_disk command_line /usr/lib/nagios/plugins/check_by_ssh -H '$HOSTADDRESS$' -C "/usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e -p '$ARG3$'" } #### # usa questi controlli, se vuoi testare la connettività IPv4 su sistemi abilitati IPv6 #### # definizione del comando 'ssh_disk_4' define command{ command_name ssh_disk_4 command_line /usr/lib/nagios/plugins/check_by_ssh -H '$HOSTADDRESS$' -C "/usr/lib/nagios/plugins/check_disk -w '$ARG1$' -c '$ARG2$' -e -p '$ARG3$'" -4 } |

Come vedi, il comando check_all_disks è definito come /usr/lib/nagios/plugins/check_disk -w ‘$ARG1$’ -c ‘$ARG2$’ -e. Se dai un’occhiata di nuovo al file /etc/icinga/objects/localhost_icinga.cfg, vedrai che abbiamo la riga check_command check_all_disks!20%!10% in esso. Icinga ci consente di passare argomenti della riga di comando ai controlli del servizio separandoli con un punto esclamativo (!), quindi check_command check_all_disks!20%!10% significa che passiamo 20% come primo argomento della riga di comando e 10% come secondo argomento al comando /usr/lib/nagios/plugins/check_disk -w ‘$ARG1$’ -c ‘$ARG2$’ -e in modo che si traduca infine in /usr/lib/nagios/plugins/check_disk -w ‘20%’ -c ‘10%’ -e.

Se desideri passare un argomento della riga di comando che contiene un punto esclamativo, devi eseguire l’escape del punto esclamativo con una barra rovesciata: !

I plugin di Nagios (cioè, gli strumenti che Icinga utilizza per eseguire controlli) si trovano nella directory /usr/lib/nagios/plugins:

ls -l /usr/lib/nagios/plugins
root@server1:~# ls -l /usr/lib/nagios/plugins  
total 2476  
-rwxr-xr-x 1 root root 106120 Mag 23 04:55 check_apt  
-rwxr-xr-x 1 root root   5369 Mag 23 04:55 check_bgpstate  
-rwxr-xr-x 1 root root   2242 Mag 23 04:55 check_breeze  
-rwxr-xr-x 1 root root  46192 Mag 23 04:55 check_by_ssh  
lrwxrwxrwx 1 root root      9 Ago 23 12:14 check_clamd -> check_tcp  
-rwxr-xr-x 1 root root  32072 Mag 23 04:55 check_cluster  
-rwxr-xr-x 1 root root  44816 Mag 23 04:55 check_dhcp  
-rwxr-xr-x 1 root root  41392 Mag 23 04:55 check_dig  
-rwxr-xr-x 1 root root 119216 Mag 23 04:55 check_disk  
-rwxr-xr-x 1 root root   8726 Mag 23 04:55 check_disk_smb  
-rwxr-xr-x 1 root root  45488 Mag 23 04:55 check_dns  
-rwxr-xr-x 1 root root  28968 Mag 23 04:55 check_dummy  
-rwxr-xr-x 1 root root   3053 Mag 23 04:55 check_file_age  
-rwxr-xr-x 1 root root   6315 Mag 23 04:55 check_flexlm  
-rwxr-xr-x 1 root root  44656 Mag 23 04:55 check_fping  
lrwxrwxrwx 1 root root      9 Ago 23 12:14 check_ftp -> check_tcp  
-rwxr-xr-x 1 root root  36584 Mag 23 04:55 check_game  
lrwxrwxrwx 1 root root     10 Ago 23 12:14 check_host -> check_icmp  
-rwxr-xr-x 1 root root  41136 Mag 23 04:55 check_hpjd  
-rwxr-xr-x 1 root root 164624 Mag 23 04:55 check_http  
-rwxr-xr-x 1 root root  49264 Mag 23 04:55 check_icmp  
-rwxr-xr-x 1 root root  34536 Mag 23 04:55 check_ide_smart  
-rwxr-xr-x 1 root root  15134 Mag 23 04:55 check_ifoperstatus  
-rwxr-xr-x 1 root root  12598 Mag 23 04:55 check_ifstatus  
lrwxrwxrwx 1 root root      9 Ago 23 12:14 check_imap -> check_tcp  
-rwxr-xr-x 1 root root   6887 Mag 23 04:55 check_ircd  
lrwxrwxrwx 1 root root      9 Ago 23 12:14 check_jabber -> check_tcp  
-rwxr-xr-x 1 root root  40816 Mag 23 04:55 check_ldap  
lrwxrwxrwx 1 root root     10 Ago 23 12:14 check_ldaps -> check_ldap  
-rwxr-xr-x 1 root root   3407 Mag 23 04:55 check_linux_raid  
-rwxr-xr-x 1 root root  36168 Mag 23 04:55 check_load  
-rwxr-xr-x 1 root root   6026 Mag 23 04:55 check_log  
-rwxr-xr-x 1 root root  20284 Mag 23 04:55 check_mailq  
-rwxr-xr-x 1 root root  36264 Mag 23 04:55 check_mrtg  
-rwxr-xr-x 1 root root  34440 Mag 23 04:55 check_mrtgtraf  
-rwxr-xr-x 1 root root  45936 Mag 23 04:55 check_mysql  
-rwxr-xr-x 1 root root  44688 Mag 23 04:55 check_mysql_query  
-rwxr-xr-x 1 root root  36616 Mag 23 04:55 check_nagios  
lrwxrwxrwx 1 root root      9 Ago 23 12:14 check_nntp -> check_tcp  
lrwxrwxrwx 1 root root      9 Ago 23 12:14 check_nntps -> check_tcp  
-rwxr-xr-x 1 root root  48720 Mag 23 04:55 check_nt  
-rwxr-xr-x 1 root root  46288 Mag 23 04:55 check_ntp  
-rwxr-xr-x 1 root root  44880 Mag 23 04:55 check_ntp_peer  
-rwxr-xr-x 1 root root  42224 Mag 23 04:55 check_ntp_time  
-rwxr-xr-x 1 root root  60912 Mag 23 04:55 check_nwstat  
-rwxr-xr-x 1 root root   8326 Mag 23 04:55 check_oracle  
-rwxr-xr-x 1 root root  40400 Mag 23 04:55 check_overcr  
-rwxr-xr-x 1 root root  40656 Mag 23 04:55 check_pgsql  
-rwxr-xr-x 1 root root  48848 Mag 23 04:55 check_ping  
lrwxrwxrwx 1 root root      9 Ago 23 12:14 check_pop -> check_tcp  
-rwxr-xr-x 1 root root 114640 Mag 23 04:55 check_procs  
-rwxr-xr-x 1 root root  40624 Mag 23 04:55 check_radius  
-rwxr-xr-x 1 root root  40464 Mag 23 04:55 check_real  
-rwxr-xr-x 1 root root   9581 Mag 23 04:55 check_rpc  
lrwxrwxrwx 1 root root     10 Ago 23 12:14 check_rta_multi -> check_icmp  
-rwxr-xr-x 1 root root   1137 Mag 23 04:55 check_sensors  
lrwxrwxrwx 1 root root      9 Ago 23 12:14 check_simap -> check_tcp  
-rwxr-xr-x 1 root root 127216 Mag 23 04:55 check_smtp  
-rwxr-xr-x 1 root root 152008 Mag 23 04:55 check_snmp  
lrwxrwxrwx 1 root root      9 Ago 23 12:14 check_spop -> check_tcp  
-rwxr-xr-x 1 root root  36688 Mag 23 04:55 check_ssh  
-lrwxrwxrwx 1 root root      9 Ago 23 12:14 check_ssmtp -> check_tcp  
-rwxr-xr-x 1 root root  37832 Mag 23 04:55 check_swap  
-rwxr-xr-x 1 root root  49328 Mag 23 04:55 check_tcp  
-rwxr-xr-x 1 root root  38128 Mag 23 04:55 check_time  
lrwxrwxrwx 1 root root      9 Ago 23 12:14 check_udp -> check_tcp  
-rwxr-xr-x 1 root root  44560 Mag 23 04:55 check_ups  
-rwxr-xr-x 1 root root  36168 Mag 23 04:55 check_users  
-rwxr-xr-x 1 root root   2936 Mag 23 04:55 check_wave  
-rwxr-xr-x 1 root root  38152 Mag 23 04:55 negate  
-rwxr-xr-x 1 root root  36104 Mag 23 04:55 urlize  
-rw-r--r-- 1 root root   1938 Mag 23 04:55 utils.pm  
-rwxr-xr-x 1 root root    862 Mag 23 04:55 utils.sh  
root@server1:~#

Per scoprire quali argomenti della riga di comando un plugin può accettare, chiama quel plugin con l’opzione –help. Ad esempio, per scoprire come può essere utilizzato il plugin check_disk, esegui

/usr/lib/nagios/plugins/check_disk --help

Con questa conoscenza puoi modificare i controlli del servizio in /etc/icinga/objects/localhost_icinga.cfg a tuo piacimento, e puoi aggiungere/modificare le configurazioni dei plugin nella directory /etc/nagios-plugins/config.

Ora supponiamo di voler aggiungere un controllo del servizio per MySQL, prima diamo un’occhiata alla configurazione del plugin appropriato:

cat /etc/nagios-plugins/config/mysql.cfg

| # definizione del comando 'check_mysql' define command{ command_name check_mysql command_line /usr/lib/nagios/plugins/check_mysql -H '$HOSTADDRESS$' } # definizione del comando 'check_mysql_cmdlinecred' define command{ command_name check_mysql_cmdlinecred command_line /usr/lib/nagios/plugins/check_mysql -H '$HOSTADDRESS$' -u '$ARG1$' -p '$ARG2$' } # definizione del comando 'check_mysql_database' define command{ command_name check_mysql_database command_line /usr/lib/nagios/plugins/check_mysql -d '$ARG3$' -H '$HOSTADDRESS$' -u '$ARG1$' -p '$ARG2$' } |

Il comando che voglio usare è check_mysql_cmdlinecred - questo prende un nome utente MySQL e una password come argomenti (oltre all’indirizzo host che viene preso dal parametro host_name della definizione del controllo del servizio. Voglio usare l’utente MySQL nagios con la password howtoforge qui, quindi aggiungo la seguente sezione a /etc/icinga/objects/localhost_icinga.cfg:

vi /etc/icinga/objects/localhost_icinga.cfg

| [...] define service{ use generic-service host_name localhost service_description MySQL check_command check_mysql_cmdlinecred!nagios!howtoforge } |

Prima di riavviare Icinga, dobbiamo creare l’utente MySQL nagios con la password howtoforge:

mysql -u root -p
GRANT USAGE ON *.* TO nagios@localhost IDENTIFIED BY 'howtoforge';  
GRANT USAGE ON *.* TO [email protected] IDENTIFIED BY 'howtoforge';  
FLUSH PRIVILEGES;
quit;

(Il privilegio USAGE è un sinonimo per ‘nessun privilegio’, cioè, l’utente nagios può connettersi a MySQL, ma non può alterare o leggere alcun dato.)

Ora riavviamo Icinga affinché le nostre modifiche abbiano effetto:

/etc/init.d/icinga restart

Se controlli i servizi di localhost nell’interfaccia web di Icinga ora, dovresti vedere che è stato aggiunto un controllo per MySQL:

Allo stesso modo, possiamo aggiungere controlli per SMTP, POP3 e IMAP - questi sono solo controlli di connessione, quindi non abbiamo bisogno di argomenti:

vi /etc/icinga/objects/localhost_icinga.cfg

| [...] define service{ use generic-service host_name localhost service_description SMTP check_command check_smtp } define service{ use generic-service host_name localhost service_description POP3 check_command check_pop } define service{ use generic-service host_name localhost service_description IMAP check_command check_imap } |

Riavvia Icinga…

/etc/init.d/icinga restart

… e pochi momenti dopo dovresti vedere i nuovi controlli nell’interfaccia web di Icinga:

Potresti aver notato i controlli SSH e HTTP per localhost che non sono definiti in /etc/icinga/objects/localhost_icinga.cfg. Questi sono definiti nei gruppi di host nel file /etc/icinga/objects/hostgroups_icinga.cfg. Un gruppo di host ci consente di eseguire un controllo del servizio per più server e definirlo solo una volta. Dai un’occhiata a quel file:

cat /etc/icinga/objects/hostgroups_icinga.cfg

| # Alcune definizioni generiche di gruppi di host # Un semplice gruppo di host con caratteri jolly define hostgroup { hostgroup_name all alias Tutti i Server members * } # Un elenco dei tuoi server Debian GNU/Linux define hostgroup { hostgroup_name debian-servers alias Server Debian GNU/Linux members localhost } # Un elenco dei tuoi server web define hostgroup { hostgroup_name http-servers alias Server HTTP members localhost } # Un elenco dei tuoi server accessibili via ssh define hostgroup { hostgroup_name ssh-servers alias Server SSH members localhost } |

Come vedi, abbiamo un gruppo di host chiamato http-servers e un gruppo di host chiamato ssh-servers, e localhost è un membro di ciascuno di questi gruppi. I controlli del servizio per i gruppi di host sono definiti in /etc/icinga/objects/services_icinga.cfg. Questo file contiene controlli del servizio e si riferisce ai gruppi di host a cui questi controlli dovrebbero essere applicati utilizzando il parametro hostgroup_name:

cat /etc/icinga/objects/services_icinga.cfg

| # controlla che i servizi web siano in esecuzione define service { hostgroup_name http-servers service_description HTTP check_command check_http use generic-service notification_interval 0 ; imposta > 0 se vuoi essere ri-notificato } # controlla che i servizi ssh siano in esecuzione define service { hostgroup_name ssh-servers service_description SSH check_command check_ssh use generic-service notification_interval 0 ; imposta > 0 se vuoi essere ri-notificato } |

Come vedi, i controlli del servizio SSH e HTTP sono definiti qui.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.