Icinga LogoVoici le sixième article consacré au serveur de supervision Icinga. Dans notre précédent article nous avons configuré les notifications par e-mail en cas d’anomalie. Pour l’instant la surveillance se limite aux serveurs dédiés avec une ouverture frontale sur Internet.

Icinga permet également de gérer la supervision d’une machine coincée derrière un routeur et normalement inaccessible depuis l’extérieur. Pour ce faire, il suffit qu’elle dispose d’une connexion à Internet pour contacter le serveur de supervision.

Dans l’exemple qui suit, je vais intégrer la machine sandbox.microlinux.lan installée dans mon bureau dans la liste des machines à surveiller depuis mon serveur Icinga.

J’installe l’agent Icinga et les plugins Nagios sur le client :

# 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,ntp}
# systemctl enable icinga2 --now

AstuceNotez que par « client », j’entends ici la machine dont je souhaite surveiller l’état de santé, par opposition au « serveur » de supervision.

J’ouvre le port 5665 sur le client :

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

Sur le serveur Icinga, je crée un ticket pour la nouvelle machine :

# icinga2 pki ticket --cn sandbox.microlinux.lan
9705b681cdd4c0c0d3b2a82c56077ecb25c7eacb

Je connecte le client au serveur en transmettant le ticket au 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]: [Entrée]
Starting the Agent/Satellite setup routine...
Please specify the common name (CN) [sandbox.microlinux.lan]: [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 'sandbox.microlinux.lan'): 9705b681cdd4c0c0d3b2a82c56077ecb25c7eacb
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 [sandbox.microlinux.lan]: [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

Une fois que la connexion entre l’agent et le serveur est établie, je crée un fichier host-sandbox.microlinux.lan.conf sur le serveur :

// /etc/icinga2/zones.d/master/host-sandbox.microlinux.lan.conf

object Endpoint "sandbox.microlinux.lan" {
}

object Zone "sandbox.microlinux.lan" {
  endpoints = [ "sandbox.microlinux.lan" ]
  parent = "master"
}

object Host "sandbox.microlinux.lan" {
  check_command = "dummy"
  vars.dummy_state = 0 // UP
  vars.dummy_text = "Everything OK."
  vars.os = "Linux"
  vars.client_endpoint = name
  vars.notification["mail"] = {
    groups = [ "icingaadmins" ]
  }
}

AstuceÉtant donné que je ne peux pas envoyer de ping à mon routeur depuis l’extérieur, je passe par la configuration de ce que l’on appelle un dummy host (ou « hôte bidon »). J’ai trouvé cette astuce dans la documentation officielle d’Icinga, dans la section Host Check Alternatives.

Je vérifie la syntaxe, je recharge la configuration et j’affiche l’interface d’Icinga. Les vérifications en attente s’affichent sur le tableau de bord :

Icinga NAT

Une fois que les vérifications sont validées, je peux afficher l’état de santé de mon nouvel hôte dans la section Overview > Services en effectuant une recherche sur le nom d’hôte de la machine :

Icinga NAT


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 *