On fait l'hypothèse de l'ajout d'une machine « bling
» au cluster, dont le fqdn est bling.cluster.chapril.org
.
C'est aussi simple que cela :
apt update && apt install icinga2 monitoring-plugins-chapril
Il s'agit essentiellement de configurer une connexion de confiance entre le maître et l'esclave.La configuration à proprement parler de monitoring s'effectuera ensuite sur le maître.
On va commencer par créer un jeton d'authentification sur le maître :
=(^-^)=root@admin:/etc/icinga2# icinga2 pki ticket --cn bling.cluster.chapril.org deadbeef...
On va ensuite lancer le node wizard sur le client
. Pensez à répondre oui (y) aux deux dernières questions (Accept {config,command} from master?
).
=(^-^)=root@bling:~# icinga2 node wizard Welcome to the Icinga 2 Setup Wizard! We'll guide you through all required configuration details. Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]: Starting the Node setup routine... Please specify the common name (CN) [bling.cluster.chapril.org]: Please specify the master endpoint(s) this node should connect to: Master Common Name (CN from your master setup): admin.cluster.chapril.org Do you want to establish a connection to the master from this node? [Y/n]: Y Please fill out the master connection information: Master endpoint host (Your master's IP address or FQDN): admin.cluster.chapril.org Master endpoint port [5665]: Add more master endpoints? [y/N]: N Please specify the master connection for CSR auto-signing (defaults to master endpoint host): Host [admin.cluster.chapril.org]: Port [5665]: information/base: Writing private key to '/etc/icinga2/pki/bling.cluster.chapril.org.key'. information/base: Writing X509 certificate to '/etc/icinga2/pki/bling.cluster.chapril.org.crt'. information/cli: Fetching public certificate from master (admin.cluster.chapril.org, 5665): Certificate information: Subject: CN = admin.cluster.chapril.org Issuer: CN = Icinga CA Valid From: Jun 19 09:37:04 2017 GMT Valid Until: Jun 15 09:37:04 2032 GMT Fingerprint: DE AD BE EF DE AD BE EF DE AD BE EF DE AD BE EF DE AD BE EF Is this information correct? [y/N]: y information/cli: Received trusted master certificate. Please specify the request ticket generated on your Icinga 2 master. (Hint: # icinga2 pki ticket --cn 'bling.cluster.chapril.org'): deadbeff... information/cli: Requesting certificate with ticket 'deadbeff...'. information/cli: Created backup file '/etc/icinga2/pki/bling.cluster.chapril.org.crt.orig'. information/cli: Writing signed certificate to file '/etc/icinga2/pki/bling.cluster.chapril.org.crt'. information/cli: Writing CA certificate to file '/etc/icinga2/pki/ca.crt'. Please specify the API bind host/port (optional): Bind Host []: Bind Port []: Accept config from master? [y/N]: y Accept commands from master? [y/N]: y information/cli: Disabling the Notification feature. Disabling feature notification. Make sure to restart Icinga 2 for these changes to take effect. information/cli: Enabling the Apilistener feature. Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect. information/cli: Created backup file '/etc/icinga2/features-available/api.conf.orig'. information/cli: Generating local zones.conf. information/cli: Dumping config items to file '/etc/icinga2/zones.conf'. information/cli: Created backup file '/etc/icinga2/zones.conf.orig'. information/cli: Updating constants.conf. information/cli: Created backup file '/etc/icinga2/constants.conf.orig'. information/cli: Updating constants file '/etc/icinga2/constants.conf'. information/cli: Updating constants file '/etc/icinga2/constants.conf'. Done. Now restart your Icinga 2 daemon to finish the installation!
Si vous avez loupé de répondre 'y' aux deux dernières questions, vous pouvez corriger ça ici :
accept_config = true accept_commands = true
Commenter ensuite la ligne à la fin de /etc/icinga2/icinga2.conf
:
// include_recursive "conf.d"
Ensuite on définit localement la zone globale pour la propagation de la configuration. Il suffit d'ajouter à /etc/icinga2/zones.conf
:
object Zone "global-templates" { global = true }
Enfin on redémarre le démon esclave :
=(^-^)=root@bling:~# systemctl restart icinga2
Et c'est fini. :)
Il ne reste qu'à définir l'hôte sur le maître et les services associés.
Vous avez à ce stade un esclave Icinga2 qui peut recevoir la configuration de son maître. On va faire en sorte que ça fonctionne effectivement, en ajoutant la configuration nécessaire sur le maître.
Dans le fichier de zones /etc/icinga2/zones.conf
, on ajoute :
/* bling */ object Zone "bling.cluster.chapril.org" { endpoints = [ "bling.cluster.chapril.org" ] parent = "master" } object Endpoint "bling.cluster.chapril.org" { host = "192.168.1.42" }
La définition des objets de la zone master est dans /etc/icinga2/zones.d/master/
et est organisé comme suit :
C'est probablement dans le dossier cluster que vous placerez bling.conf
.
/etc/icinga2/zones.d/master/ ├── cluster │ ├── admin.conf │ ├── bastion.conf │ ├── bling.conf │ ├── dns.conf │ ├── mail.conf │ ├── pouet.conf │ └── sympa.conf ├── coon.conf ├── galanga │ └── icinga2.conf └── maine.conf
Et votre fichier de conf peut ressembler à ça :
object Host "bling.cluster.chapril.org" { check_command = "hostalive" address = "192.168.1.42" address6 = "dead:beef:dead:beef:dead:beef:dead:beef" vars.dhcp = true vars.client_endpoint = name /* Set custom attribute `os` for hostgroup assignment in `groups.conf`. */ vars.os = "Debian" vars.os_version = "Stretch" vars.cluster = true vars.sqlserver = "mysql" vars.httpd = "nginx" /* Define disks and attributes for service apply rules in `services.conf`. */ vars.disks["disk"] = { } vars.disks["disk /"] = { disk_partitions = "/" } vars.disks["disk /var"] = { disk_partitions = "/var" } vars.disks["disk /tmp"] = { disk_partitions = "/tmp" } vars.http_vhosts["Home page"] = { http_vhost = "chapril.org" http_uri = "/" http_string = "<title>Cha ronronne !</title>" http_ssl = true } /* Define processes and attributes */ vars.process["Chatonic"] = { procs_command = "python3" procs_argument = "chatonic.py" procs_critical = "1:1" } /* Define notification mail attributes for notification apply rules in `notifications.conf`. */ vars.notification["mail"] = { /* The UserGroup `icingaadmins` is defined in `users.conf`. */ groups = [ "icingaadmins" ] } }
Vouc pouvez tester la configuration d'icinga avec :
icinga2 daemon -C
Enfin, reloadez Icinga2 sur le maître et ouvrez votre butineur sur https://icinga.chapril.org pour apprécier.
systemctl reload icinga2
mysql> create user 'nagios' identified by 'xxx'; Query OK, 0 rows affected (0.00 sec)
[client] user=nagios password=XXX
sudo -u postgres createuser -D -R -S nagios
# TYPE DATABASE USER ADDRESS METHOD local template1 nagios ident