CIM 프로브

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 소요 시간: 13분
  • CIM 프로브는 WBEM 프로토콜을 사용하여 데이터 객체 및 속성 세트에 대해 특정 CIM 서버인 CIM Object Manager를 쿼리합니다.

    프로브 매개변수 구성에 대한 지침은 프로브 매개변수 설정 문서를 참조하십시오.

    다음 매개변수를 CIM 프로브에 전달할 수 있습니다.

    표 1. CIM 프로브
    매개변수 설명 기본값
    source [필수] 연결할 초기 호스트입니다. 없음
    port 연결할 포트입니다. 비어 있는 경우 값은 http = 5988, https = 5989와 같은 "schema" 매개변수에 의해 결정됩니다. 5988 또는 5989
    schema [필수] 사용할 스키마: '"http"' 또는 '"https"' http
    namespace [필수] CIM 네임스페이스입니다. 쿼리에 의해 무효화될 수 있습니다. 없음
    queries [필수] 결과를 처리하고 반환할 CIM 프로브 쿼리의 세미콜론으로 구분된 목록입니다. 없음
    retries 네트워크 연결 문제로 인해 실패하는 경우 쿼리를 다시 시도할 횟수입니다. 2
    connection_timeout 프로브가 서버에 연결하는 시간(밀리초)입니다. 5000
    socket_timeout 프로브가 데이터를 읽어야 하는 시간(밀리초)입니다. 5000

    CimIQL(CIM Intermediate Query Language)은 키, 필터 및 닷워킹을 사용하여 CIM 스키마를 통과합니다.

    매개변수 확장

    CIM 쿼리 언어는 표준 SNC 전처리 프로브 매개변수 확장을 지원합니다. 다음과 같이 변수 이름을 캡슐화하여 쿼리에 변수를 넣습니다.

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

    ${foobar} 텍스트는 CIM 프로브에 전달된 foobar 프로브 매개변수의 내용으로 대체됩니다. barfoo도 마찬가지입니다.

    CIMIQL

    CimIQL은 CIM 제공자 쿼리 프로세스를 단순화하도록 설계된 중간 언어입니다.

    CimIQL은 현재 표준 WBEM(Web-Based Enterprise Management) 프로토콜 스택을 지원하지만 WS-MAN(Web Services-Management) 등의 다른 프로토콜 스택이 향후에 추가될 수 있습니다. 쿼리 언어 구문은 Microsoft의 WMI 쿼리 언어와 UNIX의 wbemcli 명령의 요소에서 가져옵니다. CimIQL 라이브러리는 순수 Java 구현입니다.

    주:
    CimIQL은 "simicle"로 발음합니다.

    CimIQL 구문

    CimIQL 구문은 쿼리와 서로 다른 토큰을 포함한 여러 요소로 구성됩니다.

    표 2. CimIQL 구문 요소 설명
    요소 설명
    CimIQL의 가장 기본적인 요소는 올바른 입니다. 문에는 여러 쿼리가 마침표(.)로 구분되어 포함됩니다.
    쿼리 는 상위 수준의 프로토콜 독립 단일 요청을 나타냅니다. 각 쿼리는 중첩된 언어 구성요소와 토큰으로 알려진 하위 구성요소로 이루어집니다.
    토큰 은 CimIQL 구문의 특정 어휘 양상을 설명합니다.
    운영 토큰 각 쿼리의 첫 번째 토큰은 수행할 전체 논리 연산을 나타내는 이어야 합니다.
    구성요소 토큰 은 운영 토큰의 하위 구성요소입니다.
    결과 각 쿼리는 결과와 쌍을 이룬 다음 문의 다음 쿼리에 입력으로 제공됩니다. 는 객체 세트와 해당 속성으로 구성됩니다.

    CimIQL 운영 토큰

    CimIQL 프로브에는 운영 토큰이 필요합니다.

    다음의 각 핵심 운영은 HTTP를 통한 CIM 운영 표준에 대응합니다.

    표 3. CimIQL 운영 토큰 요약
    값 반환 상세 정보 동등한 HTTP를 통한 CIM 운영
    class object 객체 가져오기

    모든 고유 키(키 토큰)와 선택적 매개변수 토큰을 쉼표로 구분하여 지정하여 특정 클래스의 단일 객체를 검색합니다.

    GetInstance
    class object 객체 열거

    조건 토큰매개변수 토큰 세트와 일치하는 객체를 검색합니다.

    EnumerateInstances
    class object 연결된 객체 열거

    이전 쿼리의 각 결과와 연결된 객체를 검색합니다.

    연결자
    문 결과 대체

    이전 명명된 문의 결과를 자체 문의 다음 쿼리에 입력으로 공급하는 no-op 토큰입니다.

    명명된 문의 결과 참조

    객체 가져오기 토큰

    <classname>{<key token>,<parameter token>,...}
    • 모든 고유 키(키 토큰)와 선택적 매개변수 토큰을 쉼표로 구분하여 지정하여 특정 클래스의 단일 객체를 검색합니다. 이 토큰을 이라고도 합니다.
    • <classname>은 원하는 객체의 대/소문자를 구분하는 CIM 클래스 이름입니다. 기본적으로 지정된 클래스 및 확장 클래스의 객체는 검색됩니다.
    • 키 및 매개변수 토큰을 한 쌍의 중괄호 {...}로 묶습니다.
    • 이 토큰은 문에서 첫 번째 쿼리로 사용해야 합니다.
    • 반환: 클래스 객체
    • 예시:
      CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.*

    객체 열거 토큰

    <classname>{{<condition token>,<parameter token>,...}}<array index token> OR <classname><array index token>
    • 조건 토큰매개변수 토큰 세트와 일치하는 객체를 검색합니다. 이 토큰을 이라고도 합니다.
    • 조건 토큰과 매개변수 토큰을 두 쌍의 중괄호 {{...}}로 묶습니다. 필요한 조건이나 매개변수가 없는 경우 중괄호는 선택 사항입니다.
    • <classname>은 원하는 객체의 대/소문자를 구분하는 CIM 클래스 이름입니다. 기본적으로 지정된 클래스 및 확장 클래스의 객체는 검색됩니다.
    • 인덱스 토큰는 옵션입니다.
    • 이 토큰은 문에서 첫 번째 쿼리로 사용해야 합니다.
    • 반환: 클래스 객체
    • 예시:
      CIM_ComputerSystem{{Name!='runtime'}}.*

    연결된 객체 열거 토큰

    <association classname>{{<property filter token>,<parameter token>,...}}<array index token> OR <association classname><array index token>
    • 이전 쿼리의 각 결과와 연결된 객체를 검색합니다.
    • 조건 토큰매개변수 토큰을 두 쌍의 중괄호 {{...}}로 묶습니다. 필요한 속성 필터나 매개변수가 없는 경우 중괄호는 선택 사항입니다.
    • <association classname>은 두 객체를 함께 연결하는 다대다 또는 일대다 클래스의 이름입니다. 기본적으로 지정된 클래스 및 확장 클래스의 객체는 검색됩니다.
    • 결과 객체의 클래스 이름에 따라 결과를 필터링하도록 <parameter token>인 ResultClass를 지정할 수 있습니다.
    • 인덱스 토큰는 옵션입니다.
    • 이 토큰은 문에서 첫 번째 쿼리로 사용하면 안 됩니다.
    • 반환: 클래스 객체
    • 예시:
      CIM_ComputerSystem{{Name='runtime'}}[2].*

    대체 토큰

    ${<statement name>}
    • 이전 명명된 문의 결과를 자체 문의 다음 쿼리에 입력으로 공급하는 no-op 토큰입니다.
    • 반환: void
    • 예시:
      $(lastComputer).ElementName

    CimIQL 구성요소 토큰

    CimIQL 프로브에는 운영 토큰의 하위 구성요소인 구성요소 토큰이 필요합니다.

    다음 토큰은 운영 토큰의 하위 구성요소입니다.
    표 4. CimIQL 구성요소 토큰 요약
    토큰 상세 정보
    속성 토큰 * 또는 <property name>,<property name>,...

    최종 결과 세트의 각 객체에 대해 반환되는 속성을 지정합니다.

    쿼리 구분 기호 토큰 . (마침표)

    쿼리를 구분합니다.

    인덱스 토큰 [index]

    앞의 쿼리 결과를 지정된 정수 인덱스의 단일 객체로 줄입니다.

    키 토큰 <key name>='<value>'

    키로 지정된 객체 속성을 정확한 값과 일치시킵니다.

    조건 토큰 <property name><conditional operator><enclosed value>

    지정된 조건에 따라 객체의 단일 속성을 일치시킵니다.

    매개변수 토큰 <parameter name>:'<value>'

    호출 중인 운영에 <parameter name>으로 매개변수를 전달합니다. 매개변수는 CimIQL 전처리 중에 사용되거나 요청을 통해 CIMOM에서 사용될 수 있습니다.

    속성 토큰

    * 또는 <property name>,<property name>,...
    • 최종 결과 세트의 각 객체에 대해 반환되는 속성을 지정합니다.
    • 와일드카드 *는 사용 가능한 모든 속성을 반환합니다. 그렇지 않으면 원하는 각 속성 이름이 쉼표로 구분된 목록 내에서 제공됩니다.
    • 이 토큰은 각 문의 끝에 필요합니다.
    • 예시:
      CIM_ComputerSystem[0].*

    쿼리 구분 기호 토큰

    . (마침표)
    • 쿼리를 구분합니다.
    • 예시:
      CIM_ComputerSystem.PrimaryOwnerContact

    인덱스 토큰

    [index]
    • 앞의 쿼리 결과를 지정된 정수 인덱스의 단일 객체로 줄입니다.
    • 이 토큰은 항상 옵션입니다.
    • 예시:
      CIM_ComputerSystem[0].*

    키 토큰

    <key name>='<value>'
    • 키로 지정된 객체 속성을 정확한 값과 일치시킵니다.
    • <key name>은 키로 사용되는 속성의 이름입니다.
    • 예시:
      CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.*

    조건 토큰

    <property name><conditional operator><enclosed value>
    • 지정된 조건에 따라 객체의 단일 속성을 일치시킵니다.
    • <property name>은 일치 대상 속성의 이름입니다.
    • <conditional operator>는 속성의 실제 값이 예상 값과 비교되는 방법을 결정합니다. 사용할 수 있는 연산자는 equality(=) 및 inequality(!=)입니다.
    • <enclosed value>는 다음 중 하나여야 합니다.
      • 작은따옴표 ' ... '로 묶은 리터럴 값입니다. 예시: foo='bar'
      • 한 쌍의 슬래시 / ... /로 묶은 정규식입니다. 예시: foo=/bar.*/
    • 예시:
      CIM_ComputerSystem{{Name!='runtime'}}.*

    매개변수 토큰

    <parameter name>:'<value>'
    • 호출 중인 운영에 <parameter name>으로 매개변수를 전달합니다. 매개변수에 따라 요청을 통해 CIMOM(Common Information Model Object Manager)에 의해 또는 CimIQL 사전 처리 중 매개변수를 사용할 수 있습니다.
    • 예시:
      CIM_ComputerSystem.CIM_RunningOS{{ResultClass:'Win32_ComputerSystem'}}.*

    CimIQL 튜토리얼

    각 예가 이전 예 위에 빌드되는 예에 따른 튜토리얼입니다.

    표 5. CimIQL 튜토리얼
    순서 CimIQL 문 결과
    1 CIM_ComputerSystem[0].* CIM_ComputerSystem의 모든 인스턴스와 해당 하위 항목의 첫 번째 결과를 검색합니다. 모든 속성을 검색합니다.
    2 CIM_ComputerSystem.PrimaryOwnerContact CIM_ComputerSystem의 모든 인스턴스와 해당 하위 항목을 검색합니다. 한 가지 속성인 PrimaryOwnerContact만 검색합니다.
    3 CIM_ComputerSystem{CreationClassName='Linux_ComputerSystem',Name='runtime'}.* CIM_ComputerSystem의 고유한 단일 인스턴스와 해당 하위 항목을 검색합니다. 모든 키 토큰을 {} ID 토큰 내에 지정해야 합니다.
    4 CIM_ComputerSystem{{Name!='runtime'}}.*

    이름 속성이 'runtime'이 아닌 CIM_ComputerSystem의 모든 인스턴스와 하위 항목을 검색합니다.

    필터 토큰 {{}}은 지정된 모든 속성/키가 포함되지 않은 인스턴스를 필터링합니다.

    5 CIM_ComputerSystem{{Name=/^run.*$/}}.*
    / / 문자 내에 포함된 정규식과 값이 일치하는 CIM_ComputerSystem의 모든 인스턴스와 하위 항목을 검색합니다.
    주:
    정규식에는 작은따옴표가 필요 없습니다.

    필터 토큰 {{}}은 지정된 모든 속성/키가 포함되지 않은 인스턴스를 필터링합니다.

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

    CIM_ComputerSystem의 모든 인스턴스와 해당 하위 항목(여기에서 인스턴스의 속성 이름은 'runtime'임)의 두 번째 결과를 검색합니다.

    운영 순서는 쿼리 구문을 따릅니다.
    1. 서버에 모든 CIM_ComputerSystem 및 하위 항목을 쿼리합니다.
    2. 이름 속성을 기준으로 결과를 필터링합니다.
    3. 필터를 통과한 두 번째 인스턴스를 검색합니다.
    7 CIM_ComputerSystem.CIM_RunningOS[0].Name

    각 CIM_ComputerSystem 인스턴스의 첫 번째 CIM_OperatingSystem 인스턴스에 대한 이름 속성을 검색합니다.

    중간 토큰인 CIM_RunningOS는 최종 결과가 아니라 연결자 클래스의 이름입니다.

    8 CIM_ComputerSystem.CIM_RunningOS{{Name=/CentOS/}}[0].Name 각 CIM_ComputerSystem 인스턴스의 첫 번째 CIM_OperatingSystem 인스턴스에 대한 이름 속성을 검색합니다. 여기에서 각 CIM_OperatingSystem 인스턴스의 이름 속성에는 'CentOS'가 포함되어 있습니다.

    CimIQL 결과

    CIM 프로브 결과는 <output> 요소 내에 포함된 XML 문서로 프로브 센서에 전달됩니다.

    다음은 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>