Service Mapping ML 接続提案/トラフィックベースの検出のトラブルシューティングガイド ML 接続提案/トラフィックベースの検出のトラブルシューティングガイド 接続提案とトラフィックベースの検出は、TCP 接続情報を使用してスマートな提案を作成する 2 つの機能です。 内容: トラフィックベースの接続の前提条件概要とアーキテクチャ。 2接続提案機能の前提条件。 3トラブルシューティング 基本的なトラブルシューティングフロー問題:マップ上に古いトラフィックベースの接続がある 解決策:経過時間を確認 問題:スタックしたジョブ/失敗したトレーナー/トレーナーの可用性が原因でAFPがない 解決策:クラスタリングソリューションを確認 問題:接続提案の欠落 解決策:関連するトラフィック情報の存在を確認解決策:sa_ml_process_to_process が設定されており、ML トレーニングの準備ができていることを確認解決策:sa_ml_process_to_process に欠落しているソース/ターゲット AFP がないことを確認バージョンを確認 + CI がロードバランサーであるかどうか確認 問題:提案レコードの [信頼性レベル] フィールドがないか、「N/A」と表示されている 解決策:トラフィック接続が収集されたことを検証解決策:sa_ml_process_to_processSolution に欠落したソース/ターゲット AFP が無いか確認に不足しているソース/ターゲット AFP がないことを確認します。 5 問題:ML 準備状況ページに「接続提案のスケジュール済みジョブを確認してください」というメッセージが表示され、トレーニング済みレコードの数が 0 になる問題:Predictive Intelligence ソリューションが「トレーニング待ち」でスタックしているか、進行パーセントに動きがないため、信頼性がない(または AFP がない) 問題: 予測インテリジェンス ソリューションが「トレーニング待機中」のままになっているか、進行中の動きがないため、信頼性が欠落している (または AFP が欠落している) パーセント問題: 予測インテリジェンス ソリューションが「トレーニング待機中」のままになっているか、進行中の動きがないため、信頼性が欠落している (または AFP が欠落している) パーセント6解決策:ソリューション保留中のジョブのキャンセル解決策:ジョブをキャンセルしてもトレーニングの問題が解決しない場合、フルクリーンアップ 問題:接続提案の決定は [ルールによって追加] または [手動で追加] ですが、接続がマップに表示されない 解決策:ソース CI として分類されたターゲットプロセス解決策:検出メッセージログを確認 トレーナーの可用性障害後の SM ML ベースの機能の復旧手順 トラフィックベースの接続の前提条件 システムプロパティ sa.traffic_based_discovery.active = trueサービスフォームのトラフィックベースの検出フラグがアクティブである必要があります。[マップ表示 - トラフィックベースの CI を表示] がアクティブである必要がありますcmdb_tcp テーブルを空にすることはできません。空の場合は、関連するすべてのホストに対して水平検出を実行してから、関連するビジネスサービスに対してトップダウン検出を実行します。空でない場合は、関連するビジネスサービスに対してトップダウン検出を実行します。 ML 接続提案の概要とアーキテクチャ 接続提案機能により、新しい ML アルゴリズムと新しい UI を使用して、トラフィックベースのサービスマッピングに対する新しいアプローチが可能になります。新しいアルゴリズムは、接続のソース AFP とターゲット AFP に基づいて、アプリケーションサービスとの関係のいくつかの信頼性レベルに接続を分類します。 この機能は、次のシステムプロパティを介して有効になります。 glide.app.p2p.conn.map.enabled=trueprocess.clustering.appfingerprint.enabled=true (OOTB、上記のプロパティは存在しません。デフォルトは true です) 機能が有効になると、トラフィックベースの接続はマップに自動的に追加されません 。ユーザーは、分類とともに接続提案のリストを表示し、マップに追加する接続を決定できます。 接続提案 ML モデルは、アプリケーションの指紋認証のトレーニング済みモデルによって異なります。 どちらのモデルも、水平検出の成功に依存しています。接続の提案は、トップダウン検出に依存しています。 ML 接続提案の前提条件 PI プラグインをインストールする必要があります。管理者ユーザーには、ml_admin、sm_admin、および discovery_admin ロールが必要です。 管理者ユーザーのアプリケーションスコープ ID はグローバルである必要があります。アプリの指紋認証テーブル cmdb_process_groups に入力する必要があります。そうでない場合は、続行する前に、このセクションのガイドラインに従ってください。 アプリの指紋認証の前提条件問題がこのセクション内にあるのに解決できない場合は、ケースを Dev-SW-SmurAI チームに再アサインしてください (大文字と小文字を区別)システムプロパティ「sa_ml.connection_suggestions.active」が存在し、「true」に設定されているか、まったく存在しない必要があります。 トラブルシューティング 基本的なトラブルシューティングフロー: [1] CI に対してトラフィックベースの検出/接続提案が有効になっていますか。マップビュー で確認します。(有効にする必要があります) [2] 関連する PID の検索: マップ上の関連 CI に移動し、Discovery ログを開きます。検出ログで次のパターンを検索します。 "$$$process_data$$$###pid=4###parent_pid=0###command_line=c:\\windows\\syste m32\\inetsrv\\w3wp.exe###executable_path=C:\\Windows\\System32\\ntoskrnl.exe## #process_data###" 次の情報を抽出します。:PID、PPID、command_line、実行可能ファイルパスcmdb_running_processtable に移動します。Windows ホストの場合は、次の条件に一致するレコードを検索します。 コンピューター Sys ID = ホスト IDコマンド = 検出ログからの実行可能パスパラメーター = 検出ログのコマンドライン UNIX ホストの場合は、コマンドラインを Discovery ログからコマンドとパラメーターに分割し、以下に一致するレコードを検索します。 コンピューター Sys ID = ホスト IDコマンド = 完全なコマンド (パスあり)、ただしコマンドのパラメーターはありません。Parameters = コマンドのパラメーター (存在する場合) 見つかったレコードの PID を収集します。 (cmdb_running _process テーブルの pid フィールド)cmdb_running_process テーブルで PID が見つからない場合は、検出ログから PID を直接収集します。子プロセスを追加します。cmdb_running_processtable に移動し、次の条件に一致するレコードを検索します。 コンピューター Sys ID = ホスト IDPPID = 収集された PID のリスト そのようなレコードが見つかった場合は、それらのレコードの PID (cmdb_running _process テーブルの pid フィールド) を取得し、PID リストに追加します。Discovery ログから PPID を PID リストに追加します。 [3] 許可されるトラフィックベースの最大接続数プロパティ sa.traffic_based_discovery.max_connections を増やします。 (デフォルトは 100)これにより、単一の CI からのトラフィックベースの接続の最大数を定義します。 問題:マップ上に古いトラフィックベースの接続がある 解決策:経過時間を確認 これは、トラフィックベースの接続の猶予期間中に予想される動作です。トラフィックベースの接続には、トラフィックベースの接続が CI から削除されるまでのエージング期間である猶予期間があります。 (時間単位)猶予期間は、sys プロパティ 「sa.traffic_based_discovery.conn_aging_time」によって定義されます。 問題:スタックしたジョブ/失敗したトレーナー/トレーナーが利用できないため、AFP がない 解決策:クラスタリングソリューションを確認 ML クラスタリングソリューションのトラブルシューティングを確認:ソリューションが完了したことを確認さらに問題が発生した場合は、Dev-SW-SmurAI チームにお問い合わせください (チーム名は大文字と小文字が区別されます)。 問題:接続提案の欠落 解決策:関連するトラフィック情報の存在を確認 次の例のように、テーブル cmdb_tcp を確認し、同じポートの IP をフィルタリングします。例にあるように、緑色は接続を確立するためのものです:同じポート上の IP への接続の両側です。赤は不足している部分です:両方の接続側のプロセス ID他のトラフィック関連の問題が発生した場合は、次のトラフィックトラブルシューティングガイドを使用して、関連するトラフィック情報が収集されていることを確認してください。https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB0832798上記のすべてで回答が得られない場合は、ソース/ターゲット AFP が「sa_ml.connection_suggestions.bad.afp.list」システムプロパティに含まれていないかどうかを確認してください。そうである場合は、この AFP が安定しておらず、接続提案がサポートされていないことを意味します 解決策:sa_ml_process_to_process が入力され、ML トレーニングの準備ができていることを確認 テーブル sa_ml_process_to_process は、検出時に収集された TCP データを使用して 2 つのプロセス間の接続を収集しています。テーブルに依存:cmdb_tcp、cmdb_process_groups既存のレコードのテーブル sa_ml_process_to_process を確認します。すべてのレコードの [Is Complete] = true であることを確認します。[Is Complete] 列:行をトレーナーに送信する準備ができているかどうかを示します。False は、AFP の 1 つがまだないことを意味します。データをトレーニングし、プロセス間の信頼性を入力するには、sa_ml_proces_to_process の最小レコード数 (デフォルトでは 10,000) が「Is Complete」=true である必要があります。顧客は、プロパティ「glide.platform_ml.api.csv_min_line」を 0 より大きい値で使用して、この最小数を変更できます。このレコード数が sa_ml_process_to_process にない場合、接続提案の信頼性は入力されず、アプリケーションサービス候補の作成は開始されません。 解決策:sa_ml_process_to_process に不足しているソース/ターゲット AFP がないことを確認 ソース/ターゲット AFP 列に AFP がない場合は、以下のバックグラウンドスクリプトを実行して、プロセス ID に関連する AFP があるかどうかを確認する必要があります。 var afpProviderJs = new AFPProviderJS(); var afpSolutionVersion = afpProviderJs.getAFPSolutionVersion(); var sourceGroupID = afpProviderJs.getAFPIDForProcessVersion(/*ProcessID*/, afpSolutionVersion); gs.log("sourceGroupID=" + sourceGroupID); スクリプトでプロセス ID として null が表示される場合は、次の手順に従ってソリューションを再起動する必要があることを意味します。 トレーナーの可用性エラー後の SM ML ベースの機能の復旧手順 解決策:バージョンを確認 + CI がロードバランサーであるかどうか確認 ロードバランサーの接続提案は、San-Diego バージョンからのみサポートされています。これより前は、サーバーのみがサポートされています。 問題:提案レコードの [信頼性レベル] フィールドがないか、「N/A」と表示されている 解決策:トラフィック接続が収集されたことを検証 テーブル cmdb_tcp を確認し、関連するサービスの一部であることがわかっている関連する IP/ホストにフィルタリングします。トラフィック情報がない場合は、次のトラブルシューティングガイドで、トラフィックが収集されていることを検証するための詳細な手順を確認してください。https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB0832798 解決策:sa_ml_process_to_processSolution に欠落したソース/ターゲット AFP が無いか確認 sys_property sa_ml.connection_suggestions.bad.afp.list には、ソースまたはターゲット AFP に存在する場合は信頼性を計算しないカンマ区切りの AFP のリストが含まれています。必要に応じて、顧客はこのリストから AFP を削除し、アプリケーションでトップダウン検出を再実行すると、信頼性が設定されます。 問題:ML の準備状況ページに「接続提案のスケジュール設定済みジョブを確認してください」というメッセージがあり、トレーニング済みレコードの数が 0 です。 解決策: コードは、「Service Mapping - Traffic Process to Process」および「All Applications」ジョブの実行期間があることを確認します。これらのジョブのいずれかに実行期間がない場合は、そのメッセージが表示されます。チャートの数値 (トレーニング済み/未トレーニング) については、sa_ml_connection_suggestion テーブルから解決します。合計数は sa_ml_connection_suggestion テーブルのすべてのレコードで、「未トレーニング」は「信頼性 = N/A」のレコードの数です。 問題: Predictive Intelligence ソリューションが「トレーニング待ち」でスタックしているか、進行中の移動の割合がないため、信頼性がありません (または AFP がありません)。 解決策:ソリューション保留中のジョブをキャンセル テーブル:ml_connection_analysis_result の「ソリューションステータス」、「ステータスの更新」、および進捗状況を確認します。*_application提案ソリューションの場合: [システム定義] -> [バックグラウンドスクリプト] に移動します。グローバルスコープで次のバックグラウンドスクリプトを実行します。 var mlSolution = sn_ml.ClusteringSolutionStore.get(<clustering solution name > (i.e. ml_x_scb_global_global_application_suggestion_1");var mlSolutionVersion = mlSolution.getActiveVersion();mlSolutionVersion.cancelUpdateJob(); // cancel update job *_proc_conn ソリューションの場合 [システム定義] -> [バックグラウンドスクリプト] に移動します。グローバルスコープで次のスクリプトを実行します。 var mlSolution = sn_ml.DataAnalysisStore.get(<data analysis solution name> (i.e. ml_x_snc_global_global_proc_conn_1);var mlSolutionVersion = mlSolution.getActiveVersion();mlSolutionVersion.cancelUpdateJob(); // cancel update job さらに問題が発生した場合は、Dev-SW-SmurAI チームにお問い合わせください (チーム名は大文字と小文字が区別されます)。 解決策:ジョブをキャンセルしてもトレーニングの問題が解決しなかった場合のフルクリーンアップ トラブルシューティングしているインスタンスがクローンインスタンスであり、インスタンスに存在するソリューションがベースインスタンスからのレコードのクローンを介して取得された場合は、完全なクリーンアップが必要になります。ベースインスタンスで ソリューションが作成されています 注意: クローンインスタンスでプロパティ glide.servleturl を上書きしている場合は、クローン後にインスタンス名がクローンインスタンスに更新されていることを確認してください。 クローンインスタンスでは、クローンインスタンスでトレーニングを最初から開始する必要があります。 実行: トレーナーの可用性障害後の SM ML ベースの機能の復旧手順 問題:接続提案の決定は [ルールによって追加] または [手動で追加] ですが、接続がマップに表示されません。 解決策:ソース CI として分類されたターゲットプロセス 1. 検出およびパターンプロセスがターゲットプロセスをソース CI と同じ CI として分類する場合、接続はマップに追加されません。 2. このユースケースを確認するには、ソース CI 検出ログを確認します。同じ CI (ソース CI エンドポイントと接続提案エンドポイント) を検出するエンドポイントが少なくとも 2 つ存在します。 解決策:検出メッセージログを確認 検出ログにはエラーが表示されても、サービスマップには表示されないことがあります。 オープン検出メッセージログ 追加されたがマップに表示されていない接続提案と同じ IP およびポートでエラーがあるかどうかを確認します。 トレーナーの可用性障害後の SM ML ベースの機能の復旧手順 1.アプリケーションの指紋認証ソリューションを削除 メインナビゲーションメニューから「ml_capability_definition_base.list」と入力します。ソリューション名を「*global_application_suggestion」でフィルターすべての外観を選択し、アクションメニューから [削除] を選択します。sa_hash からフローエントリを削除します。 2.接続提案ソリューションを削除 メインナビゲーションメニューから「ml_capability_definition_base.list」と入力しますソリューション名を「*global_proc_conn」でフィルターします。すべての外観を選択し、アクションメニューから [削除] を選択します。sa_hash から次のエントリを削除します。 3.テーブルからデータを削除 メインナビゲーションメニューから [システム定義] -> [テーブル] に移動します。cmdb_process_groups テーブルを入力します。以下のとおりにすべてのレコードを削除します。sa_ml_process_to_process に対しても同じ操作を行います。 接続提案を削除する必要がある場合は、sa_ml_connection_suggestion テーブルからエントリを削除します。アプリケーションサービスマップに影響することに注意してください。このような影響が望ましくない場合は、このテーブルからレコードを削除しないでください。 4.アプリケーションの指紋認証の前提条件を検証 PI プラグインがインストールされていることを検証します。システムプロパティ「process.clustering.appfingerprint.enabled」が存在し、「true」に等しいか、存在しないことを確認します。 5.アプリの指紋認証ジョブスケジュールを実行 メインナビゲーションメニューから「sysauto_script.list」と入力します。フィルター名:「アプリケーション提案 - ITOM Autodiscovery」でフィルターします。以下のように [今すぐ実行] を押します。ソリューションが完了したことを確認します。ml_solution.list に移動し、「*global_application_suggestion」でソリューション名をフィルタリングします。cmdb_process_groups テーブルにレコードがあることを確認します。 6. 接続提案のスケジュール設定済みジョブを実行 メインナビゲーションメニューから「sysauto_script.list」と入力します。フィルター名:「Service Mapping - 処理するトラフィックプロセス」でフィルターします。以下のように [今すぐ実行] を押します。 7.sys_autoscript ジョブを実行してから数時間後に後検証を行います。 ml_solution の下にデータ分析ソリューションが存在し、完了ステータスであることを確認します。ソリューションがトレーナーに接続され、正常に終了したことを確認します。最近の結果レコードがテーブル ml_connection_analysis_result に存在するはずです。テーブル sa_ml_process_to_process にレコードがあることを確認します。結果を表示するための最小行数は 1 万行であるため、テーブルには is_complete = true の行が 1 万行を超える必要があります。テーブル ml_data_analysis_sol_update にレコードがあることを確認します。作成されるソリューションは ml_solution テーブルにあり、proc_conn というテキストが含まれます。最初のソリューションが作成された後、更新はテーブル ml_data_analysis_sol_update に表示されます。