DOCKER : Automatisation du monitoring de l’infrastructure de notre ferme Docker avec Centreon (CLAPI)

Menu

1. CENTREON
2. CREATION COMMANDE
3. CREATION TEMPLATE
4. SCRIPT CENTOS ET CRON
5. SCRIPT CLAPI
6. SONDE
A. WEBINJECT
B. CHECK_DOCKER


Après avoir crée notre première ferme Rancher en version 1.6.25 (Lien article) et après avoir commencer à y mettre des services (Lien article), nous allons mettre en place un monitoring afin de contrôler qu’il n’y aura pas de rupture de production d’un point de vue de l’infrastructure.

Pour cela, nous allons utiliser un produit dédié au monitoring Centreon, il est en version 18.10.2 en mode de la réalisation de l’article.

Afin d’automatiser et industrialiser au mieux l’ajout de nouveau hôte (espaces disques, utilisation mémoire, taux d’utilisation CPU, etc…), nous allons créer plusieurs Template, et à l’aide du code CLAPI nous allons les rajouter facilement et rapidement ces nouveaux hôtes avec les service qui se trouve dessus.

Pour ce qui est des noms d’hôtes et des adresses IP, nous allons continuer avec le schéma de mon article précédent, et nous reprennonss après l’installation et la configuration du service SNMP.

Lien des composants :
– Centreon (Lien https://www.centreon.com)
– Plugin Centreon (Lien https://github.com/centreon/centreon-plugins)
– Webinject (Lien http://www.webinject.org)
– cowcheck (Lien https://github.com/cloudnautique/cowcheck)
– check_docker (Lien https://github.com/sysC0D/nagios-plugin)

Je ne vais pas volontairement entrée dans tout les rouages de Centreon.
Il existe déjà plein d’autres articles et sites qui pourront vous informer pour cela.Exemple :
http://www.sugarbug.fr/blog/ <<< je recommande celui-ci
https://www.monitoring-fr.org
https://www.it-connect.fr/centreon-integrer-une-sonde-de-temperature-hwg-ste/
https://www.supinfo.com/articles/single/2361-supervision-via-centreon-configuration

1. CENTREON

Si pour vos tests vous désirez avoir Centreon dans VMWARE, voici le lien https://download.centreon.com/.
Sur celui-ci, vous pourrez télécharger une OVF créé par Centreon parfaitement fonctionnelle.

Une fois importé dans VMWARE, vous devrez lui rajouter une carte réseau.

Une fois votre VM démarrer, vous devez vous identifier sur le shell.

login: root
password : centreon

Celle-ci vous demande de réaliser les commandes suivante :

timedatectl set-timezone Europe/Paris
nano /etc/opt/rh/rh-php71/php.d/php-timezone.ini
echo date.timezone = Europe/Paris > /etc/opt/rh/rh-php71/php.d/php-timezone.ini
systemctl restart rh-php71-php-fpm
systemctl restart httpd
hostnamectl set-hostname centreon-central
su – centreon
php /usr/share/centreon/cron/centreon-partitioning.php >> /var/log/centreon/centreon-partitioning.log 2>&1
exit
systemctl restart cbd
rm /etc/profile.d/centreon.sh

Par contre, ils ont oublié de supprimer le proxy de leur image avant de la réaliser.

vi /etc/yum.conf

Vous devez commenter la ligne ou la supprimer.

#proxy=http://proxy.int.centreon.com:3128

Nous pouvons donc faire les mises à jour.

yum upgrade -y

Puis nous faisons un reboot de la machine pour une prise en compte global.

reboot

Vous devrez aussi vous identifier sur l’interface web.

login: admin
password : centreon

2. CREATION COMMANDE

Nous allons commencer par nous authentifier à Centreon avec un compte Administrateur

A l’aide du menu situé à gauche, nous nous rendons dans Configuration > Commandes > Contrôles

Nous pouvons donc cliquer sur le bouton Ajouter

Nous arrivons sur la page de création des commandes

Nous allons remplir l’ensemble des champs comme ci-dessous pour la première commande
Nom de commande : Centos7_Users
Type de commande : Vérification
Ligne de commande : $USER1$/check_centreon_nrpe3 -H $HOSTADDRESS$ -c users -t 60
Activer le shell : False (non coché)
Exemple d’arguments : vide
Description des arguments : vide
Description des macros : vide

Nous pouvons ensuite sauvegarder la commande .
Nous recherchons la commande que nous venons de créer.

Nous cochons la case devant celle-ci, puis nous allons la dupliquer

Nous éditons la commande dupliqué avec « _1 »

Nous modifions les informations en fonction du tableau ci-dessous

load Nom de commande : Centos7_Load
Type de commande : Vérification
Ligne de commande : $USER1$/check_centreon_nrpe3 -H $HOSTADDRESS$ -c load -t 60
Activer le shell : False (non coché)
Exemple d’arguments : vide
Description des arguments : vide
Description des macros : vide
check_load Nom de commande : Centos7_Check_Load
Type de commande : Vérification
Ligne de commande : $USER1$/check_centreon_nrpe3 -H $HOSTADDRESS$ -c check_load -t 60
Activer le shell : False (non coché)
Exemple d’arguments : vide
Description des arguments : vide
Description des macros : vide
swap Nom de commande : Centos7_Swap
Type de commande : Vérification
Ligne de commande : $USER1$/check_centreon_nrpe3 -H $HOSTADDRESS$ -c swap -t 60
Activer le shell : False (non coché)
Exemple d’arguments : vide
Description des arguments : vide
Description des macros : vide
root_disk Nom de commande : Centos7_Root_Disk
Type de commande : Vérification
Ligne de commande : $USER1$/check_centreon_nrpe3 -H $HOSTADDRESS$ -c root_disk -t 60
Activer le shell : False (non coché)
Exemple d’arguments : vide
Description des arguments : vide
Description des macros : vide
usr_disk Nom de commande : Centos7_Usr_Disk
Type de commande : Vérification
Ligne de commande : $USER1$/check_centreon_nrpe3 -H $HOSTADDRESS$ -c usr_disk -t 60
Activer le shell : False (non coché)
Exemple d’arguments : vide
Description des arguments : vide
Description des macros : vide
var_disk Nom de commande : Centos7_Var_Disk
Type de commande : Vérification
Ligne de commande : $USER1$/check_centreon_nrpe3 -H $HOSTADDRESS$ -c var_disk -t 60
Activer le shell : False (non coché)
Exemple d’arguments : vide
Description des arguments : vide
Description des macros : vide
zombie_procs Nom de commande : Centos7_Zombie_Procs
Type de commande : Vérification
Ligne de commande : $USER1$/check_centreon_nrpe3 -H $HOSTADDRESS$ -c zombie_procs -t 60
Activer le shell : False (non coché)
Exemple d’arguments : vide
Description des arguments : vide
Description des macros : vide
total_procs Nom de commande : Centos7_Total_Procs
Type de commande : Vérification
Ligne de commande : $USER1$/check_centreon_nrpe3 -H $HOSTADDRESS$ -c total_procs -t 60
Activer le shell : False (non coché)
Exemple d’arguments : vide
Description des arguments : vide
Description des macros : vide
proc_named Nom de commande : Centos7_Proc_Named
Type de commande : Vérification
Ligne de commande : $USER1$/check_centreon_nrpe3 -H $HOSTADDRESS$ -c proc_named -t 60
Activer le shell : False (non coché)
Exemple d’arguments : vide
Description des arguments : vide
Description des macros : vide
proc_crond Nom de commande : Centos7_Proc_Crond
Type de commande : Vérification
Ligne de commande : $USER1$/check_centreon_nrpe3 -H $HOSTADDRESS$ -c proc_crond -t 60
Activer le shell : False (non coché)
Exemple d’arguments : vide
Description des arguments : vide
Description des macros : vide
proc_syslogd Nom de commande : Centos7_Proc_Syslogd
Type de commande : Vérification
Ligne de commande : $USER1$/check_centreon_nrpe3 -H $HOSTADDRESS$ -c proc_syslogd -t 60
Activer le shell : False (non coché)
Exemple d’arguments : vide
Description des arguments : vide
Description des macros : vide
proc_rsyslogd Nom de commande : Centos7_Proc_Rsyslogd
Type de commande : Vérification
Ligne de commande : $USER1$/check_centreon_nrpe3 -H $HOSTADDRESS$ -c proc_rsyslogd -t 60
Activer le shell : False (non coché)
Exemple d’arguments : vide
Description des arguments : vide
Description des macros : vide
proc_docker Nom de commande : Centos7_Proc_Docker
Type de commande : Vérification
Ligne de commande : $USER1$/check_centreon_nrpe3 -H $HOSTADDRESS$ -c proc_docker -t 60
Activer le shell : False (non coché)
Exemple d’arguments : vide
Description des arguments : vide
Description des macros : vide
check_yum Nom de commande : Centos7_Check_Yum
Type de commande : Vérification
Ligne de commande : $USER1$/check_centreon_nrpe3 -H $HOSTADDRESS$ -c check_yum -t 60
Activer le shell : False (non coché)
Exemple d’arguments : vide
Description des arguments : vide
Description des macros : vide

Nous devons nous retrouver avec ceci dans la liste des commandes

3. CREATION TEMPLATE

Nous allons commencer par nous authentifier à Centreon avec un compte Administrateur

A l’aide du menu situé à gauche, nous nous rendons dans Configuration >Services > Modèles

Nous pouvons donc cliquer sur le bouton Ajouter

Nous arrivons sur la page de création des Templates

Nous allons remplir l’ensemble des champs comme ci-dessous pour la Template dans la partie «  Informations génèrales  »
Alias : Centos7_Users
Nom : Centos7_Users
Modèle : vide
Commande de vérification : Centos7_Users
Macro personnalisées : vide
Arguments : vide
Période de contrôle : 24×7
Nombre de contrôles avant validation de l’état : 2
Intervalle normal de contrôle : 2
Intervalle non-régulier de contrôle : 2
Contrôle actif activé : Défaut
Contrôle passif activé : Défaut
Est volatile : Défaut

Nous allons remplir l’ensemble des champs comme ci-dessous pour la Template dans la partie «  Notifications  »
Notification activée : Défaut
Contacts liés : vide
Groupes de contacts liés : vide
Intervalle de notification : 2
Période de notification : 24×7
Type de notification : Alerte / Inconnu / Critique
Délai de première notification : 2
Délai de première notification de recouvrement : 2

Nous pouvons ensuite sauvegarder la Template.
Nous recherchons la Template que nous venons de créer.

Nous cochons la case devant celle-ci, puis nous allons la dupliquer

Nous éditons la Template dupliqué avec « _1 »

Nous modifions les informations en fonction du tableau ci-dessous

load Alias : Centos7_Load
Nom : Centos7_Load
Commande de vérification : Centos7_Load
check_load Alias : Centos7_Check_Load
Nom : Centos7_Check_Load
Commande de vérification : Centos7_Check_Load
swap Alias : Centos7_Swap
Nom : Centos7_Swap
Commande de vérification : Centos7_Swap
root_disk Alias : Centos7_Root_Disk
Nom : Centos7_Root_Disk
Commande de vérification : Centos7_Root_Disk
usr_disk Alias : Centos7_Usr_Disk
Nom : Centos7_Usr_Disk
Commande de vérification : Centos7_Usr_Disk
var_disk Nom de commande : Centos7_Var_Disk
Nom : Centos7_Var_Disk
Commande de vérification : Centos7_Var_Disk
zombie_procs Nom de commande : Centos7_Zombie_Procs
Nom : Centos7_Zombie_Procs
Commande de vérification : Centos7_Zombie_Procs
total_procs Nom de commande : Centos7_Total_Procs
Nom : Centos7_Total_Procs
Commande de vérification : Centos7_Total_Procs
proc_named Nom de commande : Centos7_Proc_Named
Nom : Centos7_Proc_Named
Commande de vérification : Centos7_Proc_Named
proc_crond Nom de commande : Centos7_Proc_Crond
Nom : Centos7_Proc_Crond
Commande de vérification : Centos7_Proc_Crond
proc_syslogd Nom de commande : Centos7_Proc_Syslogd
Nom : Centos7_Proc_Syslogd
Commande de vérification : Centos7_Proc_Syslogd
proc_rsyslogd Nom de commande : Centos7_Proc_Rsyslogd
Nom : Centos7_Proc_Rsyslogd
Commande de vérification : Centos7_Proc_Rsyslogd
proc_docker Nom de commande : Centos7_Proc_Docker
Nom : Centos7_Proc_Docker
Commande de vérification : Centos7_Proc_Docker
check_yum Nom de commande : Centos7_Check_Yum
Nom : Centos7_Check_Yum
Commande de vérification : Centos7_Check_Yum

Nous devons nous retrouver avec ceci dans la liste des Templates

Nous pouvons dupliquer d’autre Templates déjà existant afin de les regrouper plus facilement.

Nous devons aussi crée un Groupe d’hôtes nommé Linux

4. SCRIPT CENTOS ET CRON

Nous allons maintenant mettre en place l’automatisation.
Pour cela, nous allons créer le dossier imports sur le serveur Centreon

mkdir /usr/share/centreon/imports

Nous allons créer le script

nano /usr/share/centreon/cron-import-clapi.sh

Voici le contenu du script

#!/bin/bash
#repertoire source
rep=/usr/share/centreon/imports/*.sh

#loop dans le rep a la recherche de fichier sh
for each in $rep
do
{
echo $each
#conversion du fichier
tr -d ‘\015’ < $each > « $each ».tmp
cat « $each ».tmp > $each
#ajout droit execute et renomme en .OK
chmod +x $each
$each
mv $each « $each ».OK
rm -f « $each ».tmp
}
done

Nous pouvons le sauvegarder

Nous éditons le crontab

crontab -e

Noous rajoutons la ligne de commande suivante

*/5 * * * * /usr/share/centreon/cron-import-clapi.sh >> /usr/share/centreon/cron-import-clapi.log

Nous rendons le script exécutable

chmod +x /usr/share/centreon/cron-import-clapi.sh

En patientant 5 à 10 minutes, nous devons voir apparaitre le fichier cron-import-clapi.log à l’emplacement /usr/share/centreon/

5. SCRIPT CLAPI

Nous devons donc créer un fichier CLAPI qui va nous permettre de créer automatiquement chaque nouvel hôte et l’ensemble des services associés.

Voici le contenu du fichier clapi-Template-Rancher.txt que nous devrons envoyer dans le dossier /usr/share/centreon/imports

#!/bin/bash
cd /
cd /usr/share/centreon/bin

./centreon -u admin -p centreon -o HOST -a ADD -v "Rancher01;Rancher01;10.59.1.151;generic-active-host;centreon-central;Linux"

./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;Check_load;Centos7_check_load"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;Check_yum;Centos7_check_yum"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;CPU;Centos7_Cpu-Detailed-SNMP-custom"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;load;Centos7_load"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;proc_crond;Centos7_proc_crond"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;proc_docker;Centos7_proc_docker"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;proc_named;Centos7_proc_named"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;proc_rsyslogd;Centos7_proc_rsyslogd"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;proc_syslogd;Centos7_proc_syslogd"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;root_disk;Centos7_root_disk"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;swap;Centos7_swap"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;total_procs;Centos7_total_procs"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;Users;Centos7_Users"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;usr_disk;Centos7_usr_disk"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;var_disk;Centos7_var_disk"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;zombie_procs;Centos7_zombie_procs"

Personnellement, j'ai un script Powershell qui permet de créer automatiquement de nouvelle VM Centos 7, et lorsqu'il les a crée envoi les fichiers CLAPI dans Centreon.
Je n'ai pas a me sousiher trop des détails, tout est automatisé sur la création.

Voici le contenu de mon fichier CREATION-VM.ps1

Function EnvoieMailVM {

[CmdletBinding()]
PARAM (
[Parameter(Mandatory=$true)][String] $VM-NOM-SALLE-A,
[Parameter(Mandatory=$true)][String] $VM-IP-SALLE-A,
[Parameter(Mandatory=$true)][String] $VM-NOM-SALLE-B,
[Parameter(Mandatory=$true)][String] $VM-IP-SALLE-B,
[Parameter()][String] $Description = $null
)

$emailSmtpServer = #Serveur-SMTP
$emailSmtpServerPort = #Port-Serveur-SMTP

$emailFrom = "Creation-VM@exemple.local"
$emailTo = @("hcornet@tips-of-mine.fr", "admin@exemple.local")

$body = ""
$body += "

"
$body += "Bonjour,

"
$body += "Une VM est crée dans chaque salle.

"
$body += "- $VM-NOM-SALLE-A
"
$body += "- $VM-IP-SALLE-A
"
$body += "- $VM-NOM-SALLE-B
"
$body += "- $VM-IP-SALLE-B
"
$body += "Penser à controle Centreon pour la supervision.

"

$encoding = [System.Text.Encoding]::UTF8

Send-MailMessage -SmtpServer "$emailSmtpServer" -To $emailTo -From "Creation-VM@exemple.local" -Subject "Creation nouvelle VM" -BodyAsHtml $body -Encoding $encoding -Priority High
}

Set-ExecutionPolicy RemoteSigned

Find-Module VMware.PowerCli | install-module

#Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false
#Set-PowerCLIConfiguration -ProxyPolicy NoProxy -Confirm:$False
#Set-PowerCLIConfiguration -InvalidCertificateAction ignore -Confirm:$False

Import-Module VMware.PowerCLI

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

$i = 152
While ($i -lt 200) {
If (Test-Connection "Rancher$i" -count 1 -Quiet) {
$ipV4 = Test-Connection "Rancher$i" -count 1 | select Ipv4Address
}
Else {
$j = $i -1
$k = $i +1
$ValueVM = [System.Net.Dns]::gethostentry("Rancher$j") | select Hostname
$ValueVM = $ValueVM.HostName.Split(".")[0]

$ipV4 = Test-Connection "$ValueVM" -count 1 | select Ipv4Address

$Value-VM-Nom-Salle-A = [int]($ipV4.IPV4Address.IPAddressToString).Split(".")[2]
$Value-VM-Nom-Salle-B = [int]($ipV4.IPV4Address.IPAddressToString).Split(".")[2] + 1
$Value-VM-XX = [int]($ipV4.IPV4Address.IPAddressToString).Split(".")[3] + 1

$Value-VM-IP_Nom-Salle-A = ($ipV4.IPV4Address.IPAddressToString).Split(".")[0]+"."+($ipV4.IPV4Address.IPAddressToString).Split(".")[1]+"."+$Value-VM-Nom-Salle-A+"."+$Value-VM-XX
$Value-VM-IP-Nom-Salle-B = ($ipV4.IPV4Address.IPAddressToString).Split(".")[0]+"."+($ipV4.IPV4Address.IPAddressToString).Split(".")[1]+"."+$Value-VM-Nom-Salle-B+"."+$Value-VM-XX

Write-Host "Nous créons le host Rancher$i avec l'adresse IP $Value-VM-IP_Nom-Salle-A pour la salle A"
Write-Host "Nous créons le host Rancher$k avec l'adresse IP $Value-VM-IP_Nom-Salle-B pour la salle B"

break
}
$i +=1
}

$lm49 = ConvertTo-SecureString "Password" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential("Admin@exemple.local", $lm49)

connect-viserver –server 'vcenter.exemple.local' -Credential $creds -Verbose

New-vm -vmhost 10.59.90.2 -Name Rancher$i -Template Centos7_Template -Datastore 'datastore'
Start-VM -VM Rancher$i -Confirm:$false

New-vm -vmhost 10.59.91.2 -Name Rancher$k -Template Centos7_Template -Datastore 'datastore (1)'
Start-VM -VM Rancher$k -Confirm:$false

Start-Sleep -s 60

#Centreon
$FichierCentreon-Salle-A = "D:\PowerShell\script\Creation VM\Supervision\usr\share\centreon\imports\clapi-Rancher$i.sh"
$FichierCentreon-Salle-B = "D:\PowerShell\script\Creation VM\Supervision\usr\share\centreon\imports\clapi-Rancher$k.sh"

# Mise en place des hostname
(Get-Content "D:\PowerShell\script\Creation VM\Supervision\clapi-Template-Rancher.txt") -replace "Rancher01","Rancher$i" | Set-Content $FichierCentreon-Salle-A
(Get-Content "D:\PowerShell\script\Creation VM\Supervision\clapi-Template-Rancher.txt") -replace "Rancher01","Rancher$k" | Set-Content $FichierCentreon-Salle-B

# Mise en place des IP
(Get-Content $FichierCentreon-Salle-A) -replace "10.59.YYYY.XXXX",$Value-VM-Nom-Salle-A | Set-Content $FichierCentreon-Salle-A
(Get-Content $FichierCentreon-Salle-B) -replace "10.59.YYYY.XXXX",$Value-VM-Nom-Salle-B | Set-Content $FichierCentreon-Salle-B

# Transfert des fichiers
pscp -pw centreon $FichierCentreon-Salle-A root@10.59.1.11:/usr/share/centreon/imports/
pscp -pw centreon $FichierCentreon-Salle-B root@10.59.1.11:/usr/share/centreon/imports/

# desydratation
Invoke-VMScript -VM Rancher$i -ScriptText "/root/vm-rehydrate.sh Rancher$i $Value-VM-Nom-Salle-A $Value-VM-XX" -GuestUser root -GuestPassword password
Invoke-VMScript -VM Rancher$k -ScriptText "/root/vm-rehydrate.sh Rancher$k $Value-VM-Nom-Salle-B $Value-VM-XX" -GuestUser root -GuestPassword password

Disconnect-VIServer -Server $global:DefaultVIServers -Force

EnvoieMailVM -VM-NOM-SALLE-A Rancher$i -VM-IP-SALLE-A $Value-VM-IP_Nom-Salle-A -VM-NOM-SALLE-B Rancher$k -VM-IP-SALLE-B $Value-VM-IP_Nom-Salle-B

Pour rajouter d'autre hôte, nous devons simplement remplacer Rancher01 par le nom d'un autre hôte et 10.59.1.151 par l'adresse IP de celui-ci.
Dans le cas, où vous auriez plusieurs collecteur Centreon, vous pouvez aussi remplacer centreon-central par le collecteur que vous désirez utiliser.

Une fois exécuté par le CRONTAB, nous pouvons voir apparaitre dans la liste des services l'ensemble des services qui sont rattachés à notre nouvel hôte.

Nous pouvons donc aussi prévoir la prise en compte global de l'ajout d'hôte dans Centreon avec le redémarrage du collecteur.

Voici le contenu du fichier clapi-Template-Collecteur.txt que nous devrons envoyer dans le dossier /usr/share/centreon/imports juste après la création du nouvel hôte et service.

#!/bin/bash
ECHO DATE

cd /
cd /usr/share/centreon/bin

./centreon -u admin -p centreon -a POLLERGENERATE -v 1
./centreon -u admin -p centreon -a POLLERTEST -v 1
./centreon -u admin -p centreon -a CFGMOVE -v 1
./centreon -u admin -p centreon -a POLLERRESTART -v 1

./centreon -u admin -p centreon -a APPLYCFG -v 1

Pour cela, je modifie juste la fin de mon script CREATION-VM.ps1 en rajoutant 4 lignes édité pour le collecteur.

$Date-Creation = Get-Date -Format g
#Centreon
$FichierCentreon-Salle-A = "D:\PowerShell\script\Creation VM\Supervision\usr\share\centreon\imports\clapi-Rancher$i.sh"
$FichierCentreon-Salle-B = "D:\PowerShell\script\Creation VM\Supervision\usr\share\centreon\imports\clapi-Rancher$k.sh"
$FichierCentreon-Restart = "D:\PowerShell\script\Creation VM\Supervision\usr\share\centreon\imports\ZZZZZ-Collecteur-$Date-Creation.sh"

# Mise en place des hostname
(Get-Content "D:\PowerShell\script\Creation VM\Supervision\clapi-Template-Rancher.txt") -replace "Rancher01","Rancher$i" | Set-Content $FichierCentreon-Salle-A
(Get-Content "D:\PowerShell\script\Creation VM\Supervision\clapi-Template-Rancher.txt") -replace "Rancher01","Rancher$k" | Set-Content $FichierCentreon-Salle-B
(Get-Content "D:\PowerShell\script\Creation VM\Supervision\clapi-Template-Collecteur.txt") -replace "DATE","$Date-Creation" | Set-Content $FichierCentreon-Restart

# Mise en place des IP
(Get-Content $FichierCentreon-Salle-A) -replace "10.59.YYYY.XXXX",$Value-VM-Nom-Salle-A | Set-Content $FichierCentreon-Salle-A
(Get-Content $FichierCentreon-Salle-B) -replace "10.59.YYYY.XXXX",$Value-VM-Nom-Salle-B | Set-Content $FichierCentreon-Salle-B

# Transfert des fichiers
pscp -pw centreon $FichierCentreon-Salle-A root@10.59.1.11:/usr/share/centreon/imports/
pscp -pw centreon $FichierCentreon-Salle-B root@10.59.1.11:/usr/share/centreon/imports/
pscp -pw centreon $FichierCentreon-Restart root@10.59.1.11:/usr/share/centreon/imports/

Une fois le collecteur redémarré, nous commençons à avoir le monitoring de l'hôte nouvellement ajouté.

6. SONDE

Nous avons donc créer un système de monitoring que nous avons automatisé et industrialisé. Bien sur nous pouvons encore augmenter le nombre de sonde que nous désirons avoir toujours sur le même principe.

A. WEBINJECT

Comme par exemple à l'aide de Webinject que nous aurons installé au paravant sur le serveur Centreon et du service contenaire COWCHECK qui sera lui installé sur Rancher

COWCHECK est une simple page qui retoune le message Everything OK lorsque tout ce passe bien.

Sur le serveur Centreon, nous créons le répertoire /usr/lib/nagios/plugins/webinject
Dans celui, nous allons y mettre les fichiers réponse Webinject au format XML.

mkdir /usr/lib/nagios/plugins/webinject
nano /usr/lib/nagios/plugins/webinject/Docker-Rancher01.xml

Voici le contenu du fichier Docker-Rancher01.xml

Nous retournons dans Centreon sur la page de création des commandes

Nous allons remplir l'ensemble des champs comme ci-dessous pour la première commande
- Nom de commande : Centreon
- Type de commande : Vérification
- Ligne de commande : $USER1$/webinject/webinject.pl -c config.xml Docker-$ARG1$.xml
- Activer le shell : False (non coché)
- Exemple d'arguments : vide
- Description des arguments : ARG1 : Nom de hôte à controler
- Description des macros : vide

Nous retournons sur la page de création des Templates

Nous allons remplir l’ensemble des champs comme ci-dessous pour la Template dans la partie " Informations génèrales "
- Alias : Centos7_Webinject_Scenario
- Nom : Centos7_Webinject_Scenario
- Modèle : vide
- Commande de vérification : Centos7_Webinject_Scenario
- Macro personnalisées : vide
- Arguments : Rancher01
- Période de contrôle : 24x7
- Nombre de contrôles avant validation de l'état : 2
- Intervalle normal de contrôle : 2
- Intervalle non-régulier de contrôle : 2
- Contrôle actif activé : Défaut
- Contrôle passif activé : Défaut
- Est volatile : Défaut

Nous allons remplir l’ensemble des champs comme ci-dessous pour la Template dans la partie " Notifications "
- Notification activée : Défaut
- Contacts liés : vide
- Groupes de contacts liés : vide
- Intervalle de notification : 2
- Période de notification : 24x7
- Type de notification : Alerte / Inconnu / Critique
- Délai de première notification : 2
- Délai de première notification de recouvrement : 2

Dans notre génèrateur de fichier CLAPI nous devons rajouter les lignes suivante

./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;Scenario page;Centos7_Webinject_Scenario"
./centreon -u admin -p centreon -o SERVICE -a setparam -v "Rancher01;Scenario page;check_command_arguments;!Rancher01"

Ainsi CLAPI nous rajout automatiquement la nouvelle sonde sur Rancher01.
Pour d'autre hote, nous devrons simplement remplacer le premier Rancher01 de chaque ligne par le nom du nouvel hôte, et le deuxieme Rancher01 de la deuxieme ligne par le nom d'un autre fichier XML à créer pour hôte.

B. CHECK_DOCKER

Comme par exemple à l'aide de CHECK_DOCKER que nous aurons téléchargé et installé au paravant sur les serveurs Rancher dans le dossier /usr/lib64/nagios/plugins/.

Sur les serveur Rancher, nous éditons le fichier centreon.cfg

nano /etc/nrpe.d/centreon.cfg

Nous rajoutons la ligne

command[check_docker_run]=/usr/lib64/nagios/plugins/check_docker.sh -s -n $ARG1$
command[check_docker_cpu]=/usr/lib64/nagios/plugins/check_docker.sh -c 10,20 -n $ARG1$
command[check_docker_memory]=/usr/lib64/nagios/plugins/check_docker.sh -m 10,20 -n $ARG1$
command[check_docker_network]=/usr/lib64/nagios/plugins/check_docker.sh -N 10,10,20,20 -n $ARG1$

nous éditons le fichier nrpe.cfg

nano /etc/nagios/nrpe.cfg

Nous modifions la ligne dont_blame_nrpe=0 par

dont_blame_nrpe=1

Puis nous faisons

usermod -aG docker nrpe
systemctl restart nrpe

Nous retournons dans Centreon sur la page de création des commandes

Nous allons remplir l'ensemble des champs comme ci-dessous pour la première commande
- Nom de commande : Centos7_Check_Docker_run
- Type de commande : Vérification
- Ligne de commande : $USER1$/check_centreon_nrpe3 -H $HOSTADDRESS$ -c check_docker -t 60 -a $ARG1$
- Activer le shell : False (non coché)
- Exemple d'arguments : vide
- Description des arguments : ARG1 : Nom du contenaire à surveiller
- Description des macros : vide

Nous devons créer d'autre commande pour :
- Centos7_Check_Docker_cpu
- Centos7_Check_Docker_memory
- Centos7_Check_Docker_network

Nous retournons sur la page de création des Templates

Nous allons remplir l’ensemble des champs comme ci-dessous pour la Template dans la partie " Informations génèrales "
- Alias : Centos7_Check_Docker_run
- Nom : Centos7_Check_Docker_run
- Modèle : vide
- Commande de vérification : Centos7_Check_Docker_run
- Macro personnalisées : vide
- Arguments : front-proxy_service1_1
- Période de contrôle : 24x7
- Nombre de contrôles avant validation de l'état : 2
- Intervalle normal de contrôle : 2
- Intervalle non-régulier de contrôle : 2
- Contrôle actif activé : Défaut
- Contrôle passif activé : Défaut
- Est volatile : Défaut

Nous allons remplir l’ensemble des champs comme ci-dessous pour la Template dans la partie " Notifications "
- Notification activée : Défaut
- Contacts liés : vide
- Groupes de contacts liés : vide
- Intervalle de notification : 2
- Période de notification : 24x7
- Type de notification : Alerte / Inconnu / Critique
- Délai de première notification : 2
- Délai de première notification de recouvrement : 2

Nous devons créer d'autre Templates pour :
- Centos7_Check_Docker_cpu
- Centos7_Check_Docker_memory
- Centos7_Check_Docker_network

Dans notre génèrateur de fichier CLAPI nous devons rajouter les lignes suivante

./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;Etat Front-Proxy;Centos7_Check_Docker_run"
./centreon -u admin -p centreon -o SERVICE -a setparam -v "Rancher01;Etat Front-Proxy;check_command_arguments;!front-proxy_service1_1"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;CPU Front-Proxy;Centos7_Check_Docker_cpu"
./centreon -u admin -p centreon -o SERVICE -a setparam -v "Rancher01;CPU Front-Proxy;check_command_arguments;!front-proxy_service1_1"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;Memoire Front-Proxy;Centos7_Check_Docker_memory"
./centreon -u admin -p centreon -o SERVICE -a setparam -v "Rancher01;Memoire Front-Proxy;check_command_arguments;!front-proxy_service1_1"
./centreon -u admin -p centreon -o SERVICE -a add -v "Rancher01;NETWORK Front-Proxy;Centos7_Check_Docker_network"
./centreon -u admin -p centreon -o SERVICE -a setparam -v "Rancher01;NETWORK Front-Proxy;check_command_arguments;!front-proxy_service1_1"

Ainsi CLAPI nous rajout automatiquement les nouvelles sondes sur Rancher01.
Pour d'autre hote, nous devrons simplement remplacer le premier Rancher01 de chaque ligne par le nom du nouvel hôte, Etat Front-Proxy par le nom que l'on désire donner à la sonde et le deuxieme front-proxy_service1_1 de la deuxieme ligne par le nom de l'un des contenaires que l'on désire surveiller.

Dans notre ferme Rancher, nous nous retrouvons avec comme monitoring :
- Centreon qui contrôle l'état des hôtes
- l'état des services Rancher avec Webinject et Check_docker
- l'état des flux avec Weave Scope

Dans un prochain article j'aborderai comment embarquer du monitoring dans un composant docker.

Taggé , , , , , , , , , , , , , , , , , , , , , , , , , .Mettre en favori le Permaliens.

Les commentaires sont fermés.