ServiceNow CMDB へのエクスポート

このページでは、HTTP API エクスポーターをServiceNow構成管理データベース(CMDB)と統合する方法について説明しています。 したがって、このドキュメントの設定サンプルは次のコンテキストに従っています。

  • api/now/import/<staging_table>/insertMultiple エンドポイントを使用して Nexthink データを ServiceNow CMDB にエクスポートする

  • Nexthink Web インターフェース内の単一のデータエクスポーターに各アセットとリレーションシップを追加する。

  • 配信構造を配列を持つJSONオブジェクトとして設定する。

  • 開発チームだけがアクセスできるNexthinkインスタンス上で、空のCMDBを使ってテストを実施する。

前提条件

ServiceNow統合を実行するには、次のコンポーネントが必要です。

  • Nexthink プラットフォームのインスタンス。

  • ServiceNowのインスタンス。

  • Nexthink Web インターフェースでの ServiceNow エンドポイント insertMultiple 用のコネクタ認証情報

  • Nexthink Web インターフェースでのHTTPデータエクスポーター

  • CMDB ストラテジー。 MDB戦略と計画 ドキュメントを参照。

  • データインポートプロセスに関与するユーザーの目標テーブル ACL ルールに必要な役割の遵守。

ServiceNow CMDB 用の Nexthink 推奨設定

以下の表は、データエクスポートスケジューリングとデータボリュームの推奨組み合わせを示しています。

以下の推奨限界を超えるボリュームについて、Nexthink は次のデータエクスポーターの実行前にデータのインジェスチョンが完了することを保証できません。

これは、1週間で Nexthink から ServiceNow に直接3.5百万レコードを超えてエクスポートすべきではないことを意味します。

データエクスポートの再発
送信されるレコードの推奨最大数

毎時間

最大25Kレコードまで

毎日

最大600Kレコードまで

毎週

最大3.5Mレコードまで

NQL API によって返されるレコードの最大数は、1 コールあたり 100 万です。

ServiceNow が Nexthink データをインポートするために推奨する設定

Nexthinkは、ServiceNowでのデータインポートには、箱から出してすぐに使えるトランスフォームマップ手順を使用することを推奨しています。

さらに、ServiceNow統合において一般的なAPIコールを設定するために、アップデートセットパッケージを使用することができます。 ServiceNowでの一般的なAPIコールのインストールガイドを参照してください。

ServiceNow基本設定

以下のステップは、基本のServiceNow設定の簡単な概要です:

上記のステップのどれかをクリックして、特定の指示に直接ジャンプしてください。

ServiceNowインスタンス内でのタイムアウト設定の変更

  1. システム定義 > トランザクション割り当てルールモジュールに移動します。

  2. RESTインポートセットAPIリクエストのタイムアウトおよびRESTとJSONキャッチオールを探します。 **最大持続時間(秒)**の値を少なくとも_300_(5分)に変更します。

REST and JSON Catch all

アプリケーションのアクセスをCI/ユーザー関係タイプテーブルに変更中

  1. システム定義 > テーブル モジュールに移動します。

  2. cmdb_rel_user_type の値で名前を検索します。.

Tables module

3. **アプリケーションアクセス**タブに移動し、すべてのスコープに対して**読み取り可能**、**作成可能**、および**更新可能**を有効にします。\.

Application access

ServiceNowでのインポートセットテーブルの作成

インポートセットテーブルは、レコードのインポートをステージングする場所として機能します。 システムはインポートされたデータに基づいてこれらのテーブルにフィールドを自動生成するため、手動での変更は行わないでください。

必要に応じて使用できる標準のインポートセットテーブルをService nowが提供しています。 詳細については、ServiceNow ドキュメントを参照してください。

インポートセットの作成は必須です。システムはこれを使用してデータエクスポーターのリソースを設定します。

インポートセットテーブルを作成する方法は次の2つです。

  • CSVファイルを使用

  • カスタムスクリプトを使用

CSVファイルを使用してインポートセットテーブルを作成:

  1. CMDBに送信するアセットまたは関連性を含むNQLクエリを選択します。 例として、すべての Microsoft Windows ノートパソコンとデスクトップ:

