XenServer

Surveiller les ressources de l’hôte et de dom0 avec SNMP

Remarque :

La fonctionnalité SNMP est disponible pour les clients XenServer Premium ou Trial Edition. Pour plus d’informations sur les licences XenServer, consultez Licences. Pour mettre à niveau ou obtenir une licence XenServer, visitez le site Web de XenServer.

Avec le rôle d’administrateur de pool, vous pouvez utiliser SNMP pour surveiller à distance les ressources consommées par votre hôte XenServer® et dom0 - le domaine de contrôle de votre hôte. Un gestionnaire SNMP, également appelé système de gestion de réseau (NMS), envoie des requêtes à un agent SNMP exécuté sur un hôte XenServer. L’agent SNMP répond à ces requêtes en renvoyant les données collectées sur diverses métriques au NMS. Les données pouvant être collectées sont définies par des identificateurs d’objet (OID) dans un fichier texte appelé base d’informations de gestion (MIB). Un OID représente une information mesurable spécifique sur un périphérique réseau, telle que l’utilisation du CPU ou de la mémoire.

Vous pouvez également configurer des traps, qui sont des messages initiés par l’agent qui alertent le NMS qu’un événement spécifique s’est produit dans XenServer. Les requêtes et les traps peuvent être utilisés pour surveiller l’état de vos pools XenServer. Ceux-ci sont définis comme des objets de métrique et de trap et sont identifiés par des OID dans un fichier MIB XENSERVER-MIB.txt, disponible en téléchargement sur la page de téléchargements XenServer. Les tableaux suivants fournissent des informations sur ces objets de métrique et de trap.

Objets métriques

Vous pouvez demander une information spécifique sur vos hôtes XenServer en utilisant les métriques listées dans le tableau suivant. Ces métriques sont utilisées par le gestionnaire SNMP lors de l’envoi de requêtes à un agent SNMP, ce qui vous permet de visualiser ces données dans votre NMS.

Vous pouvez afficher les données renvoyées par ces objets métriques depuis votre NMS ou depuis l’interface de ligne de commande xe. Pour interroger les objets métriques depuis l’interface de ligne de commande xe, exécutez host-data-source-query ou vm-data-source-query et fournissez la source de données RRDD comme valeur pour le paramètre data-source. Par exemple :

xe host-data-source-query data-source=cpu_avg host=<host UUID>
<!--NeedCopy-->

Remarque :

Par défaut, le NMS envoie les requêtes OID aux agents SNMP en utilisant le port 161.

Identificateur d’objet (OID) Source de données RRDD Données renvoyées Type
1.3.6.1.4.1.60953.1.1.1.1 memory Mémoire totale de Dom0 en Mo Unsigned32
1.3.6.1.4.1.60953.1.1.1.2 memory_internal_free Mémoire libre de Dom0 en Mo Unsigned32
1.3.6.1.4.1.60953.1.1.1.3 cpu_usage Utilisation du CPU de Dom0 en pourcentage Float
1.3.6.1.4.1.60953.1.1.1.4 memory_total_kib Mémoire totale de l’hôte en Mo Unsigned32
1.3.6.1.4.1.60953.1.1.1.5 memory_free_kib Mémoire libre de l’hôte en Mo Unsigned32
1.3.6.1.4.1.60953.1.1.1.6 cpu_avg Utilisation du CPU de l’hôte en pourcentage Float
1.3.6.1.4.1.60953.1.1.1.7 (voir note 1) Nombre de pCPU Unsigned32
1.3.6.1.4.1.60953.1.1.1.8 running_vcpus Nombre de vCPU en cours d’exécution Unsigned32
1.3.6.1.4.1.60953.1.1.1.9 running_domains Nombre de VM actives Unsigned32

Remarques :

  1. Le nom d’un pCPU est au format cpu suivi d’un nombre. Pour interroger le nombre de pCPU à partir de l’interface de ligne de commande xe, exécutez la commande suivante :

    xe host-data-source-list host=<host UUID> | grep -E 'cpu[0-9]+$'

    Ceci renvoie une liste des métriques de CPU qui correspondent à l’expression régulière cpu[0-9]+.

Traps

Les traps sont des alertes envoyées par l’agent SNMP pour notifier le gestionnaire SNMP lorsque certains événements se produisent, vous permettant de surveiller vos hôtes XenServer et d’identifier les problèmes tôt. Vous pouvez configurer vos paramètres SNMP pour générer un trap lorsqu’une limite est atteinte (par exemple, si l’utilisation du CPU de l’hôte est trop élevée). Lorsqu’un trap est généré, il est envoyé à votre NMS et les champs suivants sont renvoyés dans l’objet trap.

Remarque :

Par défaut, l’agent SNMP sur l’hôte coordinateur de pool envoie les traps au NMS en utilisant le port UDP 162.

Identifiant d’objet (OID) Nom du champ Type Description
1.3.6.1.4.1.60953.1.10.1.1 operation Chaîne Peut prendre l’une des valeurs suivantes : add ou del. operation est add si un trap est généré par XenServer et envoyé à votre NMS (une alerte est également créée dans XenCenter) ou del si une alerte est détruite (par exemple, si vous ignorez une alerte).
1.3.6.1.4.1.60953.1.10.1.2 ref Chaîne La référence de l’objet trap.
1.3.6.1.4.1.60953.1.10.1.3 uuid Chaîne L’UUID de l’objet trap.
1.3.6.1.4.1.60953.1.10.1.4 name Chaîne Le nom de l’objet trap.
1.3.6.1.4.1.60953.1.10.1.5 priority Entier La gravité du trap. Peut être l’une des valeurs suivantes : 1 : Critique, 2 : Majeur, 3 : Avertissement, 4 : Mineur, 5 : Information, others : Inconnu.
1.3.6.1.4.1.60953.1.10.1.6 class Chaîne La catégorie du trap généré. Peut être l’une des valeurs suivantes : VM, Host, SR, Pool, VMPP, VMSS, PVS_proxy, VDI, ou Certificate.
1.3.6.1.4.1.60953.1.10.1.7 obj-uuid Chaîne L’UUID de l’objet xapi des différentes classes du champ class.
1.3.6.1.4.1.60953.1.10.1.8 timestamp Chaîne L’heure à laquelle le piège est généré.
1.3.6.1.4.1.60953.1.10.1.9 body Chaîne Informations détaillées sur le champ name.

Prérequis

  • Tous les hôtes d’un pool doivent exécuter la même version de XenServer et cette version doit contenir le plug-in SNMP.

    Remarque :

    Si l’onglet SNMP n’apparaît pas dans XenCenter®, cela peut être dû au fait que l’hôte ou un membre du pool n’exécute pas une version de XenServer prenant en charge SNMP. Mettez à jour l’hôte ou le pool vers la dernière version de XenServer.

  • Le NMS que vous utilisez doit prendre en charge SNMPv2c ou SNMPv3.

  • Votre NMS et XenServer doivent être connectés au réseau.

Contraintes

  • Vous pouvez configurer les paramètres SNMP pour un pool entier ou pour un hôte autonome qui ne fait pas partie d’un pool. Actuellement, vous ne pouvez pas configurer les paramètres SNMP pour un hôte individuel dans un pool.
  • Si vous ajoutez un hôte à un pool sur lequel SNMP est déjà activé et configuré, XenCenter n’applique pas automatiquement les paramètres SNMP du pool au nouvel hôte. Vous devez reconfigurer les paramètres SNMP sur le pool après avoir ajouté le nouvel hôte ou configurer le nouvel hôte avec les mêmes paramètres SNMP avant de l’ajouter au pool.

    Remarque :

    Lorsque vous reconfigurez les paramètres SNMP sur un pool après avoir ajouté un nouvel hôte, assurez-vous que l’hôte est opérationnel et qu’il n’est pas en mode maintenance.

  • Avant d’effectuer une mise à niveau progressive du pool de Citrix Hypervisor 8.2 CU1 vers XenServer 8.4 ou d’appliquer des mises à jour à vos hôtes et pools XenServer, sauvegardez les fichiers de configuration suivants si vous les avez modifiés manuellement auparavant et que vous en avez besoin :

    • /etc/snmp/snmpd.xs.conf
    • /etc/sysconfig/snmp
    • /var/lib/net-snmp/snmpd.conf
  • Lorsque l’agent SNMP est hors ligne, les traps ne peuvent pas être générés. Par exemple, si l’agent SNMP est redémarré ou si le coordinateur de pool est redémarré ou redésigné.

Configurer SNMP à l’aide de l’interface de ligne de commande xe

Vous pouvez configurer SNMP à l’aide de l’interface de ligne de commande xe ou de XenCenter. Pour plus d’informations sur la configuration de SNMP à l’aide de XenCenter, consultez Surveillance des ressources de l’hôte et de dom0 avec SNMP.

Objets result

Lors de la configuration de SNMP, toutes les réponses sont renvoyées au format JSON. Si une commande s’exécute avec succès, elle renvoie la paire clé-valeur "code": 0. Certaines commandes (telles que la commande get-config) renvoient un objet JSON imbriqué appelé result. L’objet JSON result est également requis pour la commande set-config qui est utilisée pour mettre à jour la configuration SNMP.

L’objet JSON result est composé des objets suivants : common, agent et nmss :

common

Champ Valeurs autorisées Valeur par défaut
enabled no (désactiver le service SNMP) ou yes (activer le service SNMP) no
debug_log no (désactiver la journalisation de débogage) ou yes (activer la journalisation de débogage) no
max_nmss N/A (Ce champ est en lecture seule et spécifie le nombre maximal de NMS pris en charge) 1

agent

Champ Valeurs autorisées Valeur par défaut
v2c no (désactiver SNMPv2c) ou yes (activer SNMPv2c) yes
community COMMON_STRING_TYPE (voir note 1) public
v3 no (désactiver v3) ou yes (activer v3) no
user_name COMMON_STRING_TYPE (voir note 1)  
authentication_password COMMON_STRING_TYPE où la longueur >= 8 (voir note 1)  
authentication_protocol MD5 ou SHA  
privacy_password COMMON_STRING_TYPE où la longueur >= 8 (voir note 1)  
privacy_protocol DES ou AES  
engine_id N/A (Ce champ est en lecture seule et est généré lorsque l’agent SNMP démarre pour la première fois)  

nmss

Champ Valeurs autorisées Valeur par défaut
uuid UUID NMS (Vous le définissez lors de la configuration du récepteur de traps NMS et cette valeur doit être cohérente sur tous les hôtes d’un pool)  
address Adresse IPv4 NMS ou nom d’hôte (FQDN)  
port 1 à 65535 162
v2c no (désactiver SNMPv2c), yes (activer SNMPv2c), ou prendre en charge SNMPv2c ou v3. yes
community COMMON_STRING_TYPE (voir note 1) public
v3 no (désactiver v3), yes (activer v3), ou prendre en charge SNMPv2c ou SNMPv3. no
user_name COMMON_STRING_TYPE (voir note 1)  
authentication_password COMMON_STRING_TYPE où la longueur >= 8 (voir note 1)  
authentication_protocol MD5 ou SHA  
privacy_password COMMON_STRING_TYPE où la longueur >= 8 (voir note 1)  
privacy_protocol DES ou AES  

Remarques :

  1. COMMON_STRING_TYPE fait référence à une chaîne qui répond aux exigences suivantes :
    • Toute combinaison de lettres, chiffres, tirets (-), points (.), dièses (#), arobases (@), signes égal (=), deux-points (:) ou tirets bas (_).
    • Longueur comprise entre 6 et 32 inclus.
  2. Les mots de passe ne sont pas stockés en texte clair dans un fichier de configuration de XenServer. Ils sont convertis en une clé localisée et stockés. La commande get-config affiche le mot de passe comme une constante masquée composée d’astérisques (*).

Configurer le service SNMP

Obtenir le statut du service SNMP :

xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=status
<!--NeedCopy-->

Démarrer, arrêter ou redémarrer le service SNMP :

xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=<operation>
<!--NeedCopy-->

opération est start, stop, ou restart.

Obtenir les détails de la configuration SNMP :

xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=get-config
<!--NeedCopy-->

En cas de succès, cette commande renvoie la paire clé-valeur "code": 0 et l’objet JSON result contenant les détails de configuration du service SNMP. Par exemple :

"code": 0,
  "result": {
    "common": {
      "enabled": "no",
      "debug_log": "no",
      "max_nmss": 1
    },
    "agent": {
      "v2c": "yes",
      "v3": "no",
      "community": "public",
      "user_name": "",
      "authentication_password": "",
      "authentication_protocol": "",
      "privacy_password": "",
      "privacy_protocol": "",
      "engine_id": "<engine_id>"
    },
    "nmss": []
  }
<!--NeedCopy-->

Copiez l’objet JSON result dans votre éditeur de texte préféré et supprimez tous les caractères de nouvelle ligne (\n) du fichier. Mettez à jour les champs avec vos détails de configuration SNMP. Configurez votre NMS en vous référant à sa documentation et en spécifiant les valeurs pour les champs requis pour l’objet nmss. Pour plus d’informations, reportez-vous aux objets listés ci-dessus.

Pour configurer le service SNMP, exécutez la commande set-config et fournissez l’objet JSON modifié result comme valeur de paramètre pour le paramètre args:config.

Définir la configuration SNMP :

xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=set-config args:config='<result>'
<!--NeedCopy-->

result est l’objet JSON result renvoyé par la commande get-config que vous avez copié et modifié.

Remarque :

Pour configurer SNMP pour un pool entier, vous devez exécuter la commande set-config pour chaque hôte du pool.

Si les modifications de configuration sont réussies, la commande renvoie la paire clé-valeur "code": 0. Si les modifications de configuration échouent, la commande set-config renvoie l’une des paires clé-valeur suivantes, indiquant qu’une erreur s’est produite :

  • "code": 1 : Chaîne d’erreur courante. Par exemple, une exception inconnue.
  • "code": 2 : Chaîne d’erreur (paramètre manquant).
  • "code": 3 : Renvoie un objet message sous forme de liste où chaque élément est au format [field_path, key, value, error string].

Vous pouvez également envoyer un trap SNMP de test à votre NMS pour vérifier que les informations du récepteur de trap spécifiées sont correctes.

Envoyer un trap SNMP de test :

xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=send-test-trap args:config='{"nmss":[{"uuid":"<uuid>","address":"<address>","port":162,"v2c":"yes","v3":"no","community":"public","user_name":"<user_name>","authentication_password":"<authentication_password>","authentication_protocol":"<authentication_protocol>","privacy_password":"<privacy_password>","privacy_protocol":"<privacy_protocol>"}]}'
<!--NeedCopy-->

Cette commande envoie un trap de test à votre NMS avec le msg_name de TEST_TRAP et le msg_body de This is a test trap from XenServer pool "<pool name>" to verify the NMS Trap Receiver configuration.

Si vous ne recevez pas le trap de test, vérifiez à nouveau votre configuration SNMP. En cas d’échec, la commande send-test-trap renvoie également l’une des paires clé-valeur suivantes qui indiquent qu’une erreur s’est produite :

  • "code": 1 : Chaîne d’erreur courante. Par exemple, une exception inconnue.
  • "code": 2 : Chaîne d’erreur (paramètre manquant).
  • "code": 3 : Renvoie un objet message sous forme de liste où chaque élément est au format [field_path, key, value, error string].
  • "code": 4 : Renvoie un objet message sous forme de liste où chaque élément est au format [nms address, nms port, error string].
Surveiller les ressources de l’hôte et de dom0 avec SNMP