Icinga LogoVoici le troisième article consacré au serveur de supervision Icinga. Dans nos deux précédents articles, nous avons installé Icinga sur un serveur dédié, et nous avons pris soin de peaufiner la configuration initiale. Le moment est venu de passer aux choses sérieuses en utilisant notre installation flambant neuve pour surveiller l’état des hôtes et des services de notre réseau.

La supervision des machines distantes peut s’effectuer grosso modo de deux manières :

  • à distance et sans rien installer sur la machine à distance, ce qui n’offre que des possibilités de contrôle très limitées (ping, ssh, http).
  • en installant un agent Icinga sur les serveurs, ce qui permet beaucoup plus de flexibilité dans la supervision.

AstuceMême si Icinga est fait pour tourner exclusivement sur les plateformes Linux et Unix, sachez que l’agent Icinga est compatible avec les différentes versions de Windows Server. Vous pouvez donc utiliser Icinga pour surveiller votre parc de serveurs Microsoft.

Configurer le pare-feu

L’agent Icinga communique avec le serveur de supervision via le port 5665. Avant toute chose, je vais donc songer à ouvrir ce port sur le serveur :

# firewall-cmd --permanent --add-port=5665/tcp
# firewall-cmd --reload

Préparer le serveur pour les clients

La prochaine étape consiste à préparer le serveur pour les clients. Icinga fournit un assistant de configuration en ligne de commande pour cette tâche, qui peut être invoqué par la commande node wizard.

# icinga2 node wizard
Welcome to the Icinga 2 Setup Wizard!
We will guide you through all required configuration details.
Please specify if this is an agent/satellite setup 
('n' installs a master setup) [Y/n]: n
Starting the Master setup routine...
Please specify the common name (CN) [sd-155842.dedibox.fr]: [Entrée]
Reconfiguring Icinga...
Checking for existing certificates for common name 'sd-155842.dedibox.fr'...
...
Generating master configuration for Icinga 2.
'api' feature already enabled.
Master zone name [master]: [Entrée]
Default global zones: global-templates director-global
Do you want to specify additional global zones? [y/N]: [Entrée]
Please specify the API bind host/port (optional):
Bind Host []: [Entrée]
Bind Port []: [Entrée]
Do you want to disable the inclusion of the conf.d directory [Y/n]: n
Done.
Now restart your Icinga 2 daemon to finish the installation!
# systemctl restart icinga2

Quelques remarques sur les différentes options utilisées :

  • Icinga permet la supervision distribuée dans des configurations relativement complexes et distingue entre master, satellite et agent. Dans l’exemple présenté ici, je me servirai uniquement des rôles master et agent. En répondant n (no) à la première question, je définis mon installation comme serveur de supervision « maitre ».
  • Pour la suite et jusqu’à l’avant-dernière question incluse, je confirme les paramètres proposés par défaut, comme le CN (sd-155842.dedibox.fr), le nom de la zone (master), etc.
  • La dernière question concerne l’exclusion du répertoire de configuration /etc/icinga2/conf.d. Ce répertoire contient déjà une configuration par défaut, que nous avons d’ailleurs vue à l’œuvre lors de la première connexion au tableau de bord. Si nous répondons par l’affirmative à cette question, toute cette configuration initiale est rejetée, ce qui nous oblige à repartir de zéro. J’ai expérimenté avec les deux approches, et pour ma part, j’ai trouvé qu’il était plus simple de partir de la configuration existante en l’adaptant à mes besoins. Quoi qu’il en soit, répondez par n (no) pour ne pas exclure le contenu de conf.d.

Connecter un serveur public

Je choisis une première machine publique que je souhaite surveiller. Je commence par générer un ticket pour cette machine sur le serveur Icinga :

# icinga2 pki ticket --cn sd-151768.dedibox.fr
e6f6588d4a8f1e3ccd86822294d4cd5b2fb62cfb

Je garde cet affichage, j’ouvre un deuxième terminal et je me connecte à la machine sd-151768.dedibox.fr, qui tourne également sous Rocky Linux 8. Pour installer l’agent Icinga – identique au moteur de l’application qui tourne sur notre serveur de supervision – je dois passer par les mêmes étapes que sur le serveur Icinga :

  • Configurer le dépôt du projet Icinga.
  • Installer les paquets de base Icinga.
  • Installer une panoplie de plugins Nagios.
  • Activer et lancer le démon correspondant.
  • Ouvrir le port 5665 puisque l’agent et le serveur maître doivent pouvoir communiquer dans les deux sens.
# dnf repolist | grep icinga
icinga                           Icinga
# dnf install -y icinga2 icinga2-selinux
# dnf install -y nagios-plugins-{ping,ssh,http,disk,load,procs,swap,users}
# systemctl enable icinga2 --now
# firewall-cmd --permanent --add-port=5665/tcp
# firewall-cmd --reload

Sur la machine client, j’utilise également la commande node wizard pour connecter l’agent au serveur de supervision :

# icinga2 node wizard
Welcome to the Icinga 2 Setup Wizard!
We will guide you through all required configuration details.
Please specify if this is an agent/satellite setup 
('n' installs a master setup) [Y/n]: [Entrée]
Starting the Agent/Satellite setup routine...
Please specify the common name (CN) [sd-151768.dedibox.fr]: [Entrée]
Please specify the parent endpoint(s) (master or satellite) where this node should connect to:
Master/Satellite Common Name (CN from your master/satellite node): sd-155842.dedibox.fr
Do you want to establish a connection to the parent node from this node? [Y/n]: [Entrée]
Please specify the master/satellite connection information:
Master/Satellite endpoint host (IP address or FQDN): sd-155842.dedibox.fr
Master/Satellite endpoint port [5665]: [Entrée]
Add more master/satellite endpoints? [y/N]: [Entrée]
Parent certificate information:
 Version:             3
 Subject:             CN = sd-155842.dedibox.fr
 Issuer:              CN = Icinga CA
 Valid From:          Jan 29 10:14:00 2024 GMT
 Valid Until:         Jan 25 10:14:00 2039 GMT
 Serial:              90:61:35:80:8e:c4:d8:94:e0:51:f5:df:d2:bc:66:90:71:c3:d5:b7
 Signature Algorithm: sha256WithRSAEncryption
 Subject Alt Names:   sd-155842.dedibox.fr
 Fingerprint:         9A E3 C2 F1 9F 56 FE 17 21 8A DD 18 25 E5 56 12
                      05 72 23 45 86 51 17 A9 39 DB E8 0C DA 6F 6C B6 
Is this information correct? [y/N]: y
Please specify the request ticket generated on your Icinga 2 master (optional).
 (Hint: # icinga2 pki ticket --cn 'sd-151768.dedibox.fr'): e6f6588d4a8f1e3ccd86822294d4cd5b2fb62cfb
Please specify the API bind host/port (optional):
Bind Host []: [Entrée]
Bind Port []: [Entrée]
Accept config from parent node? [y/N]: y
Accept commands from parent node? [y/N]: y
Reconfiguring Icinga...
Disabling feature notification. Make sure to restart Icinga 2 for these changes to take effect.
Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect.
Local zone name [sd-151768.dedibox.fr]: [Entrée]
Parent zone name [master]: [Entrée]
Default global zones: global-templates director-global
Do you want to specify additional global zones? [y/N]: [Entrée]
Do you want to disable the inclusion of the conf.d directory [Y/n]: [Entrée]
Disabling the inclusion of the conf.d directory...
Done.
Now restart your Icinga 2 daemon to finish the installation!
# systemctl restart icinga2

ImportantNotez qu’ici nous avons choisi de désactiver l’inclusion du répertoire conf.d. C’est normal, puisque toute la configuration d’Icinga se trouve sur le serveur de supervision.

Je n’ai plus rien à faire sur le client. Je me reconnecte au serveur et je crée un nouveau répertoire dans l’arborescence d’Icinga :

# mkdir -v /etc/icinga2/zones.d/master
mkdir: created directory '/etc/icinga2/zones.d/master'

Dans ce répertoire, je crée un fichier que je nomme en fonction de mon hôte à surveiller :

// /etc/icinga2/zones.d/master/host-sd-151768.dedibox.fr.conf

object Endpoint "sd-151768.dedibox.fr" {
}

object Zone "sd-151768.dedibox.fr" {
  endpoints = [ "sd-151768.dedibox.fr" ]
  parent = "master"
}

object Host "sd-151768.dedibox.fr" {
  import "generic-host"
  address = "163.172.81.8"
  vars.os = "Linux"
  vars.client_endpoint = name
}

AstuceNotez que vous pouvez nommer ce fichier comme vous voulez, du moment qu’il se termine par *.conf. Pour ma part, je lui ai simplement donné un nom parlant.

Je vérifie si je n’ai pas fait d’erreurs de syntaxe :

# icinga2 daemon -C

Icinga ne m’affiche aucune erreur. Je peux donc sereinement prendre en compte la nouvelle configuration :

# systemctl reload icinga2

Je me connecte à l’interface d’Icinga et je vois mon nouvel hôte en attente (PENDING) d’un premier test de connexion. Au bout de quelques secondes, le test s’effectue, et il bascule vers la partie droite du tableau de bord :

Icinga

La suite au prochain numéro, où nous allons définir quelques tests de base pour notre machine distante.


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 *