```
devices
| where hardware.machine_serial_number != "" and (hardware.type == laptop or hardware.type == desktop) and operating_system.platform == Windows 
| include cpus
| compute num_of_cores = number_of_cores.count() , number_of_cpus = count(), sum_frequency = frequency.sum()
| include disks
| compute disk_capacity = capacity.sum()
| list group_name, entity, hardware.manufacturer, hardware.model , 
operating_system.architecture , hardware.machine_serial_number , 
name, hardware.memory, num_of_cores , number_of_cpus , sum_frequency ,
disk_capacity, first_seen, last_seen
| limit 1
```
  1. Nexthink のウェブインターフェイスにある調査モジュールで NQL クエリを実行し、limit 1 を追加します。

  2. 結果をエクスポートボタンを使用して CSV ファイルをエクスポートします。

  3. ServiceNow では、フィルターナビゲーターで すべて > システムインポートセット > 管理 > データソース に移動します。

  4. 新規をクリックします。

  5. フォームを記入します**。** 必要なフィールドを下の表に従って記入します。

フィールド
説明

名前

このデータソースを識別するための一意の名前。

インポートセットテーブルラベル

使用するインポートセットステージングテーブルのラベル。 例えば、nexthink_workstations

インポートセットテーブル名

これは事前に定義したテーブルラベルを使用して自動生成されます(例: u_nexthink_workstations)。 既存テーブルとの名前空間衝突を防ぎます。

タイプ

ファイル

形式

CSV

CSV区切り記号

,

  1. エクスポートした CSV ファイルを添付します。

  2. すべてのレコードを読み込むをクリックします。

詳細な手順については、ServiceNow ドキュメントを参照してください。

カスタムスクリプトを使用して新しいインポートセットテーブルを作成する

  1. フィルターナビゲーターで すべて > システムインポートセット > 管理 > データソース に移動します。

  2. 新規をクリックします。

  3. フォームを記入してください。 下の表に従って必要なフィールドを記入します。

フィールド
説明

名前

このデータソースを識別するための一意の名前。

インポートセットテーブルラベル

使用するインポートセットステージングテーブルのラベル。 たとえば、nexthink_workstations

インポートセットテーブル名

これは事前に定義したテーブルラベルを使用して自動生成されます(例: u_nexthink_workstations)。 既存テーブルとの名前空間衝突を防ぎます。

タイプ

カスタム(スクリプトで読み込み)。

データローダー

これは通常、ステージングテーブルにデータをロードするスクリプトを提供するために使用されます。 Nexthink が送信するすべてのフィールドをマップ変数の一部として追加する必要があります。 ターゲットフィールドに保存する値を返さなければなりません。

var map = {
    name: "",
    entity: "",
    model: "",
    type:"",
    os_name:""
};
import_set_table.insert(map);

})(import_set_table, data_source, import_log, last_success_import_time); |

  1. すべてのレコードを読み込むをクリックします。

  2. 提出をクリックします。

詳細な手順については、ServiceNow ドキュメントを参照してください。

  1. すべて > システムインポートセット > インポートセットテーブル に移動します。

  2. ステップ3で作成したインポートセットテーブルがリストされていることを確認します。

変換マップとして定義されている内容を示します。

変換マップとは、インポートセットのフィールドと既存の ServiceNow テーブル(例:インシデント incident やユーザー sys_user)のフィールドとの関連を決定するフィールドマップのセットです。

  1. データソースまたは変換マップモジュールから変換マップを作成します。

  2. データソースから、ページの下部に移動して新規ボタンをクリックします。

New transform
  1. システムインポートセット > 変換マップの作成に移動します。

  • どちらのオプションも、すべての必須フィールドを記入しなければならないページにリダイレクトされます。

Table transform map
  1. 下の表に従って必要なフィールドを記入します。

フィールド
説明

名前

変換マップのための一意の名前

ソーステーブル

データソースからデータがインポートされるときに作成されたステージングテーブル

ターゲットテーブル

すべてのデータが保存される最終的なテーブル

  1. 提出をクリックすると、フィールド変換の作成を進めることができます。

  2. ページの下部にあるフィールドマップセクションで、新規をクリックします。

新しいフィールドマップセクションでは、ソーススクリプトを使用するオプションをチェックすることで、2つの方法で変換を構成できます。

ソーススクリプトオプションを未チェックでの変換

Field map
  1. ソースフィールドからターゲットフィールドに、変更なしで値をコピーします。

  2. 下表に従って必要なフィールドを記入します。

フィールド
説明

ソース式

選択したステージングテーブルからの値を取得するためのフィールドです。

ターゲットフィールド

選択されたターゲットテーブル(最終テーブル)に値を保存するためのフィールドです。

コアレス

レコードの一意性を決定します。 このボックスにチェックを入れると、フィールドがプライマリキーとして使用され、レコードを挿入または変更するかどうかを検出します。

ソーススクリプトオプションをチェック済みでの変換

このオプションでは、ソーススクリプトがターゲットフィールドの値を定義します。

Source script

下表に従って必要なフィールドを記入します。

フィールド
説明

ターゲットフィールド

選択されたターゲットテーブル(最終テーブル)に値を保存するためのフィールドです。

コアレス

レコードの一意性を決定します。 このボックスにチェックを入れると、フィールドがプライマリキーとして使用され、レコードを挿入するか変更するかを検出します。

ソーススクリプト

この JavaScript メソッドは、目的のターゲットフィールドに保存する値を返す必要があります。 ソーステーブルから情報を取得するには、変数 source を使用します。

詳細については、このページのカスタム変換セクションを参照してください。

選択アクションフィールド

ターゲットテーブルの一部のフィールドは、CompanyやUsers、その他の参照のように外部参照を持つ場合があります。 これらのフィールドのいずれかを選択すると、選択アクションという新しいオプションがアクティブになります。

  1. 選択アクションの値を作成に設定します。

Choice action
Valeur
説明

作成

選択すると、現在のフィールドがターゲットテーブル内で対応する JS コードの出力値に関する参照レコードを作成します。 ソースフィールドの値を使用して、 ターゲットテーブルは、この新しいレコードを参照します。

無視

システムは値を無視し、最終テーブルの列を空のままで残します。

拒否

システムは、ソーステーブル全体のレコードを省略します。

  1. 提出をクリックすると、システムは変換マップの詳細ページにリダイレクトします。 必要なだけ多くのフィールドを追加することも、直接変換マップを保存することもできます。

詳細については、ServiceNow ドキュメントを参照してください。

さらに、ServiceNow におけるジェネリック API コールのインストールガイドで提供されているアップデートセットパッケージを確認することもできます。

  • HTTP API エクスポーター ドキュメントで説明されている手順に従って、新しいデータエクスポーターを作成します。

  • 一般タブで以下のパラメーターを設定します:

  • 資格情報: 対象のServiceNowインスタンスの資格情報。

  • メソッド: POST。

  • リソース: api/now/import/<import_set_table>/insertMultipleimport_set_tableは、ステップ3で作成および設定されたインポートセットテーブルの名前です。

  • データタブで以下のパラメーターを設定します:

  • NQLクエリ: 資産または関係をエクスポートするクエリを挿入。

  • ペイロード構造: 配列を持つJSONオブジェクト。

  • ペイロード: 出力すべき要素と、NQL クエリから取得するプレースホルダーを一つのみ指定してペイロードを作成します。 以下のJSON例を参照してください。

  • データエクスポーターを保存します。

{
 "records":[
    {
 "name": "{{device.name}}",
 "entity": "{{device.entity}}",
 "model": "{{device.hardware.model}}",
 "type": "{{device.hardware.type}}",
 "os_name": "{{device.operating_system.name}}"
    }
  ] 
}

ペイロード内のフィールド名は、インポートセットテーブルで定義されたものと一致する必要があります。

エンドツーエンドを実行する

エンドツーエンドを実行し、ワークステーション設定全体をテストします。

Nexthink と ServiceNow のエンドツーエンド の設定

  1. Nexthink ウェブインターフェイスで次のコンポーネントを設定します:

  • ServiceNow の資格情報

  • ワークステーション用データエクスポーター

  1. ServiceNowで次のコンポーネントを設定します:

  • ワークステーション用インポートセットテーブル

  • ワークステーションの作成/更新用変換マップ

HTTP データエクスポーターをテストする

データ タブに設定されたクエリを実行するには、20 レコードまでの読み込みテスト ボタンをクリックします。

20 レコードまでの読み込みテストの詳細については、HTTP API エクスポーター ドキュメントを参照してください。

ServiceNow のインポートテーブルの内容と変換結果を確認する

  1. インポートセットテーブルの名前をコピーします。 例えば、 x_nexsa_g_api_call_import_set_workstation

  2. ServiceNow インターフェイスの左側のエクスプローラーフィールドに、「インポートセット」と入力します。

  3. 詳細オプションからインポートセットをクリックします。

  4. フィルタにインポートセットテーブルを挿入して、そのテーブルに参照しているすべてのインポートセットを表示します。

Import set table

各インポートセットには、挿入されるすべてのレコードを含む番号があります。

  1. 詳細については、インポートセット番号リンクをクリックします。

  2. 詳細ページに、インポートセットに関する情報を見つけます:

  • インポートセットテーブルが作成された時点を確認します。

  • 読み込みが完了した時間を確認します。

  • 読み込み実行時間を確認します。

Import set
  • 詳細ページの下部に、次の情報を含む3つのタブがあります:

インポートセットの実行: 挿入/更新されたレコードの数、エラーの数、適用された変換マップなどのプロセスに関する統計。

Import set runs

インポートセットの行: 最終テーブルのコンテンツ。 これらの行のいずれかをクリックすると、最終保存されたレコードが表示されます。

Import set rows

インポートログ:テスト中に追跡されたログ。

Import log

ServiceNow の最終テーブルを確認してエンドツーエンドテストの結果を検証

ServiceNow の最終テーブルを確認してデータが正しく挿入されていることを確認します。

Final table

カスタム変換

ServiceNow ドキュメント で変換マップを次のように定義しています。

変換マップは、インポートセットのフィールドと ServiceNow の既存のテーブル(例:インシデント incident もしくはユーザー sys_user)のフィールド間の関係を定義するフィールドマップのセットです。

使用ソーススクリプト オプションを選択した変換セクションと説明されているように、Nexthink からの入力データを変更するソーススクリプトを有効にすることができます。

たとえば、Nexthink は RAM メモリデータをバイト単位で保存しますが、ServiceNow は同じデータをメガバイト単位で保存します。 データを正しく保存するには、バイトからメガバイトに変換する必要があります。

以下に、入力データを変換するために使用できる基本的なスクリプトの例を示します。

バイトをメガバイトに変換

JS
return source.[FIELD_NAME] / Math.pow(1024, 2);

バイトをギガバイトに変換

JS
return source.[FIELD_NAME] / Math.pow(1024, 3);

2 つのフィールドを連結

JS
return source.[FIELD_NAME_1] + " " + source.[FIELD_NAME_2];

文字列の前半を挿入

CODE
var value = source.[FIELD_NAME];
return value.split([SEPARATOR])[0];

上記で説明したカスタム変換は、ServiceNow インストールガイドでの一般 API 呼び出しの更新セットパッケージに含まれています。

ターゲット テーブルの空フィールドに関するトラブルシューティング ガイド

統合プロセスの終わりまでにフィールドに値があると期待されるかもしれませんが、そのフィールドは空のままです。

この問題は、統合のさまざまな部分での命名の問題が原因である可能性が最も高いです。 以下の手順を実行して、すべてが正しく命名され、期待される情報が正しい位置にあることを確認してください。

次の例では、デモンストレーション目的で device.group_name フィールドを使用しています。

Nexthink のトラブルシューティング

  1. 環境フィールドがペイロード (JSON) の一部であり、データモデルからの正しいフィールドで埋められていることを確認します。 この情報は、Nexthink データエクスポーターのページ > データ タブで確認できます。

NQL query
  1. Nexthink 調査で、対象のフィールドに情報が含まれていることを確認します。

NQL editor

ServiceNow のトラブルシューティング

  1. 問題のフィールドがステージング テーブルに存在し、名前がペイロードの名前と一致していることを確認します。

  2. システム定義 > テーブルに移動します。 目的のインポートセットテーブルを検索し、その名前のリンクをクリックします。

  3. ServiceNow 詳細ページの下部で、リスト内のフィールドを検索します。

  4. フィールドの名前をクリックします。 カラムラベルが Nexthink データエクスポーターで構成されたプロパティと等しいことを確認します。

Dictionary entry
  1. そのフィールドに対する変換セットがあることを確認します。

  2. ステージング テーブルに関連付けられた目的の変換マップを、システムインポートセット > 管理 > 変換マップで検索し、名前リンクをクリックします。

  3. 次のページで、目的のフィールドをリストで検索して、その名前をクリックします。 ステージング テーブルと最終テーブルにそれぞれ構成されたフィールドを一致させたソースフィールドとターゲットフィールドが一致する項目が 1 つ存在するはずです。

  4. ソーススクリプトが値を返していることを確認するために、コードにログトレースを追加します。 以下のJavaScriptをご覧ください:

JS
answer = (function transformEntry(source) {
    gs.info("グループ名を確認: " + source.u_device_group_name);
 return source.u_device_group_name;
})(source);
Field map
  1. インポート セット テーブル内のフィールドにデータが含まれていることを確認してください。 end-to-end セクションで説明された手順に従ってください。\

Import set workstations

よくある質問 (F.A.Q.)

CI タイプをどのようにインポートするか?

