ServiceNow CMDB へのエクスポート

このドキュメントは外部ソースを参照しています。 Nexthink はサードパーティのドキュメントの正確性や、このページに記載されている情報に矛盾を生じさせる可能性のある外部の更新または変更を制御することはできません。 エラーや矛盾をNexthink サポートに報告してください。

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

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

  • Nexthink webインターフェース内の各資産と関係を単一のデータエクスポーター内で追加する

  • ペイロード構造を配列を持つJSONオブジェクトとして設定する

  • 開発チームのみがアクセス可能なNexthinkインスタンスの空のCMDBでテストを行う

前提条件

ServiceNowインテグレーションを実行するためには、次のコンポーネントが必要です:

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

  • ServiceNowのインスタンス。

  • Nexthink webインターフェースでServiceNowエンドポイント_insertMultiple_用のコネクタ資格情報

  • Nexthink webインターフェースのHTTP Data Exporter

  • CMDB戦略。 MDB戦略と計画ドキュメントを参照してください。

  • データインポートプロセスに関与するユーザーのための、対象テーブルのACLルールに必要なロールのコンプライアンス。

ServiceNow CMDBのためのNexthink推奨設定

次のテーブルは、データエクスポートスケジューリングとデータボリュームの推奨される組み合わせを示しています。

以下の推奨制限を超えるボリュームについて、Nexthinkは次のデータエクスポーターの実行前にデータ取り込みを完了することを保証できません。

つまり、一週間でNexthinkからServiceNowに3.5百万件以上のレコードを直接エクスポートしてはいけません。

データエクスポートの頻度
送信レコードの推奨最大数

毎時

最大25Kレコードまで

毎日

最大600Kレコードまで

毎週

最大3.5Mレコードまで

NQL APIによって返される最大レコード数は1回の呼び出しで100万件です。

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

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

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

ServiceNow基本設定

以下に記載されている手順は、基本的なServiceNowの設定の簡単なサマリーを提供します。

上記のステップをクリックすると、特定の指示にジャンプします。

ServiceNowインスタンスでタイムアウト設定を変更する

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

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

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

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

  2. 名前で cmdb_rel_user_type という値を検索します。\

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

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

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

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

リソースをData Exporterに設定するために、インポートセットを作成することは必須です。

インポートセットテーブルを作成する方法は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のWebインターフェースのInvestigationsモジュールで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 などの既存のServiceNowテーブルのフィールド間の関係を決定する一連のフィールドマップです。

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

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

  1. システムインポートセット > 変換マップの作成 に移動することもできます。

    • どちらのオプションも、必要なすべての必須フィールドを入力する必要があるフォームを持つページにリダイレクトされます。

  1. 以下の表に従ってフォームを完成させます:

フィールド
説明

名前

変換マップの一意の名前

ソーステーブル

データソースで生成されたインポートしたデータのステージングテーブル

ターゲットテーブル

すべてのデータが格納される最終テーブル

  1. 送信をクリックし、フィールドの変換を作成する準備が整いました。

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

新しいフィールドマップセクションでは、ソーススクリプトの使用のボックスをチェックするかチェックしないかのいずれかで変換を設定できます。

ソーススクリプトオプションがチェックされていないときの変換

  1. ソースフィールドからターゲットフィールドへ何も変更せずに値をコピーします。

  2. 以下の表に従ってフィールドを完成させます:

フィールド
説明

ソースフィールド

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

ターゲットフィールド

値を格納するための選択したターゲットテーブル(最終テーブル)からのフィールド。

合成

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

ソーススクリプトオプションがチェックされているときの変換

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

以下の表に従ってフィールドを完成させます:

フィールド
説明

ターゲットフィールド

値を格納するための選択したターゲットテーブル(最終テーブル)からのフィールド。

合成

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

ソーススクリプト

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

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

ターゲットテーブルのいくつかのフィールドは、会社、ユーザー、その他の参照のように他のテーブルへの外部参照である可能性があります。 これらのフィールドを選択すると、新しいオプションである選択肢アクションが有効になります。

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

説明

作成

システムは参照テーブル(製造元、ユーザー、その他)の新しいレコードを作成します。 ソースフィールドからの値とともに。 ターゲットテーブルはこの新しいレコードを参照します。

無視

システムは値を無視し、最終テーブルのカラムは空のままになります。

拒否

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

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

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

さらに、ServiceNow インストールガイドにある一般的な API 呼び出しで利用可能な更新セットパッケージをレビューすることもできます。

