スクリプトバックグラウンドでのスクリプトを使用した識別および調整エンジンのデバッグSummaryディスカバリー/SCCM の結果または識別エンジンへの呼び出しが期待どおりでない場合、つまりレコードが期待どおりに挿入/更新されない場合があります。バックグラウンドスクリプトから識別および調整エンジン (IRE) API 呼び出しを実行して、より多くのデバッグ情報をログに記録し、何が問題だったのかを特定できます。Instructions警告: このドキュメントのスクリプトは、レコードの挿入や更新を実行します。本番インスタンスでデバッグしている場合は、このような挿入/更新を実行する権限があることを確認してください。トラブルシューティングは準本番インスタンスでのみ実行することをお勧めします。本番環境ではデバッグしないことをお勧めします。別の方法として、「識別シミュレーションの構成>識別/調整>識別シミュレーション」の識別シミュレーションモジュールを使用することもできます。ただし、モジュールは、潜在的な問題の根本に到達するために必要な可能性のある同じデバッグ データを提供しません。 情報: 通常、デバッグ情報は syslog で入手できます。ただし、実行中のディスカバリージョブがある場合、データが複雑になり、実際の根本原因を見つけるのが難しい場合があります。バックグラウンドスクリプトからのデバッグステートメントはデバッグセッションに分離されているため、出力の分析がはるかに簡単です。 要件: IRE 入力ペイロードアドミン権限を持つユーザー 次のテストと例をアドミンユーザーで実行します。すべてのユーザーがスクリプトにアクセスできるわけではありません (背景情報と、これらの例で呼び出されたコードの一部) IRE 入力ペイロードは、API にフィードされるたびにログに記録されます。syslogテーブルに移動し、次のフィルタ「メッセージ」で「CONTAINS "input ="」を検索できます。ペイロードが見つからないか、過去に発生した場合は、ECC キュー入力を再処理するか、ディスカバリーを再実行します。次に、ペイロードを再度検索します。 IRE ペイロードがログに記録されない場合、およびスクリプト実行で IRE デバッグ出力を確認するには、次のシステムプロパティを追加する必要がある場合があります。 プロパティ名 = glide.cmdb.logger.source.identification_engineプロパティ値 = info,warn,error,debug,debugVerbose 警告: デバッグが完了したら、プロパティを OOB 設定の info,warn,error に戻します。 システムプロパティを追加しても syslog テーブルに IRE ペイロードが見つからない場合は、レコードを挿入/更新するプロセスで IRE API が使用されていません。 スクリプト: var payload = <IRE_Payload>;var discoverySource = "ServiceNow";var output = SNC.IdentificationEngineScriptableApi.createOrUpdateCI(discoverySource, JSON.stringify(payload));gs.print(output); 上記のスクリプトでは、IRE_Payloadは {"fld1":"val1","fld2":"val2"} の形式の JSON オブジェクト (文字列ではない) である必要があります。サンプルペイロード: {"items":[{"className":"cmdb_ci_win_server","values":{"company":"86c1f3193790200044e0bfc8bcbe5d95","install_status":"1","ip_address":"10.20.30.41","location":"a63c49b037d0200044e0bfc8bcbe5dd9","mac_address":"ABCD1234","manufacturer":"0c43c22bc611227500002515e25bf079","model_id":"4431c26b37913000158bbfc8bcbe5d0d","name":"SNCTest Win Server 100","operational_status":"1","ram":"2048","serial_number":"SNC123456789"}}]} ペイロードを含むスクリプト例 var payload = {"items":[{"className":"cmdb_ci_win_server","values":{"company":"86c1f3193790200044e0bfc8bcbe5d95","install_status":"1","ip_address":"10.20.30.40","location":"a63c49b037d0200044e0bfc8bcbe5dd9","mac_address":"ABCD1234","manufacturer":"0c43c22bc611227500002515e25bf079","model_id":"4431c26b37913000158bbfc8bcbe5d0d","name":"SNCTest Win Server 100","operational_status":"1","ram":"2048","serial_number":"SNC123456789"}}]};var discoverySource = "ServiceWatch";gs.trace(true);var output = SNC.IdentificationEngineScriptableApi.createOrUpdateCI(discoverySource, JSON.stringify(payload));gs.trace(false);gs.print(output); 注: 上記の例では、SQLステートメントを表示するためにgs.trace(true)を追加しましたが、すべてのシナリオで必要なわけではありません。 コール出力例 identification_engine : IdentificationEngine::process: Pass=1identification_engine : addAttempt [{"className":"cmdb_ci_win_server","values":{"operational_status":"1","discovery_source":"ServiceWatch","install_status":"1","mac_address":"ABCD1234","name":"SNCTest002","serial_number":"SNC123456789","company":"86c1f3193790200044e0bfc8bcbe5d95","location":"a63c49b037d0200044e0bfc8bcbe5dd9","ip_address":"10.20.30.41","model_id":"4431c26b37913000158bbfc8bcbe5d0d","manufacturer":"0c43c22bc611227500002515e25bf079","ram":"2048"},"internal_id":"37dadd3adbd674104a9a53ca1184b9ac","sys_object_source_info":{"source_name":"ServiceWatch"},"settings":{},"sys_ire_info":{"ire_received_time":"2021-09-03 15:33:31"}}] - [sys_object_source] SKIPPEDidentification_engine : addAttempt [{"className":"cmdb_ci_win_server","values":{"operational_status":"1","discovery_source":"ServiceWatch","install_status":"1","mac_address":"ABCD1234","name":"SNCTest002","serial_number":"SNC123456789","company":"86c1f3193790200044e0bfc8bcbe5d95","location":"a63c49b037d0200044e0bfc8bcbe5dd9","ip_address":"10.20.30.41","model_id":"4431c26b37913000158bbfc8bcbe5d0d","manufacturer":"0c43c22bc611227500002515e25bf079","ram":"2048"},"internal_id":"37dadd3adbd674104a9a53ca1184b9ac","sys_object_source_info":{"source_name":"ServiceWatch"},"settings":{},"sys_ire_info":{"ire_received_time":"2021-09-03 15:33:31"}}] - [Rule id:c12f9be8c3400200d8d4bea192d3aea6|cmdb_ci_hardware|cmdb_serial_number|[serial_number, serial_number_type]] SKIPPEDidentification_engine : addAttempt [{"className":"cmdb_ci_win_server","values":{"operational_status":"1","discovery_source":"ServiceWatch","install_status":"1","mac_address":"ABCD1234","name":"SNCTest002","serial_number":"SNC123456789","company":"86c1f3193790200044e0bfc8bcbe5d95","location":"a63c49b037d0200044e0bfc8bcbe5dd9","ip_address":"10.20.30.41","model_id":"4431c26b37913000158bbfc8bcbe5d0d","manufacturer":"0c43c22bc611227500002515e25bf079","ram":"2048"},"internal_id":"37dadd3adbd674104a9a53ca1184b9ac","sys_object_source_info":{"source_name":"ServiceWatch"},"settings":{},"sys_ire_info":{"ire_received_time":"2021-09-03 15:33:31"}}] - [Rule id:fb27f69cc3000200d8d4bea192d3ae67|cmdb_ci_hardware|[serial_number]] MATCHEDidentification_engine : createOrUpdateCI: Matched 1 records and 0 relations in 4msecidentification_engine : Reconciliation: update to field 'name' of CI 'a853dd72dbd674104fa1c9db1396190e' was skipped because of rules [60d9117adbd674104fa1c9db13961986] defined in cmdb_reconciliation_definitionidentification_engine : Reconciliation: cmdb_ci_win_server(name) field update skipped for Data Source ServiceWatchidentification_engine : Commit: UPDATE cmdb_ci_win_server : a853dd72dbd674104fa1c9db1396190eidentification_engine : Processed 1 records and 0 relations in 4msec + 135msec (waited 0msec for mutex)identification_engine : logId:[3bda95ba17d67410854244fa7a3ee1c2] Processed payload from ServiceWatch. Using options: {partial_payloads:false,partial_commits:false,deduplicate_payloads:false,generate_summary:false}identification_engine : logId:[3bda95ba17d67410854244fa7a3ee1c2] Input = {"items":[{"className":"cmdb_ci_win_server","values":{"operational_status":"1","install_status":"1","mac_address":"ABCD1234","name":"SNCTest002","company":"86c1f3193790200044e0bfc8bcbe5d95","location":"a63c49b037d0200044e0bfc8bcbe5dd9","serial_number":"SNC123456789","ip_address":"10.20.30.41","model_id":"4431c26b37913000158bbfc8bcbe5d0d","manufacturer":"0c43c22bc611227500002515e25bf079","ram":"2048"},"sys_object_source_info":{"source_name":"ServiceWatch"},"sys_ire_info":{"ire_received_time":"2021-09-03 15:33:31"}}]}identification_engine : logId:[3bda95ba17d67410854244fa7a3ee1c2] Output = {"items":[{"className":"cmdb_ci_win_server","operation":"UPDATE","sysId":"a853dd72dbd674104fa1c9db1396190e","maskedAttributes":["name"],"identifierEntrySysId":"fb27f69cc3000200d8d4bea192d3ae67","identificationAttempts":[{"info":"sys_object_source SKIPPED","identifierName":"","attemptResult":"SKIPPED","attributes":[],"hybridEntryCiAttributes":[]},{"identifierName":"Hardware Rule","attemptResult":"SKIPPED","attributes":["serial_number","serial_number_type"],"searchOnTable":"cmdb_serial_number","hybridEntryCiAttributes":[]},{"identifierName":"Hardware Rule","attemptResult":"MATCHED","attributes":["serial_number"],"searchOnTable":"cmdb_ci_hardware","hybridEntryCiAttributes":[]}],"info":[],"errorCount":0,"markers":[],"mergedPayloadIds":[],"warningCount":0,"inputIndices":[0]}],"additionalCommittedItems":[],"relations":[],"additionalCommittedRelations":[]}identification_engine : Identification Engine Total execution time 146msec*** Script: {"items":[{"className":"cmdb_ci_win_server","operation":"UPDATE","sysId":"a853dd72dbd674104fa1c9db1396190e","maskedAttributes":["name"],"identifierEntrySysId":"fb27f69cc3000200d8d4bea192d3ae67","identificationAttempts":[{"info":"sys_object_source SKIPPED","identifierName":"","attemptResult":"SKIPPED","attributes":[],"hybridEntryCiAttributes":[]},{"identifierName":"Hardware Rule","attemptResult":"SKIPPED","attributes":["serial_number","serial_number_type"],"searchOnTable":"cmdb_serial_number","hybridEntryCiAttributes":[]},{"identifierName":"Hardware Rule","attemptResult":"MATCHED","attributes":["serial_number"],"searchOnTable":"cmdb_ci_hardware","hybridEntryCiAttributes":[]}],"info":[],"errorCount":0,"markers":[],"mergedPayloadIds":[],"warningCount":0,"inputIndices":[0]}],"additionalCommittedItems":[],"relations":[],"additionalCommittedRelations":[],"hasError":false,"hasWarning":false} 注意: 上記の例では、調整ルールが原因で名前が更新されませんでした。 例 1: SCCM が既存のレコードを更新せず、重複を挿入する シリアル番号 = 「ABCDE12345」の既存のコンピューターレコードがあるため、SCCM 変換が実行されると、既存のコンピューターレコードと一致するはずです。しかし、そうはならず、複製されたものを作成しました。後続の実行は、新しく作成されたレコードと一致します。 syslog から IRE ペイロードをフェッチし、gs.trace(true) を指定してスクリプトを実行すると、IRE がペイロードに対して識別ルールを評価することがわかります。シリアル番号識別子を評価するときは、次のクエリを実行します。 SELECT cmdb0.'sys_id', cmdb0.'sys_mod_count', cmdb0.'sys_class_name', cmdb0.'serial_number' FROM (cmdb cmdb0 INNER JOIN cmdb$par1 cmdb$par10 ON cmdb0.'sys_id' = cmdb$par10.'sys_id' ) WHERE cmdb0.'sys_class_path' LIKE '/!!/!2%' AND ((cmdb0.'serial_number' = 'ABCDE12345')) AND cmdb$par10.'duplicate_of' IS NULL RED で条件が強調表示されています。既存のレコードが過去のある時点で別のレコードの重複としてマークされていたため、これが失敗条件でした。[cmdb_ci_computer].[duplicate_of] フィールドが空ではなかったため、IRE は既存のレコードを見つけることができなかったため、新しいレコードが作成されました。 例 2: MSFT SQL インスタンスクラスの CI 名を更新しない SQL パターン。 会社の要件に従って SQL インスタンス名を入力するように変更されたパターンを使用して MSSQL サーバーを検出するユーザー。ただし、SQL インスタンス名はディスカバリーの実行後に更新されません。 IRE ペイロードをフェッチし、スクリプトバックグラウンドから実行すると、次の IRE デバッグ出力が表示されます。 identification_engine : Commit: NO_CHANGE cmdb_ci_win_server : fc01a2dd08224e402ccc921212fed23fidentification_engine : Reconciliation: update to field 'tcp_port' of CI '6bce7dcfdb08b7c479cca9a5ca961910' was skipped because of rules [3104a82e9f503200c7445f9bc32e7054, a0d77a059311020062281f10077ffb32] defined in cmdb_reconciliation_definitionidentification_engine : Reconciliation: update to field 'name' of CI '6bce7dcfdb08b7c479cca9a5ca961910' was skipped because of rules [3104a82e9f503200c7445f9bc32e7054] defined in cmdb_reconciliation_definitionidentification_engine : Reconciliation: cmdb_ci_db_mssql_instance(tcp_port) field update skipped for Data Source Service-nowidentification_engine : Reconciliation: cmdb_ci_db_mssql_instance(name) field update skipped for Data Source Service-nowidentification_engine : Commit: UPDATE cmdb_ci_db_mssql_instance : 6bce7dcfdb08b7c479cca9a5ca961910 ここでは、従来の「Service-now」ディスカバリーソースの調整ルールがなかったため、既存の SQL インスタンスレコードの更新が中断されました。上記の関連する行は赤で表示されています。 例 3: スクリプトの実行時に呼び出されたビジネスルールを確認する ステップ [システム診断] > [スクリプトデバッガー] に移動しますスクリプトデバッガーで [セッションログ] タブを選択します[設定] をクリックし、ビジネスルールのデバッグを有効にしますスクリプトからスクリプトを実行 - バックグラウンド。これは別のブラウザタブに表示されます実行されたビジネスルールのセッションログを確認しますIRE デバッグのスクリプト出力の確認 注: 他のセッションデバッグ設定を適用して、詳細情報を表示できます。必要に応じてチェックボックスをオンにするだけです。