CI タイプをインポートするには、Nexthink でデータエクスポーター設定する に記載されているようにデータエクスポーターを設定する必要があります。 生成されたペイロードが変換マップに構成されたフィールドと一致していることを確認します。

Nexthink の Web インターフェイスが POST リクエストをトリガーすると、システムは ServiceNow インスタンスでインポートセットを作成し、変換マップは構成されたフィールドマップに従って自動的にターゲット テーブルを更新します。

Nexthink と ServiceNow 間でペイロードフィールドにエラーが発生した場合はどうなりますか?

Nexthink ウェブインターフェースで構成された Nexthink ペイロードに device.name などの値が含まれていて、一方 ServiceNow 側のデータソースが device_name を使用して作成されている場合、リクエストが送信されると値は空のままです。

新しいレコードが最終テーブルに作成される際に特定の値を検証するビジネスルールがある場合、このエラーが発生します。

この種のエラーを避けるために、エクスポーターの自動実行をスケジューリングする前に、20 件のレコードをテストロードすることが重要です。

エンドツーエンドの設定と実行を完了した後に新しいフィールドを追加した場合はどうなりますか?

処理は、ServiceNowでのインポートセットテーブルの作成 セクションで説明されているものと非常に似ています。

  1. インポートセットテーブルの構成に使用したデータソースを開きます。

  2. インポートセットテーブルを修正します:

  3. ファイルを添付してインポートセットテーブルを作成した場合、新しいカラムを含むファイルを Nexthink ウェブインターフェースから添付し、再び 20 件のレコードをテストロードします。

  4. カスタムスクリプトを使用してインポートセットテーブルを作成した場合、マップ変数にカラムを追加して、再び 20 件のレコードをテストロードします。

  5. 最終テーブルへのインポートセットテーブルの一部として新しく追加されたカラムに変換マップを修正します。

  6. Nexthink データエクスポーターのペイロードを新しいフィールドを含むように修正します。

  7. Nexthink ウェブインターフェースで 20 件のレコードをテストロードを実行します。

  8. ServiceNow のインポートセットテーブルに新しいカラムが含まれており、それが適切に入力されていることを確認します。

  9. ServiceNow の最終テーブルに新しく追加されたカラムが適切に入力されていることを確認します。

データをインポートする際、sys_choice フィールドはどのように影響を受けますか?

参照フィールドに似て、sys_choice テーブルは、挿入された値がsys_choice テーブルに既にエントリがある場合に異なった動作をします。

2つの異なるケースがあります:

  1. 挿入された値がターゲットクラスのsys_choiceテーブルにエントリがない場合は、ServiceNow がその値をテーブルに挿入し、そのフォント色は青です。 これにより、挿入された値はレコードに存在しますが、フィールドの選択コンボボックスから手動で選択することはできません。\

Operating system

青のケース選択 2. 挿入された値がターゲットクラスのsys_choice テーブルに既にエントリがある場合、ServiceNow がその値をテーブルに挿入し、そのフォント色は黒です。 これにより、選択コンボボックスメニューからその値を選択できます。 この時点で、値がsys_choiceテーブルに存在しない場合、選択フィールドセクションで説明されているように、挿入前に作成することが可能です。\

sys-choice table
他のインポートメカニズムが同時に実行されている場合はどうなりますか?

CMBDテーブルへの異なるコネクタからデータをインポートする際、コアレースフィールドが正確に設定されていることを確認してください。

変換マップを作成する セクションで説明されているように、変換マップの動作はコアレーセスチェックボックスに依存します。 ServiceNow がターゲット テーブルで任意のレコードを見つけ、ユニークにマークされたフィールドが既にターゲット テーブルに存在する場合、CI は最後のインポート セットの情報で更新されます。

インポートプロセスを自動的に実行することはできますか?

ServiceNow でのインポート プロセスを開始するには、Nexthink からデータのエクスポートをスケジュールする必要があります。

ユーザー-ワークステーション関係が資産の挿入前に実行された場合はどうなりますか?
  • ユーザーまたはワークステーションの資産が利用可能になる前にユーザー-ワークステーション関係が実行される場合、インポート プロセスは失敗しません。 代わりに、ServiceNow はレコードを関係テーブルに挿入しますが、資産への参照は空のままです。

sys-choice table
データエクスポーターがネットワーク/サーバーの問題のためにサードパーティツールに到達できない場合はどうなりますか?

データエクスポーターがサードパーティツールに到達できない場合、NQL クエリスケジューラからエクスポートされた情報は失われます。

Last updated

Was this helpful?