Sonde CIM
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 :
| 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.
Syntaxe CimIQL
La syntaxe CimIQL se compose de plusieurs éléments, notamment d'une requête et de différents jetons.
| É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.
| 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
- 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
- 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
- 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
- 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.
| 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
- 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
- Sépare les requêtes.
- Exemple :
CIM_ComputerSystem.PrimaryOwnerContact
Jeton d'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é
- 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
- 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
- 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.
| 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.
|
| 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, où 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>.
<!-- 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>