Icinga LogoVoici 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 :

Icinga test

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
}

AstuceJ’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 :

Icinga tests

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é :

Icinga NTP

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

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *