Vous êtes ici:

Menu


Stacks Image 9724
Proxmox Virtual Environment est une solution libre de virtualisation basée sur un hyperviseur Linux KVM sous Debian. Il est possible d'utiliser des containers LXC. Nous découvrir la façon de superviser cette solution avec Centreon.
Nous utiliserons une solution Centreon basée sur mon installation automatisée décrite sur ce tutoriel. Evidemment, les plugins utilisés dans ce tutoriel sont entièrement compatibles avec la version officielle de Centreon. La configuration des objets Centreon sera par contre différente des plugins pack Centreon.

1 Configuration du serveur Proxmox

1.1 Installation de l'agent SNMP

Tout d'abord nous installons l'agent SNMP sur notre serveur Proxmox.
apt-get install snmp snmpd snmptrapd libnet-snmp-perl libsnmp-perl -y
Modifiez la configuration SNMP en modifiant les lignes suivantes.
#  Listen for connections from the local system only
agentAddress udp::161

rocommunity public <IP Central Centreon>
Redémarrez l'agent SNMP
systemctl restart snmpd

1.2 Installation de LM-Sensors

Vous pouvez aussi utiliser lm-sensors pour vérifier l'état de votre matériel physique (températures, ventilateurs). Dans cet exemple j'utilise un shuttle DH 110 d'occasion acheté sur le bon coin. Installez lm-sensors.
apt-get install lm-sensors
Détectez le matériel en lançant la commande suivante
sensors-detect
Redémarrez votre machine et vérifiez la prise en compte de votre matériel.
sensors
it8728-isa-0a40
Adapter: ISA adapter
in0: +0.07 V (min = +2.83 V, max = +2.78 V) ALARM
in1: +1.37 V (min = +2.83 V, max = +2.20 V) ALARM
in2: +1.99 V (min = +2.10 V, max = +1.52 V) ALARM
+3.3V: +3.34 V (min = +3.74 V, max = +1.82 V) ALARM
in4: +1.01 V (min = +0.16 V, max = +0.44 V) ALARM
in5: +2.22 V (min = +1.72 V, max = +3.00 V)
in6: +2.22 V (min = +1.09 V, max = +2.58 V)
3VSB: +3.31 V (min = +1.51 V, max = +3.41 V)
Vbat: +3.12 V
fan1: 1614 RPM (min = 13 RPM)
temp1: +31.0°C (low = -81.0°C, high = -106.0°C) ALARM sensor = thermistor
temp2: +26.0°C (low = -22.0°C, high = -70.0°C) ALARM sensor = Intel PECI
temp3: -128.0°C (low = -63.0°C, high = -100.0°C) sensor = disabled
intrusion0: ALARM

acpitz-acpi-0
Adapter: ACPI interface
temp1: +27.8°C (crit = +119.0°C)
temp2: +29.8°C (crit = +119.0°C)

pch_skylake-virtual-0
Adapter: Virtual device
temp1: +37.5°C

coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +26.0°C (high = +84.0°C, crit = +100.0°C)
Core 0: +23.0°C (high = +84.0°C, crit = +100.0°C)
Core 1: +23.0°C (high = +84.0°C, crit = +100.0°C)
Core 2: +25.0°C (high = +84.0°C, crit = +100.0°C)
Core 3: +26.0°C (high = +84.0°C, crit = +100.0°C)

1.3 Création d'un compte de service Proxmox

Maintenant, nous avons besoin d'un compte capable d'accéder aux objets de Proxmox afin de les monitorer. Connectez-vous à l'interface de Proxmox. Sélectionnez Datacenter -> Permissions -> Utilisateurs
Stacks Image 37289
Ajoutez un utilisateur de type "Proxmox VE authentication". Saisissez le mot de passe. Pour notre exemple nous utiliserons monitoring mdp supervision.
Stacks Image 37380
Notre compte de service est prêt.
Stacks Image 37385
Nous allons créer un rôle pour ce compte. Il doit avoir les droits suivants : VM.Monitor, VM.Audit, Datastore.Audit, Sys.Audit, Sys.Syslog. Sélectionnez le menu rôles, créez le rôle PVEMonitoring avec les droits précédents.
Stacks Image 37400
Il faut ajouter le rôle au compte de service. Sélectionnez Permissions, cliquez sur Ajouter, Permissions de l'utilisateur.
Stacks Image 37390
Ajoutez le chemin le plus haut, l'utilisateur monitoring@pve et le rôle PVEMonitoring.
Stacks Image 37395
Vous devriez avoir la permission suivante :
Stacks Image 37405
A partir du serveur Centreon, vous pouvez vérifier la connexion au serveur Proxmox.
curl -k -d "username=monitoring@pve&password=supervision"  https://192.168.1.146:8006/api2/json/access/ticket

{"data":{"ticket":"PVE:monitoring@pve:5E3E6DC9::eKy9CKLW7dYccZgZPSNZCZTk+eNJn+fgYfo8ICsyAgjYGA/l8X5qwsfXk/sM2OGmZcj3xSpS9d8QjqpWoUSL8nN/66Js2noBTue35sEy9r3fJz8Y6EA9xLWw80cwCZjdPOXnUOiAzbgcClzIY0Tb9q6bZ888Z6KrBunOIFEzJSpKs64YfEMtsCvJv9sicbFDZ18LwObJLiTNdCHxesmigbQUCyYIZsXhSzdrw+ieoxcvQh9xc3KYyVTnzNCollg9AOthh0jRPMIUVDukwC3men/kSxLz9MRxgf988Rj7FUaRu+cs0kSvAY0yZopGs9r2B7ziBeqm7YY2HKTkxmkwbg==","cap":{"vms":{"VM.Audit":1,"VM.Monitor":1},"nodes":{"Sys.Audit":1,"Sys.Syslog":1},"access":{},"storage":{"Datastore.Audit":1},"dc":{"Sys.Audit":1}},"CSRFPreventionToken":"5E3E6DC9:/kixbu0ewcJxaNHTq5q0NPIHoIKO69ao5XNa2NTohJY","username":"monitoring@pve"}}root@vmbuster:~#

2 le plugin centreon_proxmox_ve_restapi.pl

Si le plugin centreon n'est pas installé sur votre serveur CentOS, lancez cette commande :
yum install centreon-plugin-Virtualization-Proxmox-Ve-Restapi -y
Connectons-nous sur le serveur de supervision Centreon. Nous utiliserons le plugin centreon_proxmox_ve_restapi.pl. Prenez l'habitude de vous connecter en tant que centreon-engine pour tester le plugin. Voici les principaux modes de supervision de ce plugin.
/usr/lib/centreon/plugins/centreon_proxmox_ve_restapi.pl --plugin apps::proxmox::ve::restapi::plugin --list-mode

....
Modes Available:
list-nodes
list-storages
list-vms
node-usage
storage-usage
version
vm-usage
Les trois premiers modes servent principalement à la découverte d'objets à superviser. Ils sont généralement utilisés avec l'auto-discovery (module actuellement non-libre). Voici les paramètres de connexion en RestAPI commun à tous ces modes.
Rest api Options:
Proxmox Rest API

More Info about Proxmox VE API on
https://pve.proxmox.com/wiki/Proxmox_VE_API

--hostname
Set hostname or IP of Proxmox VE Cluster node

--port Set Proxmox VE Port (Default: '8006')

--proto Specify https if needed (Default: 'https').

--api-username
Set Proxmox VE Username API user need to have this privileges
'VM.Monitor, VM.Audit, Datastore.Audit, Sys.Audit, Sys.Syslog'

--api-password
Set Proxmox VE Password

--realm Set Proxmox VE Realm (pam, pve or custom) (Default: 'pam').

--timeout
Threshold for HTTP timeout.
Avec notre configuration, nous utiliserons donc cette syntaxe suivante avec le mode version :
/usr/lib/centreon/plugins//centreon_proxmox_ve_restapi.pl --plugin apps::proxmox::ve::restapi::plugin --mode=version --hostname=192.168.1.146 --port=8006 --proto=https --api-username=monitoring --api-password=supervision --realm=pve
Malheureusement nous n'avons pas le résultat escompté à cause du certificat non vérifié.
UNKNOWN: 500 Can't connect to 192.168.1.146:8006 (certificate verify failed) |
Le certificat est celui par défaut, donc nous devons ne pas tenir compte de celui-ci en ajoutant le paramètre ssl-opt.
/usr/lib/centreon/plugins//centreon_proxmox_ve_restapi.pl --plugin apps::proxmox::ve::restapi::plugin --mode=version --hostname=192.168.1.146 --port=8006 --proto=https --api-username=monitoring --api-password=supervision --realm=pve --ssl-opt="SSL_verify_mode => SSL_VERIFY_NONE"
Version is '6.1-7'

2.1 Intégration dans Centreon

Nous utiliserons la version open-source sans plugin-pack. Je m'appuie sur le script create_config_initialV5.sh de mon github. Pour les heureux possesseurs des plugins-pack, il suffira d'installer le pack centreon-pack-virtualization-proxmox-ve-restapi.

2.1a Création des commandes

Nous allons créer quatre commandes : cmd_virt_proxmox_version, cmd_virt_proxmox_node, cmd_virt_proxmox_vm et cmd_virt_proxmox_storage

Template cmd_virt_proxmox_node

Stacks Image 37298
Command Line :
$CENTREONPLUGINS$/centreon_proxmox_ve_restapi.pl --plugin apps::proxmox::ve::restapi::plugin --mode=node-usage --hostname=$HOSTADDRESS$ --api-username='$_HOSTPROXMOXUSERNAME$' --api-password='$_HOSTPROXMOXPASSWORD$' --proto='$_HOSTPROXMOXPROTO$' --port='$_HOSTPROXMOXPORT$' --realm='$_HOSTPROXMOXREALM$' $_HOSTPROXMOXOPTIONS$ --filter-name='$_SERVICEFILTERNAME$' --warning-cpu='$_SERVICEWARNINGCPU$' --critical-cpu='$_SERVICECRITICALCPU$' --warning-memory='$_SERVICEWARNINGMEMORY$' --critical-memory='$_SERVICECRITICALMEMORY$' --warning-swap='$_SERVICEWARNINGSWAP$' --critical-swap='$_SERVICECRITICALSWAP$' --warning-fs='$_SERVICEWARNINGFS$' --critical-fs='$_SERVICECRITICALFS$' $_SERVICEOPTIONS$

Template cmd_virt_proxmox_storage

Stacks Image 37495
Command Line :
$CENTREONPLUGINS$/centreon_proxmox_ve_restapi.pl --plugin apps::proxmox::ve::restapi::plugin --mode=storage-usage --hostname=$HOSTADDRESS$ --api-username='$_HOSTPROXMOXUSERNAME$' --api-password='$_HOSTPROXMOXPASSWORD$' --proto='$_HOSTPROXMOXPROTO$' --port='$_HOSTPROXMOXPORT$' --realm='$_HOSTPROXMOXREALM$' $_HOSTPROXMOXOPTIONS$ --filter-name='$_SERVICEFILTERNAME$' --warning-storage='$_SERVICEWARNINGSTORAGE$' --critical-storage='$_SERVICECRITICALSTORAGE$' $_SERVICEOPTIONS$

Template cmd_virt_proxmox_vm

Stacks Image 37492
Command Line :
$CENTREONPLUGINS$/centreon_proxmox_ve_restapi.pl --plugin apps::proxmox::ve::restapi::plugin --mode=vm-usage --hostname=$HOSTADDRESS$ --api-username='$_HOSTPROXMOXUSERNAME$' --api-password='$_HOSTPROXMOXPASSWORD$' --proto='$_HOSTPROXMOXPROTO$' --port='$_HOSTPROXMOXPORT$' --realm='$_HOSTPROXMOXREALM$' $_HOSTPROXMOXOPTIONS$ --filter-name='$_SERVICEFILTERNAME$' --warning-cpu='$_SERVICEWARNINGCPU$' --critical-cpu='$_SERVICECRITICALCPU$' --warning-memory='$_SERVICEWARNINGMEMORY$' --critical-memory='$_SERVICECRITICALMEMORY$' --warning-traffic-in='$_SERVICEWARNINGTRAFFICIN$' --critical-traffic-in='$_SERVICECRITICALTRAFFICIN$' --warning-traffic-out='$_SERVICEWARNINGTRAFFICOUT$' --critical-traffic-out='$_SERVICECRITICALTRAFFICOUT$' --warning-read-iops='$_SERVICEWARNINGREADIOPS$' --critical-read-iops='$_SERVICECRITICALREADIOPS$' --warning-write-iops='$_SERVICEWARNINGWRITEIOPS$' --critical-write-iops='$_SERVICECRITICALWRITEIOPS$' $_SERVICEOPTIONS$

Template cmd_virt_proxmox_version

Stacks Image 37489
Command Line :
$CENTREONPLUGINS$/centreon_proxmox_ve_restapi.pl --plugin apps::proxmox::ve::restapi::plugin --mode=version --hostname=$HOSTADDRESS$ --api-username='$_HOSTPROXMOXUSERNAME$' --api-password='$_HOSTPROXMOXPASSWORD$' --proto='$_HOSTPROXMOXPROTO$' --port='$_HOSTPROXMOXPORT$' --realm='$_HOSTPROXMOXREALM$' $_HOSTPROXMOXOPTIONS$ $_SERVICEOPTIONS$

2.1b Création du template de service

Nous allons créer quatre templates de services basé sur le template service-generique-actif : stpl_virt_proxmox_version, stpl_virt_proxmox_node, stpl_virt_proxmox_vm et stpl_virt_proxmox_storage. On commence par stpl_virt_proxmox_version

Commande stpl_virt_proxmox_version

Stacks Image 37303
Onglet Extended Info
Stacks Image 37512

Commande stpl_virt_proxmox_node

On continue avec stpl_virt_proxmox_node
Stacks Image 37509
Onglet Extended Info
Stacks Image 37506

Commande stpl_virt_proxmox_vm

Puis avec stpl_virt_proxmox_vm
Stacks Image 37529
Onglet Extended Info
Stacks Image 37532

Commande stpl_virt_proxmox_storage

Et enfin avec stpl_virt_proxmox_storage
Stacks Image 37535
Onglet Extended Info
Stacks Image 37538
Voici la liste des templates
Stacks Image 37543

2.1c Création du template d'hôte

Nous continuons avec la création du template d'hôte pour Proxmox. Nous le nommerons htpl_virt_proxmox.
Stacks Image 37308
Onglet Relations, nous ajoutons les templates de services
Stacks Image 37546
Onglet Extended Infos
Stacks Image 37549

2.1d Création de l'hôte Proxmox.

Il nous reste à créer notre hôte grâce à notre template d'hôte. Nous rajouterons le template htpl_OS-Linux-SNMP avec le template htpl_virt_proxmox. Nous ajouterons aussi un service pour lm-sensors, voir l'article en question.
Stacks Image 37313
Voici les valeurs des macros personnalisées :
PROXMOXUSERNAME : monitoring
PROXMOXPASSWORD : supervision
PROXMOXPROTO : https
PROXMOXPORT : 8006
PROXMOXREALM : pve
PROXMOXOPTIONS : --ssl-opt="SSL_verify_mode => SSL_VERIFY_NONE"
Après application de la configuration, nous obtenons ceci dans la vue temps réels.
Stacks Image 37562
Cet article est terminé, vous avez vu comment on utilise un plugin Centreon pour Proxmox. J'y reviendrai certainement pour ajouter mes expériences personnelles.
comments powered by Disqus
 Vous êtes ici: