ディスカバリーフェーズ Shazzam<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } 説明 Shazzam はディスカバリーの最初のフェーズです。Shazzam はポートをスキャンして、ターゲットシステムで利用可能なプロトコルを判断します。Shazzam プローブの結果によって、トリガーされる分類子が決まります。 Shazzam ディスカバリーフェーズに関する一般的な問題については、次の KB を参照してください。 ディスカバリーでの Shazzam フェーズのトラブルシューティング Shazzam フロー クイックディスカバリーまたはスケジュール済みディスカバリーがトリガーされ、StartDiscovery スクリプトインクルードが ShazzamLaunch.launch() を呼び出しますShazzamLaunch.launch() は、必要なパラメーター (IP 範囲、スキャナーなど) を使用して ecc_queue 出力を作成することで、Shazzam プローブを起動しますMID サーバーは、次の方法で Shazzam プローブを実行します。 「range」プローブパラメーターに設定された各 IP に対して「port_probe_spec」パラメーターで指定されたポートプローブを実行します Shazzam の結果は、ecc_queue入力レコードを介してインスタンスに返されますShazzam 入力は discovery_sensor Shazzam によって処理されます「成功した」スキャナーに対して、discovery_port_probeテーブルとフィールドclassification_priority設定された順序に従って分類プローブがトリガーされます IP サービス、ポートプローブ、およびスキャナー IP サービスは、使用するポートとプロトコル (TCP または UDP) を決定します IP サービスは、[IP サービス>ディスカバリー定義] のテーブルcmdb_ip_serviceに表示されます ポートプローブは、スキャンする 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 文字列に変換するため、サイズとメモリフットプリントが削減されます。この設定により、単一のスケジュールで多数の IP 範囲が検出されたときに、ノードのメモリー不足を防ぐことができます。 新しいインスタンスでは、glide.discovery.shazzam_ranges_jsonシステムプロパティが true に設定されます。この設定は、ペイロードを JSON 文字列としてエンコードします。このプロパティはアドミニストレーターが構成でき、[ディスカバリー定義>プロパティ] モジュールで使用できます。モジュールのプロパティラベルは「Shazzam の IP 範囲に JSON を使用」です。 スクリプトとコード 注意: Shazzam が使用するコードは、次のものに限定されません。 ECC キューのビルド スクリプトインクルード ディスカバリーの開始Shazzam起動 MID サーバー Shazzam.java ECC キュー入力を処理 ディスカバリーセンサー Shazzam デバッグ パラメーター 注意: shazzam をデバッグしない限り、プローブデバッグパラメーターを false に設定したままにしてください。 プローブパラメーター デバッグ = 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 デバッグ true に設定されている場合、デバッグログ記録を有効にします。デフォルト値:false delay_webem 最後の Shazzam センサージョブが完了するまで、WBEM ポートがオープンのシステムの分類を遅らせます。多数の WBEM ポートを検出する大規模なスケジュールでは、前回のセンサージョブによってノードのメモリーが不足する可能性が生じるまで分類を遅延させます。このパラメーターを false に設定すると、すべての Shazzam センサージョブでこれらのシステムを分類できます。デフォルト:true DNS_alternativePort 非推奨 DNS_waitForResponseMS DNS スキャナーが応答を待機するミリ秒数を設定します。デフォルト:1000 GenericTCP_waitForConnectMS 汎用 TCP スキャナーが接続を待機するミリ秒数を設定します。デフォルト: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 プロパティ/パラメーター mid.shazzam.regulator.interval_ms:Shazzam がパケットを開始できる間隔 (ミリ秒単位) を設定します。このパラメーターは、mid.shazzam.regulator.packets_per_interval パラメーターと連携して、この間隔で許可されるパケット数を設定します。デフォルトでは、Shazzam は 1 ミリ秒ごとに 1 パケットを開始します。 タイプ:整数デフォルト値: 1 mid.shazzam.regulator.packets_per_interval:設定された時間間隔で Shazzam が開始できるパケット数を設定します。このパラメーターは、その間隔を設定する mid.shazzam.regulator.interval_ms パラメーターと連動します。デフォルトでは、Shazzam は 1 ミリ秒ごとに 1 パケットを開始します。 タイプ:整数デフォルト値: 1 mid.shazzam.chunk_size:Shazzam が並列でスキャンする IP アドレスの最大数を指定します。このパラメーターは、主に送信ポートの消費を制御します。 タイプ:整数デフォルト値: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、または [すべて] です。 例: