XenServer

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

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 au NMS les données collectées sur diverses métriques. 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 concernant un périphérique réseau, telle que l’utilisation du processeur ou de la mémoire.

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

Objets de métrique

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 de métrique depuis votre NMS ou depuis l’interface de ligne de commande xe. Pour interroger les objets de métrique 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 des 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 processeur 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 en cours d’exécution 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 rapidement. 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 de 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 piège 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 piège.
1.3.6.1.4.1.60953.1.10.1.3 uuid Chaîne L’UUID de l’objet piège.
1.3.6.1.4.1.60953.1.10.1.4 name Chaîne Le nom de l’objet de l’interruption.
1.3.6.1.4.1.60953.1.10.1.5 priority Entier La gravité de l’interruption. Peut être l’une des valeurs suivantes : 1 : Critique, 2 : Majeure, 3 : Avertissement, 4 : Mineure, 5 : Information, others : Inconnue.
1.3.6.1.4.1.60953.1.10.1.6 class Chaîne La catégorie de l’interruption générée. 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 plugin SNMP.

    Remarque :

    Si vous ne voyez pas l’onglet SNMP 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 qui prend 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 :

    Lors de la reconfiguration des paramètres SNMP sur un pool après l’ajout d’un nouvel hôte, assurez-vous que l’hôte est opérationnel et qu’il n’est pas en mode maintenance.

  • Lorsque l’agent SNMP est hors ligne, les traps ne peuvent pas être générées. 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 la v3) ou yes (activer la 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 caractères inclus.
  2. Les mots de passe ne sont pas stockés en texte brut dans les fichiers 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 l’état 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 les détails de votre configuration SNMP. Configurez votre NMS en vous référant à la documentation de votre NMS 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 result modifié 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ée et modifiée.

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 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].

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

Envoyer un test de trap SNMP :

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 test de trap à 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 test de trap, 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