ServiceNow CMDB 用 HTTP API データエクスポーターの設定 Nexthink

  • HTTP API エクスポータードキュメントに記載の手順に従って、新しいデータエクスポーターを作成します。

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

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

    • メソッド: POST。

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

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

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

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

    • ペイロード: エクスポートする要素を1つだけ指定し、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 web インターフェースで以下のコンポーネントを設定してください:

    • ServiceNow の認証情報

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

  2. ServiceNow 上で以下のコンポーネントを設定してください:

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

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

HTTP データエクスポーターのテスト

データタブで設定されたクエリを実行するために最大20件のレコードをテストロードボタンをクリックしてください。

HTTP API エクスポーターのドキュメントを参照して、最大20件のレコードのテストロードの詳細をご覧ください。

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

  1. インポートセットテーブルの名前をコピーしてください。 例えば、x_nexsa_g_api_call_import_set_workstation

  2. ServiceNow インターフェースの左側のエクスプローラフィールドに Import Set と入力してください。

  3. Advanced オプション内の Import Set をクリックしてください。

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

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

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

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

    • インポートセットテーブルが作成された時期を確認してください。

    • ロード完了時間を確認してください。

    • ロード実行時間を確認してください。

  • 詳細ページの下部に以下の情報を持つ3つのタブがあります:

Import Set Run: 挿入/更新されたレコード数、エラー数、および適用された変換マップなどのプロセスに関する統計。

Import Set Rows: 最終テーブルの内容。 この行のいずれかをクリックして、保存された最終レコードを表示してください。

Import log: テスト中に追跡されたログ。

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

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

カスタム変換

ServiceNow ドキュメンテーションで変換マップを次のように定義しています:

フィールドマップのセットである変換マップは、インポートセットのフィールドと既存の ServiceNow テーブルのフィールド間の関係を決定します。

変換用のソーススクリプトの使用オプションがチェックされた場合のセクションで説明されているように、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 の Generic APIコールインストールガイド内のアップデートセットパッケージに含まれています。

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

インテグレーションプロセスの終了時にフィールドに値が期待されるかもしれませんが、そのフィールドが空です。

この問題は、インテグレーションのさまざまな部分でのネーミングの問題が原因である可能性が高いです。 すべてが正しく名前付けされ、期待される情報が正しい場所にあることを確認するために、以下の手順に従ってください。

以下の例では device.group_name フィールドをデモの目的で使用します。

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

  1. 問題のフィールドがペイロード (JSON) の一部であり、データモデルの正しいフィールドによって入力されていることを確認します。 この情報は、Nexthink Data Exporter ページ > データタブにあります。

  1. Nexthink Investigations で、問題のフィールドがいくつかの情報を含んでいることを確認してください。

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

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

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

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

  4. フィールドの名前をクリックします。 カラムラベルは、Nexthink Data Exporter に設定されているペイロードのプロパティと等しくする必要があります。

  1. そのフィールドに対して変換セットが存在することを確認してください。

  2. System Import Sets > Administration > Transform maps の下のステージングテーブルに関連付けられた目的の変換マップを見つけ、その名前のリンクをクリックします。

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

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

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

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

CIタイプをインポートするにはどうすればいいですか?

CIタイプをインポートするには、このドキュメントのConfiguring Data Exporter in Nexthinkセクションで説明されたようにデータエクスポーターを設定する必要があります。 生成されたペイロードが変換マップに設定されたフィールドと一致することを確認してください。

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

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

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

最終テーブルで新しいレコードが作成された際に特定の値を検証するビジネスルールがある場合、これはエラーを引き起こす可能性があります。

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

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

プロセスは、Creating an import set table in ServiceNowセクションで説明されているものと非常に類似しています。

  1. インポートセットテーブルを設定するために使用したデータソースを開きます。

  2. インポートセットテーブルを修正するには:

    1. インポートセットテーブルを作成するためにファイルを添付した場合、Nexthink web インターフェースから新しい列を含む新しいファイルを添付し、20件のレコードで再度テストロードを実行します。

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

  3. 新しい列をインポートセットテーブルの一部として最終テーブルに変換マップを修正します。

  4. 新しいフィールドを含めるように Nexthink データエクスポーターのペイロードを修正してください。

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

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

  7. ServiceNow の最終テーブルに新しい列が適切に入力されていることを確認します。

データをインポートするときに sys_choice フィールドはどうなりますか?

参照フィールドと同様に、sys_choice テーブルは、挿入された値がターゲットクラスの sys_choice テーブルにすでにエントリを持っている場合、異なる動作をします。

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

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

    青ケースの選択

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

他のインポートメカニズムが同時に動作している場合はどうなりますか?

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

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

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

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

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

ネットワーク/サーバーの問題で Data Exporter が第三者ツールに到達できなかった場合はどうなりますか?

Data Exporter が第三者ツールに到達できない場合、NQL クエリスケジューラーからエクスポートされた情報は失われます。

Last updated