メインコンテンツへスキップ

PCもサーバも束ねる Computer(cmdb_ci_computer)


    ServiceNow の CMDB を触っていると、あることに気づきます。サーバには cmdb_ci_server、データベースには cmdb_ci_db_instance といった具合に、「モノ」ごとに専用テーブルが用意されています。ですが、その一段上にはもっと広い共通クラスが隠れています。それが、PC・ノート・仮想マシン・サーバまでを束ねる cmdb_ci_computer(画面ラベルは Computer) です。

    以前の記事でサーバ CI クラス cmdb_ci_serverを調べたとき、あることが分かりました。os / cpu_count / ram / disk_space といった「サーバらしい項目」は、実は cmdb_ci_server のものではありません。一段上の Computer 由来でした。この記事では、その「一段上」である cmdb_ci_computer を PDI(Zurich / OOTB)で実際に開きます。何を定義していて、どんなサブクラスを束ねているのか、そして cmdb_ci_server とどう役割分担しているのかを、件数やフィールド数の実測値とともに確認します。

    この記事は、ServiceNow の画面操作には慣れたが、CMDB の CI クラスがどう積み上がっているのかをこれから整理したい管理者・開発者を想定しています。

    この記事で分かること

    • cmdb_ci_computer は cmdb → cmdb_ci → cmdb_ci_hardware → cmdb_ci_computer の4段で継承された構造であること

    • それが PC・サーバ・仮想マシンに共通する計算機共通クラスであること

    • フォームに並ぶ 107フィールドのうち、cmdb_ci_computer 自身が定義するのは21で、その中身が os・cpu・ram・disk_space であること

    • それらが サーバにも PC にも仮想マシンにも継承される「計算機の共通項」であること

    • PDI 実機の コンピュータ855件のクラス別・OS別の内訳(主役は実はサーバではなく PC)

    • cmdb_ci_computer の下にある Server / Personal Computer / Cisco UCS Blade などの直接サブクラス

    • 親クラス cmdb_ci_computer と子の一種 cmdb_ci_server の役割分担

    この記事の内容は ServiceNow の PDI(Personal Developer Instance)Zurich(ズーリッヒ)リリースの OOTB(初期設定)で確認した個人メモです。本番環境やカスタマイズ済み環境では、フィールド構成・件数・OS の分布が異なります。


    コンピュータ CI クラス cmdb_ci_computer とは

    cmdb_ci_computer は、CPU と OS を持つ機械を1台=1レコードで記録する具象テーブルです。アプリナビゲーターから「Configuration > Computers」を開くと、PDI(Zurich / OOTB)にはすでに大量のコンピュータが登録されています。下の画面は、その一覧を sys_class_name(クラス)でグループ化したものです。


    画像

    PDI のコンピュータ CI はサブクラスを含めて 合計855件でした。一覧の中に Computer・Server・Windows Server・UNIX Server・Storage Switch など複数のクラスが混在している点に注目してください。これは cmdb_ci_computer が単なる1テーブルではなく、その下にサーバや PC を束ねるクラス階層の節(ノード)であることを示しています。


    cmdb_ci_computer は4段の継承でできている

    cmdb_ci_computer の継承元(super_class)を実機で上方向にたどると、次の 4段のチェーンになっていました。


    画像
    • cmdb(Base Configuration Item) … super_class が空のルート基底テーブル

    • cmdb_ci(Configuration Item) … CI共通項を持つCMDBの中心テーブル

    • cmdb_ci_hardware(Hardware) … 物理ハードウェア共通の層

    • cmdb_ci_computer(Computer) … PC・ノート・仮想マシン・サーバなど「計算機」共通の層(この記事の主役)

    実機でテーブル定義(sys_db_object)を開くと、cmdb_ci_computer の Extends table(継承元)が Hardware になっていることが確認できます。


    画像

    サーバ CI クラスの記事は、この続きを扱っています。cmdb_ci_server がこの cmdb_ci_computer をさらに継承して5段目になる、という話です。つまり cmdb_ci_computer は継承チェーンのちょうど真ん中にいる、橋渡し役のクラスです。


    フィールドの大半は「継承」されたもの

    各レベルがそのレベルで足す固有フィールド数を実測すると、積み上げの構造がはっきりします。


    画像

    cmdb_ci_computer のフォームには 累計107個のフィールドが並びます。内訳は cmdb が47・cmdb_ci が34・hardware が5、そして cmdb_ci_computer 自身は21個です。実機で sys_dictionary を name=cmdb_ci_computer で絞ると、この107フィールドが一覧で確認できます。pdi_client の dict も同じく継承を含む累計を返すため、「そのレベル固有」は隣接レベルの差で算出しました。


    画像

    cmdb_ci_computer が足す21フィールド=os・cpu・ram

    では、cmdb_ci_computer 自身が足す21フィールドとは何か。実機で hardware との差を取ると、その中身は OS・CPU・記憶装置まわりにきれいに分かれていました。


    画像


    画像
    • OS系(5) … os / os_version / os_service_pack / os_address_width / os_domain

    • CPU系(7) … cpu_name / cpu_count / cpu_core_count / cpu_core_thread

    cpu_speed / cpu_type / cpu_manufacturer

    • 記憶・筐体系(9) … ram(MB)/ disk_space(GB)/ virtual(仮想か)/ chassis_type / form_factor

    cd_rom / cd_speed / floppy / object_id

    ここが今回いちばん大事なポイントです。os・cpu・ram・disk_space は「サーバの属性」ではなく「計算機の共通属性」で、定義元はこの cmdb_ci_computer です。だからこそ、これらは下にぶら下がる cmdb_ci_server だけでなく、PC(cmdb_ci_pc_hardware)や仮想マシンにも同じように継承されます。サーバ CI クラスの記事で「サーバ固有に見えて実は Computer 由来」と書いた項目があります。その“本籍地”が、まさにここです。


    コンピュータ1台のフォームを実機で見る

    実際にコンピュータ CI を1件開くと、ここまで見た継承の積み上げが1枚のフォームに収まっているのが分かります。下は サーバではなくノート PCの「MacBook Pro 15"」(クラス=Computer、OS=Mac OS 10、メーカー=Apple)のレコードです。


    画像

    サーバ用のフォームと同じ os / cpu / ram の欄が、ノート PC のレコードにも並んでいる点に注目してください。これが「計算機共通クラス」である証拠です。なお PDI の OOTB サンプルでは、cpu_name / cpu_speed / ram / disk_space / ip_address が空のクライアント機が多いです。これらは通常 Discovery(自動検出)が投入する項目で、デモデータには入っていないためと考えられます(Discovery の具体的な動作は検証範囲外)。


    cmdb_ci_computer の下にあるサブクラス

    cmdb_ci_computer 自身も、さらに細かいサブクラスを持つ親クラスです。実機で super_class.name=cmdb_ci_computer を数えると、6個の直接サブクラスがありました。


    画像

    直接の子は6つです。前半3つは cmdb_ci_server(Server)・cmdb_ci_pc_hardware(Personal Computer)です。加えて cmdb_ci_ucs_blade(Cisco UCS Blade)も含みます。残り3つは cmdb_ci_ucs_rack_unit(Cisco UCS Rack Mount Unit)・cmdb_ci_mainframe_hardware(Mainframe Hardware)です。もう1つは cmdb_ci_storage_switch(Storage Switch)です。さらに cmdb_ci_server の下には Windows / UNIX / Linux Server などが続きます(サーバ CI クラスの記事で詳説)。cmdb_ci_computer は計算機ツリー全体の根元に近い位置にいます。


    画像

    PDI 実機の855件を、クラス別・OS別に数えると次のとおりでした。


    画像

    855件のうち 814件はクラスそのもの(Computer=PC・ノート等)です。サブクラスのサーバ系は合計40件(Server 19・Windows 8・UNIX 7・Linux 4・AIX 2)にとどまります。OS 別では Mac OS 10(462件)・Windows XP Professional(304件) が圧倒的です。cmdb_ci_computer の主役は実はサーバではなくクライアント機だと分かります。実機で一覧を os でグループ化すると、この内訳がそのまま確認できます。


    画像

    親クラス computer と子 server の役割分担

    cmdb_ci_computer(親)とcmdb_ci_server(子の一種)の関係を見ます。

    • cmdb_ci_computer(親の共通クラス) … 「計算機とは何か」を定義する層。os・cpu・ram・disk_space・virtual といった、PC でもサーバでも VM でも共通する項目を持ち、ここから下のすべてに継承されます。

    • cmdb_ci_server(その下のサーバ用の一種) … computer を継承する具象クラスです。サーバ固有の分類(classification)や DR バックアップ(dr_backup)などわずか5項目を足します。

    ざっくり言えば、cmdb_ci_computer は「計算機の共通設計図」、cmdb_ci_server は「その設計図でサーバ専用に仕立てた一種」 です。OS や CPU を「サーバの属性」と思い込みがちですが、実機で見ればそれらは1つ上の computer 層の共通項です。server はあくまでその上に薄く乗っているだけ、というのが正確な姿です。CI どうしのつながりを見るときは、さらにCI 関連(cmdb_rel_ci)を併せて読んでください。クラス階層と関連の両輪で、CMDB が立体的に見えてきます。


    実機で確認するときに見るべきURL

    今回見た画面を自分のインスタンスで開くためのURLをまとめます(<YourInstance> は置き換えてください)。

    # コンピュータ一覧をクラスでグループ化
    https://<YourInstance>/cmdb_ci_computer_list.do?sysparm_query=GROUPBYsys_class_name
    
    # コンピュータ一覧をOSでグループ化
    https://<YourInstance>/cmdb_ci_computer_list.do?sysparm_query=GROUPBYos
    
    # cmdb_ci_computer のフィールド定義(継承を含む全107件)
    https://<YourInstance>/sys_dictionary_list.do?sysparm_query=name=cmdb_ci_computer^elementISNOTEMPTY
    
    # cmdb_ci_computer の直接サブクラス
    https://<YourInstance>/sys_db_object_list.do?sysparm_query=super_class.name=cmdb_ci_computer

    まとめ

    • cmdb_ci_computer は cmdb → cmdb_ci → cmdb_ci_hardware → cmdb_ci_computer の 4段継承でできた計算機共通クラス。

    • フォームの 107フィールドのうち、cmdb_ci_computer 自身が足すのは21(os・cpu系・ram・disk_space など)。

    • これらは サーバにも PC にも仮想マシンにも継承される「計算機の共通項」。サーバ固有ではない。

    • PDI 実機のコンピュータは 855件で、814件は Computer クラスそのもの(Mac/Windows XP のクライアント機が大多数)、サーバ系は40件。

    • 直接サブクラスは Server・Personal Computer・Cisco UCS Blade など6つ。computer=親の共通クラス/server=その下の一種。

    コンピュータ CI の構造が分かると、基底 cmdb_ci・サーバ CI クラス cmdb_ci_server・CI 関連(cmdb_rel_ci)が、「基底で枠を決める → 計算機共通クラスで土台を作る → サーバ等の具象でモノを表す → 関連でつなぐ」という流れでつながって見えてきます。


    関連記事

     
     
    ServiceNowのPDI(Personal Developer Instance)を実機で観察して、Noteに記事を書いています 実装・運用・教育の現場視点で淡々と記録中です リクエストがあればその記事も書きます 個人の観察日記です

    あなたへのおすすめ