Probe CIM

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 9 min. de leitura
  • O probe CIM usa protocolos WBEM para consultar um servidor CIM específico, o CIM Object Manager, para 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)
    port 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 do 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 linguagem de consulta intermediária CIM (CimIQL) é uma linguagem intermediária projetada para simplificar o processo de consulta de provedores CIM.

    Atualmente, 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:
    O CimIQL se expressa como "simicle".

    Sintaxe CimIQL

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

    Tabela 2. Descrições do elemento da sintaxe CimIQL
    Elemento Descrição
    Declaração O elemento mais básico do CimIQL é uma válida. Uma declaração contém várias consultas delimitadas por um ponto final. 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 CimIQL.
    Token de operação O primeiro token de cada consulta deve ser um , que representa a operação lógica geral a ser realizada.
    Token de 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 operações principais a seguir tem uma contraparte no padrão CIM Operations over HTTP.

    Tabela 3. Resumo de 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.

    EnumerarInstances
    objeto de classe Enumerar objetos associados

    Recupera objetos associados a cada resultado da consulta anterior.

    Associadores
    resultados de declaração Substituição

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

    Referenciar os resultados de uma declaração nomeada

    Obter token de 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. Esse token também é conhecido como .
    • O<classname> é o nome da classe CIM que faz distinção entre maiúsculas e minúsculas do objeto desejado. Por padrão, os objetos da classe especificada e de todas as classes estendidas são recuperados.
    • Os tokens de chave e de parâmetro são colocados entre colchetes { ... }.
    • Este token deve ser usado somente como a primeira consulta em uma declaração.
    • Retorna: objeto de classe
    • Exemplo:
      CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.*

    Token de enumerar 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. Esse token também é conhecido como .
    • Os tokens de condição e os tokens de parâmetro são colocados entre dois pares de colchetes {{ ... }}. Os colchetes serão opcionais se não houver condições ou parâmetros necessários.
    • O<classname> é o nome da classe CIM que faz distinção entre maiúsculas e minúsculas dos objetos desejados. Por padrão, os objetos da classe especificada e de todas as classes estendidas são recuperados.
    • O token de índice é opcional.
    • Este token deve ser usado somente 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 colchetes {{ ... }}. Os colchetes serão opcionais se não houver filtros de propriedades ou parâmetros necessários.
    • O<association classname> é o nome da classe de muitos para muitos ou de um para muitos que associa dois objetos. Por padrão, os objetos da classe especificada e de todas as 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 para a 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 para um único objeto no índice inteiro especificado.

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

    Corresponde a uma propriedade de objeto designada como chave por 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 por<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 de delimitador de consulta

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

    Token de índice

    [índice]
    • Reduz os resultados de uma consulta anterior para 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 chave por valor exato.
    • O<key name> é o nome da propriedade usada como 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 iniquidade (!=).
    • O<enclosed value> deve ser um dos seguintes:
      • Valor literal entre aspas simples ' ... '. Por exemplo, foo='bar'
      • Expressão regular, entre um par de barras / ... /. Por exemplo, foo=/bar.*/
    • Exemplo:
      CIM_ComputerSystem{{Name!='runtime'}}.*

    Token de Parâmetro

    <parameter name>:'<value> '
    • Passa um parâmetro por<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 CimIQL
    Ordem Declaraçã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.PrimaryProprietárioContato 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 de nome de "tempo de execução".

    O token de filtro {{ }} filtra as 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 as 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 das operações segue a sintaxe da consulta.
    1. Servidor deconsulta para todos os CIM_ComputerSystem e descendentes.
    2. Filtre os resultados com base na propriedade Nome.
    3. Recupere a segunda instância que passou no filtro.
    7 CIM_ComputerSystem.CIM_RunningOS[0].Name

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

    O token intermediário, CIM_RunningOS, é o nome da classe do associador, não o resultado final.

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

    Resultados do CimIQL

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

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