デバイスの IP アドレスのディスカバリーIssue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: block; max-width: ; width: auto; height: auto; } } ディスカバリー中に、構成アイテム(CI)のIPアドレスが更新される場合があります。この記事では、検出されたCIのip_addressフィールド(例:cmdb_ci_computer.ip_address)に焦点を当てます。CIが検出されると、その CI に対して検出されたIPアドレスがcmdb_ci_ip_addressテーブルにも入力されます。 以下の手順は、このようなIPアドレスを更新するための検出ロジックを示しています。 Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: block; max-width: ; width: auto; height: auto; } } すべて Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: #000000; } span { font-size: 12pt; font-family: Lato; color: #000000; } h2 { font-size: 24pt; font-family: Lato; color: black; } h3 { font-size: 18pt; font-family: Lato; color: black; } h4 { font-size: 14pt; font-family: Lato; color: black; } a { font-size: 12pt; font-family: Lato; color: #00718F; } a:hover { font-size: 12pt; color: #024F69; } a:target { font-size: 12pt; color: #032D42; } a:visited { font-size: 12pt; color: #00718f; } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: block; max-width: ; width: auto; height: auto; } } 検出された CI IP アドレス CI の IP アドレスは、検出の識別フェーズ中に設定されます。 プローブ/センサー 識別フェーズでは、cidata と呼ばれるペイロードが識別および調整エンジン (IRE) に渡されます。IRE は、このような cidata を使用して CI を作成/更新します。cidata 内の ip_address が CI に現在設定されている IP アドレスと同じでない場合、CI の IP アドレスが更新されます。 cidata 内の IP アドレスは、CI の検出に使用されている IP アドレスと同じです。 ほとんどの場合、検出のたびに IP アドレスが変更されることは望ましくありません。したがって、検出では、ペイロードが IRE に渡される前に、ペイロードから ip_address を削除するかどうかが判断されます。ペイロードから ip_address を削除すると、CI の IP アドレスは更新されません。 スクリプトインクルード DiscoveryJSONIDSensor では、関数 processIPAddressField(ciRecord) を使用して、次の手順を実行します。 識別エンジンで一致する CI が検出されていましたか? いいえ: デバイスが初めて検出されるのは今回です。cidata の IP アドレスを使用しますはい: 続行 既存の CI に IP アドレスはありますか? いいえ: cidata の IP アドレスを使用して CI を更新はい: 続行 CI の現在の IP アドレスは cidata の IP アドレスと一致していますか? いいえ:続行はい: cidata から IP を削除する必要はありません。CI が IP アドレスを保持します この時点で、CI の現在の IP アドレスと一致しない IP アドレスが cidata にあります。この IP アドレスを cidata に残すと、CI の IP アドレスが更新/反転されます。識別フェーズでは、ネットワークアダプターも収集されます。つまり、CI の現在の IP アドレスは、ネットワークカードで検出された IP アドレスの 1 つでしょうか? はい: この場合も有効な IP アドレスであり、保持してもかまいません。そのため、CI の現在の IP アドレスが不必要に更新されないように、cidata IP アドレスをクリアしておきます。いいえ: CI レコードには有効でなくなった IP アドレスが含まれます。CI レコードが更新されるように、cidata 内で IP アドレスを保持してください パターン パターンでは DiscoveryJSONIDSensor を使用しません。CI の ip_address は、パターン内のロジックに従って設定されます。各パターンには、$<class_name>[].ip_address が設定されるステップがあります。ステップをパターンに追加またはパターンから削除して、どの IP アドレスを使用するかを制御し、フィールド ip_address を更新できます。 Orlando パッチ 5 以前 パターンを介して検出された CI の ip_address は、フィールド ip_address に対して返された内容に従って更新されます。ip_address フィールドは、異なる IP アドレスを介して CI が検出されるたびに更新されます。この PRB1343838 での反転を防ぐために、水平検出センサーにロジックが追加されました。 Orlando パッチ 5 以降 関数 preventFlappingAttributeOnParentClassReturnIreTime() が検出センサー (PRB1343838) に追加されました。この関数は ip_address フィールドが CI で既に入力されているかどうかをチェックし、入力されている場合は更新しません。ただし、既に入力されている場合、IP アドレスフィールドはまったく変更されなくなります。IP アドレスフィールドは手動で更新する必要があり、CI に更新された値が維持されます (検出によって更新されなくなります)。Rome では PRB1443223 がこれを修正します。 Rome PRB1443223 により、CI の現在の IP アドレスがまだ検出されているかどうかを確認するロジックが追加されました。検出されていない場合は、CI に対して検出された新しい IP アドレスに置き換えられます。これは、プローブで行ったことと似ています。 検出後 CI の検出が完了すると、discovery.device.complete イベントが作成されます。このイベントに応答するスクリプトアクションが、スクリプトインクルード IPAddressFixup を呼び出します。IPAddressFixup は、次のプロパティによってコントロールされます。 glide.discovery.enforce_ip_syncglide.discovery.exclude_ip_sync_classesglide.discovery.enforce_unique_ips 注意: 検出後、プローブとパターンベースディスカバリーの両方で ip_address フィールドを更新できます。 ディスカバリーのプロパティ glide.discovery.enforce_ip_sync glide.discovery.enforce_ip_sync により、CI レコード内の検出された IP アドレスがデバイス上の NIC のアドレスと一致しない場合に、そのアドレスを使用できなくなります。このプロパティが true の場合、返された IP アドレスをディスカバリーがチェックし、デバイスの NIC に関連付けられているかどうかを判断します。アドレスが NIC に関連付けられていない場合、ディスカバリーはいずれかの NIC の IP アドレスを代わりに使用します。使用される IP アドレスは CI に属する IP アドレスのリストで最初に見つかったものであり、IP アドレスは ip_address 列順に並べられます。 glide.discovery.exclude_ip_sync_classes glide.discovery.exclude_ip_sync_classes は、ディスカバリーによって返されたアドレスがデバイスの NIC のいずれかと一致しない場合に IP アドレスを置き換えないようにする CI クラスを定義します。複数のクラスを定義するには、カンマ区切りリストを使用します。デフォルトでは、ロードバランサーのいずれかの NIC の IP アドレスを代替するのではなく、CI レコード内の Discovery によって返されるロードバランサーの管理 IP が使用されます。 glide.discovery.enforce_unique_ips glide.discovery.enforce_unique_ips により、コンピューター、プリンター、またはネットワーク機器が検出され、そのデバイスに有効な IP アドレスが割り当てられるたびに、同じ IP アドレスを持つ他のデバイスの IP アドレスフィールドがクリアされます。 一般的な問題 「システム」アカウントによるディスカバリー完了後に更新された CI IP アドレスフィールド これは通常、システムプロパティ glide.discovery.enforce_ip_sync が true に設定されていることが原因です。これにより、IP アドレスを更新するスクリプトインクルード IPAddressFixup のコードがトリガーされます。glide.discovery.enforce_ip_sync を false に設定すると、この動作は停止します。または、CI クラスをシステムプロパティ glide.discovery.exclude_ip_sync_classes に追加することもできます。 プローブからパターンへの移行後にディスカバリーが実行されるたびに更新される IP アドレス これは、Orlando パッチ 5 以前のバージョンで想定されている動作です。event discovery.device.complete によってトリガーされるカスタムスクリプトアクションを実装すると、IP アドレスの更新方法に関するカスタムロジックを追加したり、sa_pattern_prepost_script でそのようなアクションを実行したりすることができます。 プローブからパターンへの移行後にディスカバリーによって更新されない IP アドレス Orlando パッチ 5 以降、ip_address フィールドが空でなければこのフィールドは更新されなくなりました。CI の ip_address フィールドを空にして再検出すれば、ディスカバリーによってそのフィールドに値を入力することができます。あるいは、カスタムスクリプトアクションまたは sa_pattern_prepost_script でそのようなアクションを実行することもできます。システムプロパティ glide.discovery.enforce_ip_sync により、IP アドレスが「有効/現在」の値に更新されます。このプロパティについては、このドキュメントの前の部分で説明しています。この問題は、PRB1443223 によって Rome で修正されています。