Probe CIM

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 9 min. de leitura
  • O probe CIM usa protocolos WBEM para consultar um servidor CIM específico, o CIM Object Manager, em busca de um conjunto de objetos de dados e propriedades.

    Para obter instruções sobre como configurar parâmetros de probe, consulte Definir parâmetros de probe.

    Os seguintes parâmetros podem ser passados para o probe CIM:

    Tabela 1. Probe CIM
    Parâmetro Descrição Valor padrão
    origem [Obrigatório] O host inicial ao qual se conectar. Nenhum(a)
    porta A porta à qual se conectar. Se estiver vazio, o valor será determinado pelo parâmetro "schema": http = 5988, https = 5989. 5988 ou 5989
    esquema [Obrigatório] O esquema a ser usado: '"http"' ou '"https"'. http
    namespace [Obrigatório] O namespace CIM. Pode ser substituído por uma consulta. Nenhum(a)
    consultas [Obrigatório] Uma lista delimitada por ponto e vírgula de consultas de probe CIM para processar e retornar resultados. Nenhum(a)
    novas tentativas O número de vezes para tentar novamente uma consulta se ela falhar devido a problemas de conectividade de rede. 2
    connection_timeout O número de milissegundos que o probe tem para se conectar a um servidor. 5000
    soquete_timeout O número de milissegundos que o probe tem para ler dados. 5000

    A linguagem de consulta intermediária CIM (CimIQL) usa chaves, filtros e referência com pontos para percorrer o esquema CIM.

    Expansão de parâmetro

    A linguagem de consulta CIM oferece suporte à expansão de parâmetro de probe pré-processada SNC padrão. Coloque variáveis em consultas encapsulando seus nomes como este:

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

    O texto ${foobar} é substituído pelo conteúdo do parâmetro foobarprobe passado para o probe CIM; da mesma forma para barfoo.

    CIMIQL

    A CIM Intermediate Query Language (CimIQL) é uma linguagem intermediária projetada para simplificar o processo de consulta de provedores de CIM.

    No momento, o CimIQL oferece suporte à pilha de protocolos padrão do Web-Based Enterprise Management (WBEM), mas outros, como o Web Services-Management (WS-MAN), podem ser adicionados no futuro. A sintaxe da linguagem de consulta é emprestada de elementos da linguagem de consulta WMI de MicrosoftUNIXe do comando wbemcli de []. A biblioteca CimIQL é uma implementação Java pura.

    Nota:
    Pronuncia-se CimIQL "simicle".

    Sintaxe do CimIQL

    A sintaxe da CimIQL consiste em vários elementos, incluindo uma consulta e diferentes tokens.

    Tabela 2. Descrições do elemento de sintaxe da CimIQL
    Elemento Descrição
    Declaração O elemento mais básico da CimIQL é uma válida. Uma declaração contém várias consultas delimitadas por um ponto. caractere.
    Consulta Uma representa uma única solicitação independente de protocolo de alto nível. Cada consulta é composta por componentes de linguagem aninhados e subcomponentes conhecidos como tokens.
    Token Um descreve um aspecto lexical específico da sintaxe da CimIQL.
    Token de operação O primeiro token de cada consulta deve ser um , que representa a operação lógica geral a ser executada.
    Token do componente Um é um subcomponente de um token de operação.
    Resultado Cada consulta é emparelhada com um resultado, que é fornecido como entrada para a próxima consulta na declaração. Um é composto por um conjunto de objetos e suas propriedades.

    Tokens de operação CimIQL

    O probe CimIQL requer tokens de operação.

    Cada uma das seguintes operações principais tem uma contraparte no padrão Operações CIM sobre HTTP.

    Tabela 3. Resumo do token de operação da CimIQL
    Retornar Valor Detalhes Operação CIM equivalente sobre HTTP
    objeto de classe Obter objeto

    Recupera um único objeto de uma classe específica especificando todas as suas chaves exclusivas (como tokens de chave) e quaisquer tokens de parâmetroopcionais, separados por vírgulas.

    Obter instância
    objeto de classe Enumerar objetos

    Recupera objetos que correspondem a um conjunto de tokens de condição e de parâmetro.

    Enumerar instâncias
    objeto de classe Enumerar objetos associados

    Recupera objetos associados a cada resultado da consulta anterior.

    Associadores
    resultados da declaração Substituição

    Um token não operacional que alimenta os resultados de uma declaração nomeada anterior como entrada na próxima consulta de sua própria declaração.

    Referenciar os resultados de uma declaração nomeada

    Obter token do objeto

    <classname>{<key token> ,<parameter token> ,...}
    • Recupera um único objeto de uma classe específica especificando todas as suas chaves exclusivas (como tokens dechavetokens de chave ) e quaisquer tokens de parâmetroopcionais, separados por vírgulas. Este token também é conhecido como .
    • O<classname> é o nome da classe CIM que diferencia maiúsculas de minúsculas do objeto desejado. Por padrão, os objetos da classe especificada e de quaisquer classes estendidas são recuperados.
    • Os tokens de chave e de parâmetro são delimitados por um único par de chaves { ... }.
    • Este token só deve ser usado como a primeira consulta em uma declaração.
    • Retorna: objeto de classe
    • Exemplo:
      CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.*

    Enumerar token de objetos

    <classname>{{<condition token> ,<parameter token> ,...}}<array index token> OU
    • Recupera objetos que correspondem a um conjunto de tokens de condição e de parâmetro. Este token também é conhecido como o .
    • Os tokens de condição e os tokens de parâmetro são colocados entre dois pares de chaves {{ ... }}. Os colchetes são opcionais se não houver condições ou parâmetros necessários.
    • O<classname> é o nome da classe CIM que diferencia maiúsculas de minúsculas dos objetos desejados. Por padrão, os objetos da classe especificada e de quaisquer classes estendidas são recuperados.
    • O token de índice é opcional.
    • Este token só deve ser usado como a primeira consulta em uma declaração.
    • Retorna: objeto de classe
    • Exemplo:
      CIM_ComputerSystem{{Name!='runtime'}}.*

    Enumerar token de objetos associados

    <association classname>{{<property filter token> ,<parameter token> ,...}}<array index token> OU
    • Recupera objetos associados a cada resultado da consulta anterior.
    • Os tokens de condição e os tokens de parâmetro são colocados entre dois pares de chaves {{ ... }}. Os colchetes são opcionais se não houver filtros de propriedades ou parâmetros necessários.
    • O<association classname> é o nome da classe many-to-many ou one-to-many que associa dois objetos. Por padrão, os objetos da classe especificada e de quaisquer classes estendidas são recuperados.
    • O<parameter token> , ResultClass, pode ser especificado para filtrar resultados com base no nome da classe do objeto resultante.
    • O token de índice é opcional.
    • Este token não deve ser usado como a primeira consulta em uma declaração.
    • Retorna: objeto de classe
    • Exemplo:
      CIM_ComputerSystem{{Name='runtime'}}[2].*

    Token de substituição

    ${<statement name> }
    • Um token não operacional que alimenta os resultados de uma declaração nomeada anterior como entrada na próxima consulta de sua própria declaração.
    • Retorna: vazio
    • Exemplo:
      $(lastComputer).ElementName

    Tokens do componente CimIQL

    O probe CimIQL requer tokens de componente, que são subcomponentes de tokens operacionais.

    Os tokens a seguir são subcomponentes dos tokens de operação.
    Tabela 4. Resumo do token do componente CimIQL
    Token Detalhes
    Token de propriedades * OU<property name> , ,...

    Especifica quais propriedades devem ser retornadas para cada objeto do conjunto de resultados final.

    Token do delimitador de de consulta . (Período)

    Separa consultas.

    Token Token de índice [índice]

    Reduz os resultados de uma consulta anterior a um único objeto no índice inteiro especificado.

    Token de Token de chave <key name>='<value> '

    Corresponde a uma propriedade de objeto designada como uma chave pelo valor exato.

    Token Token de condição <property name><conditional operator><enclosed value>

    Corresponde a uma única propriedade de um objeto com base na condição especificada.

    Token Token de parâmetro <parameter name>:'<value> '

    Passa um parâmetro até<parameter name> à operação que está sendo chamada. O parâmetro pode ser consumido durante o pré-processamento do CimIQL ou pelo CIMOM por meio de solicitação, dependendo do parâmetro.

    Token de propriedades

    * OU<property name> , ,...
    • Especifica quais propriedades devem ser retornadas para cada objeto do conjunto de resultados final.
    • O curinga * retorna todas as propriedades disponíveis. Caso contrário, cada nome de propriedade desejado será fornecido em uma lista separada por vírgulas.
    • Este token é necessário no final de cada declaração.
    • Exemplo:
      CIM_ComputerSystem[0].*

    Token do delimitador de consulta

    . (Período)
    • Separa consultas.
    • Exemplo:
      CIM_ComputerSystem.PrimaryOwnerContact

    Token de índice

    [índice]
    • Reduz os resultados de uma consulta anterior a um único objeto no índice inteiro especificado.
    • Este token é sempre opcional.
    • Exemplo:
      CIM_ComputerSystem[0].*

    Token de chave

    <key name>='<value> '
    • Corresponde a uma propriedade de objeto designada como uma chave pelo valor exato.
    • O<key name> é o nome da propriedade usada como uma chave.
    • Exemplo:
      CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.*

    Token de condição

    <property name><conditional operator><enclosed value>
    • Corresponde a uma única propriedade de um objeto com base na condição especificada.
    • O<property name> é o nome da propriedade a ser correspondida.
    • O<conditional operator> determina como o valor real da propriedade é comparado ao valor esperado. Os operadores disponíveis são igualdade (=) e inequação (!=).
    • O<enclosed value> deve ser um dos seguintes:
      • Valor literal entre aspas simples ' ... '. Por exemplo, foo='bar'
      • Expressão regular, entre barras / ... /. Por exemplo, foo=/bar.*/
    • Exemplo:
      CIM_ComputerSystem{{Name!='runtime'}}.*

    Token de Parâmetro

    <parameter name>:'<value> '
    • Passa um parâmetro até<parameter name> à operação que está sendo chamada. O parâmetro pode ser consumido durante o pré-processamento do CimIQL ou pelo CIMOM (Common Information Model Object Manager) por meio de solicitação, dependendo do parâmetro.
    • Exemplo:
      CIM_ComputerSystem.CIM_RunningOS{{ResultClass:'Win32_ComputerSystem'}}.*

    Tutorial do CimIQL

    Este é um tutorial por exemplo em que cada exemplo se baseia no exemplo anterior.

    Tabela 5. Tutorial da CimIQL
    Ordem Instrução CimIQL Resultado
    1 CIM_ComputerSystem[0].* Recupera o primeiro resultado de todas as instâncias de CIM_ComputerSystem e seus descendentes. Recupera todas as propriedades.
    2 CIM_ComputerSystem.PrimaryOwnerContact Recupera todas as instâncias de CIM_ComputerSystem e seus descendentes. Recupera apenas uma propriedade, PrimaryOwnerContact.
    3 CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.* Recupera uma única instância exclusiva de CIM_ComputerSystem e seus descendentes. Todos os tokens de chave devem ser especificados no token de identidade{ } .
    4 CIM_ComputerSystem{{Name!='runtime'}}.*

    Recupera todas as instâncias e descendentes de CIM_ComputerSystem que não têm uma propriedade Nome de "tempo de execução".

    O token de filtro {{ }} filtra instâncias que não contêm todas as propriedades/chaves especificadas.

    5 CIM_ComputerSystem{{Name=/^run.*$/}.*
    Recupera todas as instâncias e descendentes de CIM_ComputerSystem que têm um valor correspondente à expressão regular contida nos caracteres / /.
    Nota:
    A expressão regular não requer aspas simples.

    O token de filtro {{ }} filtra instâncias que não contêm todas as propriedades/chaves especificadas.

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

    Recupera o segundo resultado de todas as instâncias de CIM_ComputerSystem e seus descendentes em que as instâncias têm uma propriedade Nome de "tempo de execução".

    A ordem de operações segue a sintaxe da consulta.
    1. Servidor deconsulta para todos os CIM_ComputerSystem e descendentes.
    2. Filtrar resultados com base na propriedade Nome.
    3. Recupere a segunda instância que passou no filtro.
    7 CIM_ComputerSystem.CIM_RunningOS[0].Nome

    Recupera a propriedade Nome da primeira instância CIM_OperatingSystem de cada instância CIM_ComputerSystem.

    O token do meio, CIM_RunningOS, é o nome da classe do Associador, não o resultado final.

    8 CIM_ComputerSystem.CIM_RunningOS{{Nome=/CentOS{}}[0].Nome Recupera a propriedade Nome da primeira instância CIM_OperatingSystem de cada instância CIM_ComputerSystem, em que cada instância CIM_OperatingSystem tem uma propriedade Nome que contém "CentOS".

    Resultados da CimIQL

    Os resultados da Probe CIM são passados para o sensor da probe como um documento XML incorporado ao elemento <output>.

    A seguir está um exemplo comentado de um resultado em lote de 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>