ディスカバリーフェーズ ShazzamDescription (説明) Shazzam はディスカバリーの第 1 フェーズです。Shazzam はポートをスキャンして、ターゲットシステムで利用可能なプロトコルを判断します。Shazzam プローブの結果によって、トリガーする分類子が決まります。 Shazzam ディスカバリーフェーズの一般的な問題については、次の KB を参照してください。 ディスカバリーの Shazzam フェーズのトラブルシューティング Shazzam フロー クイックディスカバリーまたはスケジュール済みディスカバリーがトリガーされ、StartDiscovery スクリプトインクルードが ShazzamLaunch.launch() を呼び出しますShazzamLaunch.launch() は、IP 範囲、スキャナーなどの必要なパラメーターを指定してecc_queue出力を作成することにより、Shazzam プローブを起動しますMID サーバーは、次の方法で Shazzam プローブを実行します。 「port_probe_spec」パラメーターで指定されたポートプローブを、「範囲」プローブパラメーターの各 IP セットに対して実行しています Shazzam の結果は、ecc_queue入力レコードを介してインスタンスに返されますShazzam 入力は discovery_sensor Shazzam によって処理されます分類プローブは、「成功した」スキャナーに対して、discovery_port_probeテーブルとclassification_priorityフィールドに設定された順序に従ってトリガーされます IP サービス、ポートプローブ、スキャナー IP サービスは、使用するポートとプロトコル (TCP または UDP) を決定します IP サービスは、表cmdb_ip_service「IP サービス>ディスカバリー定義」の下に表示されます ポートプローブは、スキャンする IP サービス、使用する分類、分類をトリガーする順序を設定し、スキャナータイプを決定します ポートプローブは、表discovery_port_probe「ディスカバリー定義>ポートプローブ」の下に表示されます スキャナーは、IP サービスとポートプローブからの情報を使用してターゲットポートをスキャンする MID サーバー内のコードです パッケージにあるスキャナー com.service_now.mid.probe.shazzam.scanners 構成 Shazzam プローブは、スケジュールの動作で構成されているポートプローブを使用します。動作はテーブルdiscovery_behaviorで確認できますスケジュールで動作が使用されない場合、またはクイックディスカバリーのためにテーブルdiscovery_function_defに機能定義が表示される場合は、機能「すべて」が使用されます IP サービスの親和性 IP サービスの親和性により、ディスカバリーは IP アドレスを正常に検出したサービスを記憶できます。サービスアフィニティを有効にするには、システムプロパティ (sys_properties) glide.discovery.ip_service_affinity = true を設定します。デフォルトでは、このプロパティは false に設定されています。サービスの親和性はテーブルip_service_affinityで確認できます。 Shazzam へのポートの追加 [IP サービス>ディスカバリー定義] に移動し、IP サービスを作成します[ディスカバリー定義>ポートプローブ] に移動し、ポートプローブを作成しますテーブルdiscovery_function_defに新しいディスカバリー機能定義を作成しますテーブルdiscovery_functionalityに新しいディスカバリー機能を作成します[ディスカバリー定義>動作] に移動し、ディスカバリー動作を作成します必要な定義とポートプローブを使用して、新しく作成された機能を使用するように動作を構成します 動作のないディスカバリースケジュールまたはクイックディスカバリーの場合: [IP サービス>ディスカバリー定義] に移動し、IP サービスを作成します[ディスカバリー定義>ポートプローブ] に移動し、ポートプローブを作成しますテーブルdiscovery_function_defに移動し、定義「すべて」を開く新しく作成したポートプローブを機能に追加 Shazzam ペイロードサイズ システムプロパティは Shazzam ペイロードを JSON 文字列に変換するため、サイズとメモリフットプリントが削減されます。この設定により、1 つのスケジュールで多数の IP 範囲が検出されたときにノードのメモリーが不足するのを防ぐことができます。 新しいインスタンスの場合、glide.discovery.shazzam_ranges_json システムプロパティは true に設定されます。この設定は、ペイロードを JSON 文字列としてエンコードします。このプロパティはアドミニストレーターが構成でき、[ディスカバリー定義] >のプロパティ] モジュールで利用できます。モジュールのプロパティラベルは、「Shazzam の IP 範囲に JSON を使用」です。 スクリプトとコード 注: Shazzam が使用するコードは、以下に限定されません ECC キューイベントの構築 スクリプトインクルード 開始ディスカバリーShazzamローンチ MID Server Shazzam.java ECC キュー入力を処理 ディスカバリーセンサー Shazzam デバッグ パラメーター 注意:Shazzam をデバッグしない限り プローブデバッグパラメーターを false に設定したままにしてください プローブパラメーター debug = truescanner_log = true MID パラメーター mid.log.level = debug ECC キュー出力作成のデバッグ 必要に応じて ShazzamLaunch スクリプトにブレークポイントを追加する次のようなスクリプトバックグラウンドを実行して、クイックディスカバリーを実行するか、スケジュール済みディスカバリーをトリガーします。 // discovery schedule sys_idvar schedID = ""; // discovery schedule sys_trigger record sys_idvar schedTrigger = ""; var schedGR = new GlideRecord('discovery_schedule'); schedGR.get('sys_id', schedID); var schedTriggerGR = new GlideRecord('sys_trigger'); schedTriggerGR.get('sys_id', schedTrigger); var sd = new StartDiscovery(); sd.startFromSchedule(schedGR, schedTriggerGR); デバッグブレークポイントの例 MID での Shazzam プローブ実行のデバッグ デバッグプローブパラメーターの設定MID サーバーをデバッグするように設定MID サーバーログの確認ネットワークプロトコルアナライザーを使用して、MID によってターゲットに送信されたパケットを確認し、ターゲットが送信されたパケットに返信したことを確認します ECC キュー入力処理のデバッグ Shazzam discovery_sensorを開く必要に応じてデバッグステートメントを追加します (gs.log()システムログの確認 SNMP スキャナー ターゲットデバイスから応答を取得し、ターゲットで SNMP が実行されていることを確認するには、SNMP 認証情報を使用する必要があります。Shazzam は、SNMP 認証情報がターゲット デバイス上で正常に使用されるまで、使用可能なすべての SNMP 認証情報を試行します。デバイスが SNMP 認証情報に応答すると、認証情報親和性が作成されます。ディスカバリーでターゲット IP に使用する正しい認証情報が判明すると、Shazzam プローブに親和性が含まれるため、すべての認証情報を試行する必要がなくなります。 認証情報を含む Shazzam 出力ペイロードの例: 注意: デフォルトでは、mid サーバーパラメーター mid.snmp.enable_auto_publicは true です。このパラメーターは、他の SNMP 認証情報が成功しなかった場合に、SNMP パブリック コミュニティ文字列を自動的に使用するかどうかを指定します。したがって、SNMP 認証情報が構成されていなくても、SNMP を介して検出される一部のデバイス (パブリックアクティブのデバイス) では、検出が成功する可能性があります。 構成 Shazzam フェーズ / プローブは、次の方法で設定できます。 MID サーバーパラメータープローブパラメーターMID Server プロパティディスカバリースケジュールの構成 スレッド構成 Orlando 以降、Shazzam はマルチスレッド化できるようになりました。Shazzam では、次の MID サーバーパラメーターの両方が 0 より大きい場合、スレッドが同時に実行されます。 mid.shazzam.threadsmid.shazzam.max_scanners_per_thread プローブパラメーター BannerTCP_waitForConnectMS BannerTCP スキャナーが接続とバナーを待機するミリ秒数を設定します。デフォルト:1500 debug true に設定されている場合、デバッグログ記録を有効にします。デフォルト値:false delay_webem 最後の Shazzam センサージョブが完了するまで、WBEM ポートがオープンのシステムの分類を遅らせます。多数の WBEM ポートを検出する大規模なスケジュールでは、前回のセンサージョブによってノードのメモリーが不足する可能性が生じるまで分類を遅延させます。このパラメーターを false に設定すると、これらのシステムの分類がすべての Shazzam センサージョブで行われるようになります。デフォルト:true DNS_alternativePort 不使用 DNS_waitForResponseMS DNS スキャナーが応答を待機する時間をミリ秒単位で設定します。デフォルト:1000 GenericTCP_waitForConnectMS GenericTCP スキャナーが接続を待機する時間をミリ秒単位で設定します。デフォルト:1000 HTTP_waitForConnectMS HTTP スキャナーが接続を待機する時間をミリ秒単位で設定します。デフォルト:500 HTTP_waitForResponseMS HTTP スキャナーが応答を待機する時間をミリ秒単位で設定します。デフォルト:500 NBT_alternativePort 不使用 NBT_waitForResponseMS NBT スキャナーが応答を待機する時間をミリ秒単位で設定します。デフォルト:500 report_inactive true の場合、アライブで非アクティブなデバイスをレポートします。たとえば、デバイスにはオープンポートがないが、少なくとも 1 つのポート接続要求が拒否される場合です。デフォルト:true scanner_log true に設定されている場合、スキャナーのログ記録を有効にします。このログ情報は、Shazzam プローブ応答に表示されます。デフォルト値:false shazzam_report_dead true の場合、停止した IP アドレスを持つデバイスをレポートします。たとえば、すべてのポートが閉じているデバイスなどです。デフォルト値:false SNMP_alternativePort 不使用 SNMP_tapIntervalMS SNMP スキャナーがタップ間で待機する時間をミリ秒単位で設定します。デフォルト:1000 SNMP_taps SNMP スキャナーが試行するタップ (要求) の数を設定します。デフォルト:2 SNMP_waitForResponseMS SNMP スキャナーが最後のタップ後に応答を待機する時間をミリ秒単位で設定します。デフォルト:1000 TLS_keepOriginalCertificate true でディスカバリーが実行されている場合、cmdb_ci_certificateの [certificate_file] フィールドには元の証明書が入力されます。これにより、ペイロードサイズが増加する可能性があります。デフォルト値:false MID プロパティ/パラメーター Shazzam がパケットを開始できる間隔 (ミリ秒単位) mid.shazzam.regulator.interval_msSets。このパラメーターは、mid.shazzam.regulator.packets_per_intervalパラメーターと連携して、この間隔で許可されるパケット数を設定します。デフォルトでは、Shazzam は 1 ミリ秒ごとに 1 パケットを開始します。 タイプ:整数デフォルト値: 1 設定された時間間隔で Shazzam が起動できるパケット数mid.shazzam.regulator.packets_per_intervalSets。このパラメーターは、その間隔を設定する mid.shazzam.regulator.interval_ms パラメーターと連携します。デフォルトでは、Shazzam は 1 ミリ秒ごとに 1 パケットを開始します。 タイプ:整数デフォルト値: 1 Shazzam が並行してスキャンする IP アドレスの最大数mid.shazzam.chunk_sizeSpecifies。このパラメーターは、主に送信ポートの消費を制御します。 タイプ:整数デフォルト値:100 mid.shazzam.threadsShazzam が使用する同時スレッドの数を指定します。これまたは mid.shazzam.max_scanners_per_thread パラメーターを 0 に設定すると、Shazzam マルチスレッド最適化が無効になります。 タイプ:整数デフォルト値:5 mid.shazzam.max_scanners_per_thread各 Shazzam スレッドによって処理される同時スキャナーの数を指定します。これまたは mid.shazzam.threads パラメーターを 0 に設定すると、Shazzam マルチスレッド最適化が無効になります。 タイプ:整数デフォルト値: 500 ディスカバリースケジュールの構成 Shazzam バッチサイズ各 Shazzam プローブがスキャンできる IP アドレスの数を入力します。IP アドレスをバッチに分割すると、すべての IP アドレスがスキャンされた後ではなく、バッチ完了後に各バッチの分類が開始されることにより、パフォーマンスが向上します。プローブは順番に実行されます。たとえば、値が 1000 に設定されており、検出で単一の MID サーバーを使用して 10,000 件の IP アドレスをスキャンするとします。この場合、10 件の Shazzam プローブが作成され、各プローブで 1000 件の IP アドレスがスキャンされます。デフォルトでは、バッチサイズは 1000 です。256 件未満の IP アドレスではクラスタリングのメリットがないため、UI ポリシーによって強制的にバッチサイズは最小の 256 になります。ポリシーは 256 未満の値をゼロの値に変換します。 このフィールドの値は、Shazzam プローブの最大範囲サイズプロパティで定義された値よりも大きくすることはできません。 Shazzam クラスタサポートチェックボックスをオンにすると、クラスター内の複数の MID Server 間で Shazzam 処理が分配され、パフォーマンスが向上します。この設定は Shazzam バッチサイズと連動します。たとえば、100,000 件の IP アドレスをスキャンするスケジュールが作成され、その作業に 10 台の MID サーバーが割り当てられているとします。すなわち、1 台の MID Server で 10,000 件の IP アドレスをスキャンします。Shazzam バッチサイズが 1 プローブあたり 5,000 件の IP アドレスに設定されている場合、スケジュールは MID Server ごとに 2 つの Shazzam プローブを実行します (10,000 件の IP アドレス / バッチごとに 5,000 件)。これらのプローブは順番に実行され、同時には実行されません。使用した SNMP バージョンこのフィールドを使用して、この検出に使用する SNMP バージョンを指定します。SNMP v3 が最も安全なオプションです。有効なオプションは、[v1/v2c]、[v3]、または [すべて] です。 例: