Sonde CIM

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 9 minutes de lecture
  • La sonde CIM utilise des protocoles WBEM pour interroger un serveur CIM particulier (le gestionnaire d'objets CIM) pour un ensemble d'objets et de propriétés de données.

    Pour obtenir des instructions sur la configuration des paramètres de sonde, consultez Configurer les paramètres de sonde.

    Les paramètres suivants peuvent être transmis à la sonde CIM :

    Tableau 1. Sonde CIM
    Paramètre Description Valeur par défaut
    source [Requis] Hôte initial auquel se connecter. Aucun
    port Port auquel se connecter. Si ce champ est vide, la valeur est déterminée par le paramètre « schema » : http = 5988, https = 5989. 5988 ou 5989
    schema [Requis] Schéma à utiliser : « http » ou « https ». http
    namespace [Requis] Espace de noms CIM. Peut être remplacé par une requête. Aucun
    queries [Requis] Liste de requêtes de sonde CIM délimitée par des points-virgules pour traiter et renvoyer les résultats. Aucun
    retries Nombre de nouvelles tentatives si une requête échoue en raison de problèmes de connectivité réseau. 2
    connection_timeout Délai de connexion de la sonde à un serveur, en millisecondes. 5000
    socket_timeout Délai de lecture de données de la part de la sonde, en millisecondes. 5000

    Le langage CimIQL (CIM Intermediate Query Language) utilise des clés, des filtres et des remontées pas-à-pas pour parcourir le schéma CIM.

    Expansion des paramètres

    Le langage de requête CIM prend en charge l'extension du paramètre de sonde prétraitée SNC standard. Placez les variables dans les requêtes en encapsulant leurs noms comme suit :

    ${foobar}.CIM_RunningOS[0].Name
    CIM_ComputerSystem.${barfoo}

    Le texte ${foobar} est remplacé par le contenu du paramètre foobarprobe transmis à la sonde CIM ; idem pour barfoo.

    CIMIQL

    CimIQL (CIM Intermediate Query Language) est un langage intermédiaire conçu pour simplifier le processus d'interrogation des fournisseurs CIM.

    CimIQL prend actuellement en charge la pile de protocoles WBEM (Web-Based Enterprise Management) standard, mais d'autres piles, telles que WS-MAN (Web Services-Management), peuvent être ajoutées ultérieurement. La syntaxe du langage de requête emprunté des éléments du langage de requête WMI de Microsoft et de la commande wbemcli de UNIX. La bibliothèque CimIQL est une implémentation Java pure.

    Remarque :
    CimIQL se prononce comme suit : « simicle ».

    Syntaxe CimIQL

    La syntaxe CimIQL se compose de plusieurs éléments, notamment d'une requête et de différents jetons.

    Tableau 2. Descriptions des éléments de la syntaxe CimIQL
    Élément Description
    Instruction L’élément le plus élémentaire de CimIQL est une valide . Une instruction contient plusieurs requêtes délimitées par un point (.).
    Requête Une représente une requête unique de haut niveau, indépendante du protocole. Chaque requête est constituée de composants de langage imbriqués et de sous-composants appelés jetons.
    Jeton Un décrit un aspect lexical spécifique de la syntaxe CimIQL.
    Jeton d'opération Le premier jeton de chaque requête doit être un , qui représente l’opération logique globale à effectuer.
    Jeton de composant Un est un sous-composant d’un jeton d’opération.
    Résultat Chaque requête est associée à un résultat, qui est ensuite fourni comme entrée à la requête suivante dans l'instruction. Un est composé d’un ensemble d’objets et de leurs propriétés.

    Jetons d'opération CimIQL

    La sonde CimIQL nécessite des jetons d'opération.

    Chacune des opérations principales suivantes a une contrepartie dans les Opérations CIM via HTTP standard.

    Tableau 3. Récapitulatif des jetons d'opération CimIQL
    Valeur de retour Détails Opération CIM via HTTP équivalente
    objet de classe Obtenir un objet

    Récupère un objet unique d'une classe spécifique en spécifiant toutes ses clés uniques (en tant que jetons de clé) et tous les jetons de paramètres facultatifs, séparés par des virgules.

    GetInstance
    objet de classe Énumérer les objets

    Récupère les objets qui correspondent à un ensemble de jetons de condition et de jetons de paramètre.

    EnumerateInstances
    objet de classe Énumérer les objets associés

    Récupère les objets associés à chaque résultat de la requête précédente.

    Associateurs
    résultats d'instruction Substitution

    Jeton sans opération qui alimente les résultats d'une instruction nommée précédente comme entrée dans la requête suivante de sa propre instruction.

    Référencer les résultats d'une instruction nommée

    Obtenir le jeton d'objet

    <nom de classe>{<jeton de clé>,<jeton de paramètre>,...}
    • Récupère un objet unique d'une classe spécifique en spécifiant toutes ses clés uniques (en tant que jetons de cléjetons de clé) et tous les jetons de paramètre facultatifs, séparés par des virgules. Ce jeton est également connu sous le nom de .
    • <nom de classe> correspond au nom de classe CIM sensible à la casse de l'objet souhaité. Par défaut, les objets de la classe spécifiée et de toutes les classes étendues sont récupérés.
    • Les jetons de clé et de paramètre sont entourés d'une paire d'accolades { ... }.
    • Ce jeton ne doit être utilisé que comme première requête dans une instruction.
    • Renvoie : objet de classe
    • Exemple :
      CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.*

    Énumérer les jetons d'objet

    <nom de classe>{{<jeton de condition>,<jeton de paramètre>,...}}<jeton d'index de tableau> OU <nom de classe><jeton d'index de tableau>
    • Récupère les objets qui correspondent à un ensemble de jetons de condition et de jetons de paramètre. Ce jeton est également connu sous le nom de .
    • Les jetons de condition et de paramètre sont entourés de deux paires d'accolades {{ ... }}. Les accolades sont facultatives si aucune condition ou aucun paramètre n'est nécessaire.
    • <nom de classe> correspond au nom de classe CIM sensible à la casse des objets souhaités. Par défaut, les objets de la classe spécifiée et de toutes les classes étendues sont récupérés.
    • Le jeton d'index est facultatif.
    • Ce jeton ne doit être utilisé que comme première requête dans une instruction.
    • Renvoie : objet de classe
    • Exemple :
      CIM_ComputerSystem{{Name!='runtime'}}.*

    Énumérer les jetons d'objet associés

    <nom de classe d'association>{{<jeton de propriété de filtre>,<jeton de paramètre>,...}}<jeton d'index de tableau> OU <nom de classe d'association><jeton d'index de tableau>
    • Récupère les objets associés à chaque résultat de la requête précédente.
    • Les jetons de condition et les jetons de paramètre sont entourés de deux paires d'accolades {{ ... }}. Les accolades sont facultatives si aucun filtre de propriété ou aucun paramètre n'est nécessaire.
    • <nom de classe d'association> correspond au nom de la classe plusieurs à plusieurs ou un à plusieurs qui associe deux objets ensemble. Par défaut, les objets de la classe spécifiée et de toutes les classes étendues sont récupérés.
    • Le jeton de paramètre, ResultClass, peut être spécifié pour filtrer les résultats en fonction du nom de classe de l'objet résultant.
    • Le jeton d'index est facultatif.
    • Ce jeton ne doit pas être utilisé comme première requête dans une instruction.
    • Renvoie : objet de classe
    • Exemple :
      CIM_ComputerSystem{{Name='runtime'}}[2].*

    Jeton de substitution

    ${<nom de l'instruction>}
    • Jeton sans opération qui alimente les résultats d'une instruction nommée précédente comme entrée dans la requête suivante de sa propre instruction.
    • Renvoie : nul
    • Exemple :
      $(lastComputer).ElementName

    Jetons de composant CimIQL

    La sonde CimIQL nécessite des jetons de composant, qui sont des sous-composants de jetons opérationnels.

    Les jetons suivants sont des sous-composants des jetons d'opération.
    Tableau 4. Récapitulatif des jetons de composant CimIQL
    Jeton Détails
    Jeton de propriétés * OU <nom de la propriété>,<nom de la propriété>,...

    Spécifie les propriétés à renvoyer pour chaque objet de l'ensemble de résultats final.

    Jeton de délimiteur de . (Point)

    Sépare les requêtes.

    Jeton [index]

    Réduit les résultats d'une requête précédente à un seul objet sur l'index entier spécifié.

    Jeton de <nom de clé>='<valeur>'

    Correspond à une propriété d'objet désignée comme clé par valeur exacte.

    Jeton de <nom de la propriété><opérateur conditionnel><valeur entourée>

    Correspond à une propriété unique d'un objet en fonction de la condition spécifiée.

    Jeton de <nom du paramètre>:'<valeur>'

    Transmet un paramètre par <nom de paramètre> à l'opération appelée. Le paramètre peut être utilisé pendant le prétraitement CimIQL ou par le CIMOM via la demande, selon le paramètre.

    Jeton de propriétés

    * OU <nom de la propriété>,<nom de la propriété>,...
    • Spécifie les propriétés à renvoyer pour chaque objet de l'ensemble de résultats final.
    • Le caractère générique * renvoie toutes les propriétés disponibles. Sinon, chaque nom de propriété souhaité est fourni dans une liste séparée par des virgules.
    • Ce jeton est requis à la fin de chaque instruction.
    • Exemple :
      CIM_ComputerSystem[0].*

    Jeton de délimiteur de requête

    . (Point)
    • Sépare les requêtes.
    • Exemple :
      CIM_ComputerSystem.PrimaryOwnerContact

    Jeton d'index

    [index]
    • Réduit les résultats d'une requête précédente à un seul objet sur l'index entier spécifié.
    • Ce jeton est toujours facultatif.
    • Exemple :
      CIM_ComputerSystem[0].*

    Jeton de clé

    <nom de clé>='<valeur>'
    • Correspond à une propriété d'objet désignée comme clé par valeur exacte.
    • <nom de clé> correspond au nom de la propriété utilisée comme clé.
    • Exemple :
      CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.*

    Jeton de condition

    <nom de la propriété><opérateur conditionnel><valeur entourée>
    • Correspond à une propriété unique d'un objet en fonction de la condition spécifiée.
    • <nom de la propriété> correspond au nom de la propriété à mettre en correspondance.
    • <opérateur conditionnel> détermine la façon dont la valeur réelle de la propriété est comparée à sa valeur attendue. Les opérateurs disponibles sont les suivants : égalité (=) et inégalité (!=).
    • <valeur entourée> doit être l'une des valeurs suivantes :
      • Valeur littérale entourée de guillemets simples ' ... '. Par exemple, foo='bar'
      • Expression régulière, entourée d'une paire de barres obliques /... /. Par exemple, foo=/bar.*/
    • Exemple :
      CIM_ComputerSystem{{Name!='runtime'}}.*

    Jeton de paramètre

    <nom du paramètre>:'<valeur>'
    • Transmet un paramètre par <nom de paramètre> à l'opération appelée. Le paramètre peut être utilisé pendant le prétraitement CimIQL ou par le CIMOM (Common Information Model Object Manager) via la demande, selon le paramètre.
    • Exemple :
      CIM_ComputerSystem.CIM_RunningOS{{ResultClass:'Win32_ComputerSystem'}}.*

    Didacticiel CimIQL

    Il s'agit d'un didacticiel où chaque exemple s'appuie sur l'exemple précédent.

    Tableau 5. Didacticiel CimIQL
    Ordre Instruction CimIQL Résultat
    1 CIM_ComputerSystem[0].* Récupère le premier résultat de toutes les instances de CIM_ComputerSystem et de ses descendants. Récupère toutes les propriétés.
    2 CIM_ComputerSystem.PrimaryOwnerContact Récupère toutes les instances de CIM_ComputerSystem et de ses descendants. Récupère une seule propriété, PrimaryOwnerContact.
    3 CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.* Récupère une instance unique de CIM_ComputerSystem et de ses descendants. Tous les jetons de clé doivent être spécifiés dans le { } jeton d'identité.
    4 CIM_ComputerSystem{{Name!='runtime'}}.*

    Récupère toutes les instances et tous les descendants de CIM_ComputerSystem dont le nom de propriété n'est pas « runtime ».

    Le jeton de filtre {{ }} filtre les instances qui ne contiennent pas toutes les propriétés/clés spécifiées.

    5 CIM_ComputerSystem{{Name=/^run.*$/}}.*
    Récupère toutes les instances et tous les descendants de CIM_ComputerSystem qui ont une valeur correspondant à l'expression régulière contenue dans les caractères / /.
    Remarque :
    L'expression régulière ne nécessite pas l'utilisation de guillemets simples.

    Le jeton de filtre {{ }} filtre les instances qui ne contiennent pas toutes les propriétés/clés spécifiées.

    6 CIM_ComputerSystem{{Name='runtime'}}[2].*

    Récupère le second résultat de toutes les instances de CIM_ComputerSystem et de leurs descendants dont le nom de propriété est « runtime ».

    L'ordre des opérations suit la syntaxe de la requête.
    1. Interrogez le serveur pour connaître tous les CIM_ComputerSystem et leurs descendants.
    2. Filtrez les résultats en fonction de la propriété Nom.
    3. Récupérez la deuxième instance qui a respecté le filtre.
    7 CIM_ComputerSystem.CIM_RunningOS[0].Name

    Récupère la propriété de nom pour la première instance CIM_OperatingSystem de chaque instance CIM_ComputerSystem.

    Le jeton intermédiaire, CIM_RunningOS, est le nom de la classe Associateur et non le résultat final.

    8 CIM_ComputerSystem.CIM_RunningOS{{Name=/CentOS/}}[0].Name Récupère la propriété de nom de la première instance CIM_OperatingSystem de chaque instance CIM_ComputerSystem, chaque instance CIM_OperatingSystem possède une propriété de nom contenant 'CentOS'.

    Résultats CimIQL

    Les résultats de la sonde CIM sont transmis au capteur de sonde en tant que document XML incorporé dans l'élément <output>.

    Voici un exemple commenté d'un résultat de traitement par lots CimQuery.
    <!-- document root -->
     <cimqueryset>
     <!-- A single query and query result. Multiple <cimquery> tags may be provided. -->
     <cimquery>
       <!-- The original query, enclosed by CDATA. -->
       <query><!CDATA[[>CIM_ComputerSystem[0].PrimaryOwnerContact<! ]]></query>
       <!-- The resulting data is enclosed within a single <result> tag. -->
       <result>
         <!-- A single class instance result. Multiple <instance> tags may be provided.
              Special tags are prefixed with an underscore character. -->
         <instance>
           <!-- The instance's CIM classname -->
           <_classname>Linux_ComputerSystem</_classname>
           <!-- A set of this instances identifying keys. Always provided, regardless of property filters.
                Within here, each key is provided as <KeyName>VALUE</KeyName> with the VALUE enclosed as CDATA. -->
           <_key>
             <CreationClassName><![CDATA[Linux_ComputerSystem]]></CreationClassName>
             <Name><![CDATA[runtime]]></Name>
           </_key>
           <!-- Each property that matches the query's property filter will be provided here, in the same format as keys;
                As <PropertyName>VALUE<PropertyName> where VALUE is enclosed as CDATA -->
           <PrimaryOwnerContact><![CDATA[root@runtime]]></PrimaryOwnerContact>
         </instance>
       </result>
     </cimquery>
     </cimqueryset>