Voici le quatrième article consacré au serveur de supervision Icinga. Dans notre précédent article, nous avons installé l’agent Icinga sur un serveur dédié et nous avons connecté cette machine à notre serveur de supervision. Pour l’instant, nous ne disposons que des deux tests de base ping
et ssh
pour cette machine. Nous allons donc étoffer un peu ces tests pour en savoir un peu plus sur l’état de santé de notre machine.
Surveiller la charge du système
Je crée un fichier service-load.conf
dans le répertoire /etc/icinga2/zones.d/master
et je l’édite comme ceci :
// /etc/icinga2/zones.d/master/service-load.conf
//
// System load check executed on client node
apply Service "System load" {
import "generic-service"
check_command = "load"
command_endpoint = host.vars.client_endpoint
assign where host.vars.client_endpoint
}
Je prends en charge la nouvelle configuration après avoir vérifié la syntaxe de mon fichier :
# icinga2 daemon -C # systemctl reload icinga2
J’attends un peu, et je vois apparaître ce test de charge en état d’attente. Au bout de trente secondes, il va apparaître dans la colonne de droite avec les autres tests :
Partant de là, je vais ajouter quelques vérifications de base en suivant la même logique.
Surveiller le disque dur
J’ajoute la supervision de l’état du disque dur du serveur :
// /etc/icinga2/zones.d/master/service-disk.conf
//
// System disk usage check executed on client node
apply Service "Hard disk" {
import "generic-service"
check_command = "disk"
command_endpoint = host.vars.client_endpoint
assign where host.vars.client_endpoint
}
Surveiller la partition d’échange
Je souhaite en savoir un peu plus sur l’utilisation de la partition d’échange de la machine :
// /etc/icinga2/zones.d/master/service-swap.conf
//
// Swap memory usage check executed on client node
apply Service "Swap usage" {
import "generic-service"
check_command = "swap"
command_endpoint = host.vars.client_endpoint
assign where host.vars.client_endpoint
}
Surveiller les processus
Voici une vue d’ensemble sur le nombre et l’état des processus du serveur :
// /etc/icinga2/zones.d/master/service-procs.conf
//
// Running system processes check executed on client node
apply Service "Running processes" {
import "generic-service"
check_command = "procs"
command_endpoint = host.vars.client_endpoint
assign where host.vars.client_endpoint
}
Surveiller les utilisateurs connectés
Je peux également être renseigné sur les utilisateurs actuellement connectés au système :
// /etc/icinga2/zones.d/master/service-users.conf
//
// Logged users check executed on client node
apply Service "Logged users" {
import "generic-service"
check_command = "users"
command_endpoint = host.vars.client_endpoint
assign where host.vars.client_endpoint
}
J’aurais pu très bien écrire toutes ces stances dans un seul gros fichier services.conf
. Plutôt que de faire cela, j’aime bien répartir ma configuration dans des petits bouts de fichier individuels. Différents chemins mènent à Saint-Bauzille-de-Putois.
À chaque fois que je définis un ou plusieurs nouveaux tests, l’interface d’Icinga met un certain temps – entre 30 secondes et une minute – à les prendre en compte :
Surveiller l’agent Icinga
Tant qu’à faire, ce n’est peut-être pas une mauvaise idée de surveiller le bon fonctionnement de l’agent Icinga lui-même :
// /etc/icinga2/zones.d/master/service-icinga.conf
//
// Icinga Agent check executed on client node
apply Service "Icinga Agent" {
import "generic-service"
check_command = "icinga"
command_endpoint = host.vars.client_endpoint
assign where host.vars.client_endpoint
}
Surveiller la synchronisation NTP
Pour compléter notre panoplie de tests de base, nous allons vérifier si la machine est à l’heure. Cette fonctionnalité est fournie par le paquet nagios-plugins-ntp
, qu’il faudra installer sur la machine à superviser :
# dnf install -y nagios-plugins-ntp
Sur le serveur Icinga, la configuration ressemblera à ceci :
// /etc/icinga2/zones.d/master/service-ntp.conf
//
// NTP sync check executed on client node
apply Service "NTP sync" {
import "generic-service"
check_command = "ntp_time"
vars.ntp_address="pool.ntp.org"
vars.ntp_ipv4 = true
vars.ntp_ipv6 = false
command_endpoint = host.vars.client_endpoint
assign where host.vars.client_endpoint
}
Vous aurez remarqué que ce test fondamental est effectué sur la machine distante, mais pas sur notre serveur de supervision lui-même. Pour remédier à cela, nous pouvons éditer le fichier /etc/icinga2/conf.d/services.conf
et ajouter la stance correspondante à la fin :
apply Service "NTP sync" { import "generic-service" check_command = "ntp_time" vars.ntp_address="pool.ntp.org" assign where host.name == NodeName }
Là aussi, il faudra installer le plugin Nagios correspondant :
# dnf install -y nagios-plugins-ntp
Relancez Icinga sur le serveur, et le tour est joué :
La suite au prochain numéro, où nous allons voir en détail la mise en place des notifications par e-mail en cas d’alerte.
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.
0 commentaire