====== Ajout d'une machine au monitoring ======
On fait l'hypothèse de l'ajout d'une machine « ''bling'' » au cluster, dont le fqdn est ''bling.cluster.chapril.org''.
===== Installation du serveur esclave =====
C'est aussi simple que cela :
apt update && apt install icinga2 monitoring-plugins-chapril
===== Configuration du serveur esclave =====
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 **[[admin:machines_virtuelles:admin|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.
==== Ajout de l'esclave dans la zone ====
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 **[[admin:machines_virtuelles:admin|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"
}
==== Ajout de l'objet à la configuration ====
La définition des objets de la zone master est dans ''/etc/icinga2/zones.d/master/'' et est organisé comme suit :
* une machine == 1 fichier de conf ;
* un hyperviseur == 1 dossier ;
* cas particulier du cluster : un dossier cluster.
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 = "Cha ronronne !"
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
Pour ajouter des nouvelles sondes à la configuration, un tutoriel est disponible ici :
[[admin:monitoring:create-custom-probe|Monitoring howto]]
====== Cas des BDD ======
===== Accès MySQL pour Icinga =====
mysql> create user 'nagios' identified by 'xxx';
Query OK, 0 rows affected (0.00 sec)
[client]
user=nagios
password=XXX
===== Accès psql pour Icinga =====
sudo -u postgres createuser -D -R -S nagios
# TYPE DATABASE USER ADDRESS METHOD
local template1 nagios ident