Agent Client Collector Visibility (エージェントクライアントコレクターヴィジビリティ)<!-- /*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: ; } } ヴィジビリティ/ディスカバリーに固有ではないエージェントクライアントコレクターの詳細については、以下を参照してください。 エージェントクライアントコレクター Agent Client Collector for Visibility (ACC-V) は、Windows および Linux サーバーにインストールされる ServiceNow エージェントで、ホスト上でプッシュベースのディスカバリーを実行します。ACC-V は、OSQuery コマンドと OS 固有のコマンドを実行して情報を収集する Ruby スクリプトを展開します。さまざまなファイルシステムやストレージデバイス、TCP 接続、実行中のプロセスなど、ターゲットホストに関する情報を収集できます。 ACC-V プッシュベースのモデルを使用して、ServiceNow 構成管理データベース (CMDB) にターゲットシステムを登録して管理できます。資格情報の提供、スケジュールの構成、IP 範囲のスキャンなどは必要ありません。 ACC-V は、ディスカバリーを実行するための追加メカニズムです。これは、システム情報、ネットワークインターフェイス、実行中のプロセスなどの OS 関連属性の水平 IP ベースのディスカバリーの代替手段です。ACC-V は、オンプレミスサーバーおよびクラウドインスタンスに適しています。ACC-V を使用するには、ターゲットホストに ServiceNow エージェントクライアントコレクター (ACC) をインストールする必要があります。 Quebec パッチ 3 以降、CI が ACC-V によって検出されたことを明示する discovery_source として ACC-Visibility が導入されました。 プッシュディスカバリーと SAM を一緒に使用する方法の詳細については、以下を参照してください。 プッシュベースのディスカバリーと SAM の併用 目次 メリット要件ACC-V の仕組みトラブルシューティング メリット エージェントは通信を開始し、MID サーバーを介して ServiceNow インスタンスへの接続を維持します。ACC とともにインストールされたエージェントは自身を認識し、ディスカバリーデータを収集して、ACC-V ポリシーで設定されたスケジュールに従い MID サーバー経由で ServiceNow インスタンスへ送信します。ターゲットホストで特定のイベント(長時間停止後にオンラインへ復帰するなど)が発生すると、ディスカバリーがトリガーされます。アプリケーションは、ACC をインストールし、MID サーバーと通信する特定のターゲットを既に追跡しています。 要件 ディスカバリー [com.snc.discovery] プラグインをインストールしてアクティブ化する必要があります。エージェントクライアントコレクターフレームワーク (ACC-F) を ServiceNow インスタンスにインストールする必要があります。エージェントをターゲットホストにインストールする必要があります。Quebec パッチ 3 以降にアップグレードしていることを確認してください。ITOM ディスカバリーまたは ITOM ヴィジビリティ SKU (SU ベースのライセンス) が必要です ACC-V の仕組み 高いレベルでは、ACC-V は以下と連携して機能します。 ServiceNow インスタンスServiceNow MID サーバーターゲットホストマシン上記のターゲットホストマシンで実行される ServiceNow エージェントクライアントコレクター ACC-V アーキテクチャ ACC-V は、チェックとポリシーを適用して、ディスカバリーをスケジュールして実行します。ディスカバリーは、次の場合にトリガーされます。 定期的なスケジューリング:ディスカバリーが定期的にトリガーされるポリシーベースのアプローチCI 削除時:コンピューターまたはサーバーの CI レコードが削除されたとき 「Enhanced Discovery – On CI Delete」ビジネスルールは、sn_agent_cmdb_ci_agent から対象 CI に関連付けられた CI が削除された際に Endpoint Discovery Check をトリガーします。 MID サーバーのサイクル:MID サーバーが停止して復旧したときターゲットホストサイクル:ターゲットホストが停止して復旧した場合ネットワーク切断:ターゲットへのネットワークリンクに切断がある場合 エージェントのディスカバリーの実行頻度 / ディスカバリーのトリガー方法 「拡張ディスカバリーポリシー」で構成されているとおり ポリシーを表示するには、[エージェントクライアントコレクター > 構成] > [ポリシー] に移動します。チェックインスタンスの「上書き間隔」は、ポリシー間隔を上書きできますポリシーによってディスカバリーがトリガーされた場合、ecc_queue の出力レコードは作成されません。 ディスカバリーは、エージェントレコードを開いて [ディスカバリーを実行] をクリックすることで、オンデマンドで実行できます オンデマンドでトリガーされると、トピック「MonitoringProbe」と名前「on_demand_request」のecc_queue出力レコードが作成されます出力ペイロードには、実行するエージェントやポリシーなど、ディスカバリーの実行に必要な情報が含まれますペイロード内の JSON には「clients_cis」が含まれており、これは sn_agent_cmdb_ci_agent のエージェント ID を示します。 入力をどのように処理しますか ビジネスルール「AgentNowResponseProcessor」はecc_queue入力を処理しますビジネスルールはスクリプトインクルードを呼び出します AgentNowHandler.processEccRecord(current);スクリプトインクルードは、ペイロードを使用して check_type_id を取得し、sn_agent_check_type テーブルを照会します。 検出の場合は、[sn_agent_disco_check_type] の下のタイプになります チェックタイプ ID は、ペイロードを処理するスクリプトの呼び出しに使用されます EnhancedDiscoveryHandler.handleDiscovery(checkResults)その他のスクリプトインクルードが使用されます。 MainDiscoveryHandlerEnhancedDiscoveryHandlerEndpointDiscoveryCloudHelper スクリプトは、識別および調整エンジンに渡される最終的な JSON ペイロードを構築します プロパティ sn_agent.disco_minimum_threshold_for_rediscovery_minutes システムの検出頻度が高すぎないようにするため sn_agent.disco_disable_ci_clobber_of_agentless_disco 競合を避けるため、ターゲットホストの IP に対して既に水平 IP ベース Discovery により検出された CI(discovery_source が ServiceNow)が存在する場合、ACC-V は Discovery を実行しません。この動作を上書きするには、システムプロパティ sn_agent.disco_disable_ci_clobber_of_agentless_disco を false に設定します sn_agent.disco_ci_clobber_of_agentless_disco_threshold_days 水平 IP ベースのディスカバリーが特定の時間にわたって実行されなかった場合、この設定は無視されます。必要に応じて、システムプロパティ [sn_agent.disco_ci_clobber_of_agentless_disco_threshold_days] を更新します。デフォルトは 14 日です トラブルシューティング データはecc_queue入力ペイロードで正常に返されましたが、それに応じて CI が更新されません 注: 次の手順では、アドミン権限が必要になる場合があります。本番環境でスクリプトを実行する前に、非本番インスタンスでスクリプトをテストしてください。 ペイロードが処理されるときにシステムログ/ノードログを確認し、エラーを探します エラー:エラーを解決します。アクションはエラーの内容によって異なりますエラーなし:次のステップに進みます 入力ペイロード処理のデバッグ方法 ecc_queue入力のsys_idを取得します (正しい入力を見つけるには、エージェント ID を含む入力ペイロードをecc_queueで検索します)Script Include AgentNowHandler を開きます。スクリプトセクションで、[スクリプトデバッガーを開く] (バグのあるアイコン) をクリックしますprocessEccRecord() 関数にブレークポイントを設定[システム定義>スクリプト - バックグラウンド] に移動しますスコープを「sn_agent」に設定次のスクリプトを実行します。 // In the following line, place the sys_id of the ecc_queue inputvar payloadSysID = ""; var eccRecord = new GlideRecord('ecc_queue'); eccRecord.get(payloadSysID); var ANH = new AgentNowHandler(); ANH.processEccRecord(eccRecord); 必要に応じて、問題があると思われるスクリプトにデバッグステートメントを追加します。 Linux デバイスのシリアル番号と TCP 接続がない エージェントが、関連する実行中のプロセスとともに OS シリアル番号と TCP 接続を取得するには、Linux システムで「dmidecode」と「ss」の sudo アクセスが必要です。たとえば、このコンテンツを /etc/sudoers または /etc/sudoers.d/ の個別ファイルに追加できます。 Cmnd_Alias AGENT_ACC_V = /usr/sbin/dmidecode,/usr/sbin/ss servicenow ALL=(root) NOPASSWD:AGENT_ACC_V ペイロードが出力セクションでエラーを返して返される エラーの例: "output" : "C:/Program Files/ServiceNow/agent-client-collector/embedded/lib/ruby/gems/2.7.0/gems/json-2.3.0/lib/json/common.rb:156:in `parse': 783: unexpected token at '' (JSON::ParserError) トラブルシューティング例 01 - デバッグをホスト上のファイルに送信: endpoint_discovery.rb を更新します。次のコードを見つけます。 $logger = Logger.new(STDOUT)$logger.level = options.log_level.nil? ? "FATAL" : options.log_level 次のコードに置き換えます。 $logger = Logger.new('pathAccountCanWriteTo')#Comment out log level or set to debug#$logger.level = options.log_level.nil? ? "FATAL" : options.log_level 問題を再現作成されたログファイルを確認 トラブルシューティング例 02 - デバッグステートメントをさらに追加: 拡張ディスカバリーチェックを更新して、デバッグパラメーターを渡します。例: endpoint_discovery.rb --compact --select=basic_inventory,installed_software,file_systems,serial_numbers,network_adapters,tcp_connections,storage_devices,running_processes --log-level DEBUG エージェントクライアントコレクターのcheck-allow-list.jsonファイルを更新して、上記のコマンドを実行できるようにします新しいテストディスカバリーの実行新しい出力とacc.logファイルをレビューオプションで、endpoint_discovery.rb スクリプト、またはそれによって呼び出される他のスクリプトに、さらにデバッグステートメントを追加します デバッグを追加する例: # Creating a logger to log information to C:\temp\accDebug.log # in a path the acc service user can write to$logger = Logger.new('C:\temp\accDebug.log')# Log additional information$logger.info('variableOrStringToGetMoreInformation') 作成された新しいログファイルを確認する トラブルシューティング例 03 - ホストで直接チェックを実行する: 拡張ディスカバリーチェックのファイルはエージェントのキャッシュディレクトリにダウンロードされるため、トラブルシューティングのためにエージェントで直接チェックを実行することもできます。 次の画像は osquery コマンドを実行した結果です。 osqueryi --json --logger_min_status 1 "select hostname,hardware_vendor,hardware_model,hardware_version,physical_memory,cpu_brand from system_info" Rubyスクリプトは、トラブルシューティングのためにコマンドラインから直接実行することもできます。ただし、これは ACC が実行した場合とまったく同じではなく、異なる結果またはエラーが生じる可能性があることに注意してください。 endpoint_discovery.rb スクリプトは、パラメーター「--select」の配列を受け取ります。これらは、endpoint_discovery.rb によって呼び出される他のスクリプトの名前です。これらの各スクリプトは、サーバー内のデータを検出し、JSON ファイルを返します。これらの結果はすべて加算され、インスタンスに返されます。完全なコマンド: endpoint_discovery.rb --compact --select=basic_inventory,installed_software,file_systems,serial_numbers,network_adapters,tcp_connections,storage_devices,running_processes 次の例では、endpoint_discovery.rb によって呼び出されたスクリプトの 1 つをテストします。 ACC キャッシュディレクトリでosqueryi.exeパスを検索し、ユーザーパスに追加します。そうでない場合は、ファイルが見つかりませんというエラーが発生する可能性がありますACC サービスユーザーでコマンドプロンプトを開きます渡されたbasic_inventoryのみで endpoint_discovery.rb を実行し、出力をファイルに送信します endpoint_discovery.rb --log_level DEBUG --compact --select=basic_inventory >> basicInventoryOutput.txt ファイルのレビュー、出力例: