次の方法で共有


az networkcloud baremetalmachine run-data-extract コマンドを使用したベアメタル マシンの問題のトラブルシューティング

ユーザーがオンプレミスのベア メタル マシンに関する問題を調査して解決する必要がある場合があります。 Azure Operator Nexus では、az networkcloud baremetalmachine run-data-extract を介して所定のデータ抽出コマンドのセットが提供されます。 これらのコマンドを使用すると、ユーザーはベア メタル マシンから診断データを取得できます。

このコマンドは、データ抽出の結果を格納する出力ファイルを生成します。 既定では、データはクラスター マネージャー ストレージ アカウントに送信されます。 また、ユーザーが、そのストレージ アカウントにアクセスできるストレージ アカウントと ID を使用してクラスター リソースを構成し、その出力を受信できるプレビューの方法もあります。

前提条件

  • この記事では、Azure コマンド ライン インターフェイスと networkcloud コマンド ライン インターフェイス拡張機能がインストールされていることを前提としています。 詳細については、「CLI 拡張機能をインストールする方法」を参照してください。
  • ターゲットのベア メタル マシンはオンであり、準備できている必要があります。
  • これらのコマンドの構文は、az networkcloud CLI の 0.3.0 以降のバージョンに基づいています。
  • クラスター リソース用に作成したクラスター管理対象リソース グループ名 (cluster_MRG) を取得します。

クラスター マネージャー ストレージ アカウントへのアクセスを確認する

Note

今後、信頼されたサービスへのクラスターのオンボードが完了し、ユーザー マネージド ストレージ オプションが完全にサポートされると、クラスター マネージャー ストレージ アカウントの出力方法は非推奨となる予定です。

クラスター マネージャーのストレージ方法を使用している場合は、クラスター マネージャーのストレージ アカウントにアクセスできることを確認します。

  1. Azure portal から、クラスター マネージャーのストレージ アカウントに移動します。
  2. ストレージ アカウントの詳細で、左側のナビゲーション メニューから [ストレージ ブラウザー] を選択します。
  3. ストレージ ブラウザーの詳細で、[BLOB コンテナー] を選択します。
  4. ストレージ アカウントへのアクセス中に 403 This request is not authorized to perform this operation. が表示された場合、ストレージ アカウントのファイアウォール設定を更新して、パブリック IP アドレスが含まれるようにする必要があります。
  5. クラスター マネージャー リソースでポータルを介してサポート チケットを作成して、アクセスを要求します。 アクセスを必要とするパブリック IP アドレスを指定します。

プレビュー: ユーザー指定のストレージ アカウントにコマンド出力を送信する

重要

コマンド出力用にユーザー ストレージ アカウントを指定するこの方法は、プレビュー段階であることに注意してください。 この方法は、ファイアウォールが有効になっていないユーザー ストレージ アカウントでのみ使用する必要があります。 お使いの環境でストレージ アカウントのファイアウォールを有効にする必要がある場合は、既存のクラスター マネージャーの出力方法を使用してください。

ストレージ リソースを作成して構成する

  1. ストレージ アカウントを作成する、または使用する既存のストレージ アカウントを特定します。 「Azure Storage アカウントを作成する」を参照してください。
  2. ストレージ アカウント内に Blob Storage コンテナーを作成します。 「コンテナーを作成する」を参照してください。
  3. "ストレージ BLOB データ共同作成者" ロールを、run-data-extract の出力へのアクセスが必要なユーザーとマネージド ID に割り当てます。
    1. BLOB データにアクセスするための Azure ロールを割り当てる」を参照してください。 また、このロールは、ユーザー割り当てマネージド ID またはクラスター独自のシステム割り当てマネージド ID のいずれかにも割り当てる必要があります。
    2. マネージド ID の詳細については、Azure リソースのマネージド ID に関するページを参照してください。
    3. クラスターのシステム割り当て ID を使用する場合は、アクセスを付与する前に、そのシステム割り当て ID をクラスターに追加する必要があります。
    4. クラスターのシステム割り当て ID にロールを割り当てる場合は、必ず "クラスター (Operator Nexus)" という種類のリソースを選択してください。

ストレージ アクセスにユーザー割り当てマネージド ID を使用するようにクラスターを構成する

ユーザー マネージド ストレージ アカウントとユーザー割り当て ID を持つクラスターを作成するには、このコマンドを使用します。 この例は、ユーザー マネージド ストレージの追加に関係するフィールドを強調するだけの、省略されたコマンドであることに注意してください。 これは、完全な cluster create コマンドではありません。

az networkcloud cluster create --name "<cluster-name>" \
  --resource-group "<cluster-resource-group>" \
  ...
  --mi-user-assigned "<user-assigned-identity-resource-id>" \
  --command-output-settings identity-type="UserAssignedIdentity" \
  identity-resource-id="<user-assigned-identity-resource-id>" \
  container-url="<container-url>" \
  ...
  --subscription "<subscription>"

ユーザーが指定したストレージ アカウントとユーザー割り当て ID 用に既存のクラスターを構成するには、このコマンドを使用します。 update コマンドを使用し、必要に応じてストレージ アカウントの場所と ID を変更することもできます。

az networkcloud cluster update --name "<cluster-name>" \
  --resource-group "<cluster-resource-group>" \
  --mi-user-assigned "<user-assigned-identity-resource-id>" \
  --command-output-settings identity-type="UserAssignedIdentity" \
  identity-resource-id="<user-assigned-identity-resource-id>" \
  container-url="<container-url>" \
  --subscription "<subscription>"

ストレージ アクセスにシステム割り当てマネージド ID を使用するようにクラスターを構成する

ユーザー マネージド ストレージ アカウントとシステム割り当て ID を持つクラスターを作成するには、このコマンドを使用します。 この例は、ユーザー マネージド ストレージの追加に関係するフィールドを強調するだけの、省略されたコマンドであることに注意してください。 これは、完全な cluster create コマンドではありません。

az networkcloud cluster create --name "<cluster-name>" \
  --resource-group "<cluster-resource-group>" \
  ...
  --mi-system-assigned true \
  --command-output-settings identity-type="SystemAssignedIdentity" \
  container-url="<container-url>" \
  ...
  --subscription "<subscription>"

ユーザーが指定したストレージ アカウント用に既存のクラスターを構成し、独自のシステム割り当て ID を使用するには、このコマンドを使用します。 update コマンドを使用して、ストレージ アカウントの場所を変更することもできます。

az networkcloud cluster update --name "<cluster-name>" \
  --resource-group "<cluster-resource-group>" \
  --mi-system-assigned true \
  --command-output-settings identity-type="SystemAssignedIdentity" \
  container-url="<container-url>" \
  --subscription "<subscription>"

クラスターをユーザー割り当て ID からシステム割り当て ID に変更するには、まず次のセクションの中のコマンドを使用して CommandOutputSettings をクリアしてから、このコマンドを使用して設定する必要があります。

クラスターの CommandOutputSettings をクリアする

CommandOutputSettings をクリアし、run-data-extract の出力をクラスター マネージャーのストレージに戻すことができます。 ただし、これは安全性が低く、このオプションは今後のリリースで削除されるため、お勧めしません。

しかしながら、ユーザー割り当て ID からシステム割り当て ID に切り替える場合は、CommandOutputSettings をクリアする必要があります。

CommandOutputSettings をクリアするには、このコマンドを使用します。

az rest --method patch \
  --url  "https://management.azure.com/subscriptions/<subscription>/resourceGroups/<cluster-resource-group>/providers/Microsoft.NetworkCloud/clusters/<cluster-name>?api-version=2024-08-01-preview" \
  --body '{"properties": {"commandOutputSettings":null}}'

マネージド ID のプリンシパル ID を表示する

ID リソースの ID は、その ID リソース上で "JSON ビュー" を選択すると参照できます。この ID は、表示されるパネルの上部にあります。 コンテナーの URL は、コンテナー リソースの [設定] -> [プロパティ] タブ上で参照できます。

CLI を使用して、クラスター内の ID と、関連付けられたプリンシパル ID データを表示することもできます。

例:

az networkcloud cluster show --ids /subscriptions/<Subscription ID>/resourceGroups/<Cluster Resource Group Name>/providers/Microsoft.NetworkCloud/clusters/<Cluster Name>

システム割り当て ID の例:

    "identity": {
        "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
        "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
        "type": "SystemAssigned"
    },

ユーザー割り当て ID の例:

    "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
            "/subscriptions/<subscriptionID>/resourcegroups/<resourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userAssignedIdentityName>": {
                "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
                "principalId": "bbbbbbbb-cccc-dddd-2222-333333333333"
            }
        }
    },

run-data-extract コマンドを実行する

データ抽出の実行コマンドは、1 つ以上の定義済みスクリプトを実行して、ベア メタル マシンからデータを抽出します。

警告

Microsoft では、プレーンテキストのユーザー名やパスワードを指定することが想定される Operator Nexus API 呼び出しを提供またはサポートしていません。 送信されるすべての値がログに記録され、公開されたシークレットであると見なされ、これらにはローテーションおよび取り消しが必要があることに注意してください。 Microsoft が文書化したシークレットを安全に使用する方法は、それらを Azure Key Vault に格納する方法です。特定のご質問やご不明な点がある場合は、Azure Portal 経由でリクエストを送信してください。

サポートされているコマンドの現在の一覧は次のとおりです

コマンド構文は次のとおりです。

az networkcloud baremetalmachine run-data-extract --name "<machine-name>"  \
  --resource-group "<cluster_MRG>" \
  --subscription "<subscription>" \
  --commands '[{"arguments":["<arg1>","<arg2>"],"command":"<command1>"}]'  \
  --limit-time-seconds "<timeout>"

--commands オプションで json 形式を使用して複数のコマンドを指定します。 各 command は、コマンドと引数を指定します。 複数の引数を持つコマンドの場合は、arguments パラメーターのリストとして指定します。 --commands構造の構築手順については、「Azure CLI の短縮表現」を参照してください。

これらのコマンドは実行時間が長い場合があるため、--limit-time-seconds を少なくとも 600 秒 (10 分) に設定することをおすすめします。 Debug オプションまたは複数の抽出の実行には、10 分以上かかる場合があります。

応答では、操作は非同期的に実行され、HTTP 状態コード 202 が返されます。 コマンドの完了を追跡し、出力ファイルを表示する方法の詳細については、「出力の表示」セクションを参照してください。

ハードウェア サポート データの収集

この例では、hardware-support-data-collection コマンドを実行し、Dell Server から SysInfo ログと TTYLog ログを取得します。 このスクリプトは、指定されたベアメタル マシンで racadm supportassist collect コマンドを実行します。 結果の tar.gz ファイルには、hardware-support-data-<timestamp>.zip 形式で圧縮された抽出コマンド ファイル出力が含まれています。

az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
  --resource-group "cluster_MRG" \
  --subscription "subscription" \
  --commands '[{"arguments":["SysInfo", "TTYLog"],"command":"hardware-support-data-collection"}]' \
  --limit-time-seconds 600

hardware-support-data-collection 出力

====Action Command Output====
Executing hardware-support-data-collection command
Getting following hardware support logs: SysInfo,TTYLog
Job JID_814372800396 is running, waiting for it to complete ...
Job JID_814372800396 Completed.
---------------------------- JOB -------------------------
[Job ID=JID_814372800396]
Job Name=SupportAssist Collection
Status=Completed
Scheduled Start Time=[Not Applicable]
Expiration Time=[Not Applicable]
Actual Start Time=[Thu, 13 Apr 2023 20:54:40]
Actual Completion Time=[Thu, 13 Apr 2023 20:59:51]
Message=[SRV088: The SupportAssist Collection Operation is completed successfully.]
Percent Complete=[100]
----------------------------------------------------------
Deleting Job JID_814372800396
Collection successfully exported to /hostfs/tmp/runcommand/hardware-support-data-2023-04-13T21:00:01.zip

================================
Script execution result can be found in storage account:
https://cm2p9bctvhxnst.blob.core.windows.net/bmm-run-command-output/dd84df50-7b02-4d10-a2be-46782cbf4eef-action-bmmdataextcmd.tar.gz?se=2023-04-14T01%3A00%3A15Zandsig=ZJcsNoBzvOkUNL0IQ3XGtbJSaZxYqmtd%2BM6rmxDFqXE%3Dandsp=randspr=httpsandsr=bandst=2023-04-13T21%3A00%3A15Zandsv=2019-12-12

収集されたハードウェア サポート ファイルの一覧の例

Archive:  TSR20240227164024_FM56PK3.pl.zip
   creating: tsr/hardware/
   creating: tsr/hardware/spd/
   creating: tsr/hardware/sysinfo/
   creating: tsr/hardware/sysinfo/inventory/
  inflating: tsr/hardware/sysinfo/inventory/sysinfo_CIM_BIOSAttribute.xml
  inflating: tsr/hardware/sysinfo/inventory/sysinfo_CIM_Sensor.xml
  inflating: tsr/hardware/sysinfo/inventory/sysinfo_DCIM_View.xml
  inflating: tsr/hardware/sysinfo/inventory/sysinfo_DCIM_SoftwareIdentity.xml
  inflating: tsr/hardware/sysinfo/inventory/sysinfo_CIM_Capabilities.xml
  inflating: tsr/hardware/sysinfo/inventory/sysinfo_CIM_StatisticalData.xml
   creating: tsr/hardware/sysinfo/lcfiles/
  inflating: tsr/hardware/sysinfo/lcfiles/lclog_0.xml.gz
  inflating: tsr/hardware/sysinfo/lcfiles/curr_lclog.xml
   creating: tsr/hardware/psu/
   creating: tsr/hardware/idracstateinfo/
  inflating: tsr/hardware/idracstateinfo/avc.log
 extracting: tsr/hardware/idracstateinfo/avc.log.persistent.1
[..snip..]

MDE エージェント情報の収集

データは mde-agent-information コマンドで収集され、JSON として /hostfs/tmp/runcommand/mde-agent-information.json に書式設定されます。 JSON ファイルは、ストレージ アカウントにあるデータ抽出 zip ファイルにあります。 このスクリプトは、指定されたベアメタル マシンで一連の mdatp コマンドを実行します。

この例では、引数を指定せずに mde-agent-information コマンドを実行します。

az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
  --resource-group "cluster_MRG" \
  --subscription "subscription" \
  --commands '[{"command":"mde-agent-information"}]' \
  --limit-time-seconds 600

mde-agent-information 出力

====Action Command Output====
Executing mde-agent-information command
MDE agent is running, proceeding with data extract
Getting MDE agent information for bareMetalMachine
Writing to /hostfs/tmp/runcommand

================================
Script execution result can be found in storage account:
 https://cmzhnh6bdsfsdwpbst.blob.core.windows.net/bmm-run-command-output/f5962f18-2228-450b-8cf7-cb8344fdss63b0-action-bmmdataextcmd.tar.gz?se=2023-07-26T19%3A07%3A22Z&sig=X9K3VoNWRFP78OKqFjvYoxubp65BbNTq%2BGnlHclI9Og%3D&sp=r&spr=https&sr=b&st=2023-07-26T15%3A07%3A22Z&sv=2019-12-12

収集された JSON オブジェクトの例

{
  "diagnosticInformation": {
      "realTimeProtectionStats": $real_time_protection_stats,
      "eventProviderStats": $event_provider_stats
      },
  "mdeDefinitions": $mde_definitions,
  "generalHealth": $general_health,
  "mdeConfiguration": $mde_config,
  "scanList": $scan_list,
  "threatInformation": {
      "list": $threat_info_list,
      "quarantineList": $threat_info_quarantine_list
    }
}

MDE サポート診断の収集

mde-support-diagnostics コマンドから収集されたデータは、MDE Client Analyzer ツールを使用して、mdatp コマンドと関連ログ ファイルからの情報をバンドルします。 ストレージ アカウントの tgz ファイルには、mde-support-diagnostics-<hostname>.zip という名前の zip ファイルが格納されています。 この zip は、サポート チームが必要に応じてトラブルシューティングや根本原因分析にログを使用できるようにするために、サポート リクエストと一緒に送信する必要があります。

この例では、引数を指定せずに mde-support-diagnostics コマンドを実行します。

az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
  --resource-group "cluster_MRG" \
  --subscription "subscription" \
  --commands '[{"command":"mde-support-diagnostics"}]' \
  --limit-time-seconds 600

mde-support-diagnostics 出力

====Action Command Output====
Executing mde-support-diagnostics command
[2024-01-23 16:07:37.588][INFO] XMDEClientAnalyzer Version: 1.3.2
[2024-01-23 16:07:38.367][INFO] Top Command output: [/tmp/top_output_2024_01_23_16_07_37mel0nue0.txt]
[2024-01-23 16:07:38.367][INFO] Top Command Summary: [/tmp/top_summary_2024_01_23_16_07_370zh7dkqn.txt]
[2024-01-23 16:07:38.367][INFO] Top Command Outliers: [/tmp/top_outlier_2024_01_23_16_07_37aypcfidh.txt]
[2024-01-23 16:07:38.368][INFO] [MDE Diagnostic]
[2024-01-23 16:07:38.368][INFO]   Collecting MDE Diagnostic
[2024-01-23 16:07:38.613][WARNING] mde is not running
[2024-01-23 16:07:41.343][INFO] [SLEEP] [3sec] waiting for agent to create diagnostic package
[2024-01-23 16:07:44.347][INFO] diagnostic package path: /var/opt/microsoft/mdatp/wdavdiag/5b1edef9-3b2a-45c1-a45d-9e7e4b6b869e.zip
[2024-01-23 16:07:44.347][INFO] Successfully created MDE diagnostic zip
[2024-01-23 16:07:44.348][INFO]   Adding mde_diagnostic.zip to report directory
[2024-01-23 16:07:44.348][INFO]   Collecting MDE Health
[...snip...]
================================
Script execution result can be found in storage account:
 https://cmmj627vvrzkst.blob.core.windows.net/bmm-run-command-output/7c5557b9-b6b6-a4a4-97ea-752c38918ded-action-bmmdataextcmd.tar.gz?se=2024-01-23T20%3A11%3A32Z&sig=9h20XlZO87J7fCr0S1234xcyu%2Fl%2BVuaDh1BE0J6Yfl8%3D&sp=r&spr=https&sr=b&st=2024-01-23T16%3A11%3A32Z&sv=2019-12-12

実行結果ファイルをダウンロードすると、分析のためにサポート ファイルを解凍できます。

MDE クライアント アナライザーによって収集される情報の一覧の例

Archive:  mde-support-diagnostics-rack1compute02.zip
  inflating: mde_diagnostic.zip
  inflating: process_information.txt
  inflating: auditd_info.txt
  inflating: auditd_log_analysis.txt
  inflating: auditd_logs.zip
  inflating: ebpf_kernel_config.txt
  inflating: ebpf_enabled_func.txt
  inflating: ebpf_syscalls.zip
  inflating: ebpf_raw_syscalls.zip
  inflating: messagess.zip
  inflating: conflicting_processes_information.txt
[...snip...]

ハードウェア ロールアップの状態

データは hardware-rollup-status コマンドで収集され、JSON として /hostfs/tmp/runcommand/rollupStatus.json に書式設定されます。 JSON ファイルは、ストレージ アカウントにあるデータ抽出 zip ファイルにあります。 収集されたデータには、マシン サブシステムの正常性が表示されます。

この例では、引数を指定せずに hardware-rollup-status コマンドを実行します。

az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
  --resource-group "clusete_MRG" \
  --subscription "subscription" \
  --commands '[{"command":"hardware-rollup-status"}]' \
  --limit-time-seconds 600

hardware-rollup-status 出力

====Action Command Output====
Executing hardware-rollup-status command
Getting rollup status logs for b37dev03a1c002
Writing to /hostfs/tmp/runcommand

================================
Script execution result can be found in storage account:
https://cmkfjft8twwpst.blob.core.windows.net/bmm-run-command-output/20b217b5-ea38-4394-9db1-21a0d392eff0-action-bmmdataextcmd.tar.gz?se=2023-09-19T18%3A47%3A17Z&sig=ZJcsNoBzvOkUNL0IQ3XGtbJSaZxYqmtd%3D&sp=r&spr=https&sr=b&st=2023-09-19T14%3A47%3A17Z&sv=2019-12-12

収集された JSON の例

{
	"@odata.context" : "/redfish/v1/$metadata#DellRollupStatusCollection.DellRollupStatusCollection",
	"@odata.id" : "/redfish/v1/Systems/System.Embedded.1/Oem/Dell/DellRollupStatus",
	"@odata.type" : "#DellRollupStatusCollection.DellRollupStatusCollection",
	"Description" : "A collection of DellRollupStatus resource",
	"Members" :
	[
		{
			"@odata.context" : "/redfish/v1/$metadata#DellRollupStatus.DellRollupStatus",
			"@odata.id" : "/redfish/v1/Systems/System.Embedded.1/Oem/Dell/DellRollupStatus/iDRAC.Embedded.1_0x23_SubSystem.1_0x23_Current",
			"@odata.type" : "#DellRollupStatus.v1_0_0.DellRollupStatus",
			"CollectionName" : "CurrentRollupStatus",
			"Description" : "Represents the subcomponent roll-up statuses.",
			"Id" : "iDRAC.Embedded.1_0x23_SubSystem.1_0x23_Current",
			"InstanceID" : "iDRAC.Embedded.1#SubSystem.1#Current",
			"Name" : "DellRollupStatus",
			"RollupStatus" : "Ok",
			"SubSystem" : "Current"
		},
		{
			"@odata.context" : "/redfish/v1/$metadata#DellRollupStatus.DellRollupStatus",
			"@odata.id" : "/redfish/v1/Systems/System.Embedded.1/Oem/Dell/DellRollupStatus/iDRAC.Embedded.1_0x23_SubSystem.1_0x23_Voltage",
			"@odata.type" : "#DellRollupStatus.v1_0_0.DellRollupStatus",
			"CollectionName" : "VoltageRollupStatus",
			"Description" : "Represents the subcomponent roll-up statuses.",
			"Id" : "iDRAC.Embedded.1_0x23_SubSystem.1_0x23_Voltage",
			"InstanceID" : "iDRAC.Embedded.1#SubSystem.1#Voltage",
			"Name" : "DellRollupStatus",
			"RollupStatus" : "Ok",
			"SubSystem" : "Voltage"
		},
[..snip..]

クラスター CVE レポートを生成する

脆弱性データは cluster-cve-report コマンドで収集され、JSON として {year}-{month}-{day}-nexus-cluster-vulnerability-report.json に書式設定されます。 JSON ファイルは、ストレージ アカウントにあるデータ抽出 zip ファイルにあります。 収集されるデータには、クラスター内のコンテナー イメージごとの脆弱性データが含まれます。

この例では、引数を指定せずに cluster-cve-report コマンドを実行します。

Note

ターゲット マシンはコントロール プレーン ノードである必要があり、そうでない場合、アクションは実行されません。

az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
  --resource-group "cluster_MRG" \
  --subscription "subscription" \
  --commands '[{"command":"cluster-cve-report"}]' \
  --limit-time-seconds 600

cluster-cve-report 出力

====Action Command Output====
Nexus cluster vulnerability report saved.


================================
Script execution result can be found in storage account:
https://cmkfjft8twwpst.blob.core.windows.net/bmm-run-command-output/20b217b5-ea38-4394-9db1-21a0d392eff0-action-bmmdataextcmd.tar.gz?se=2023-09-19T18%3A47%3A17Z&sig=ZJcsNoBzvOkUNL0IQ3XGtbJSaZxYqmtd%3D&sp=r&spr=https&sr=b&st=2023-09-19T14%3A47%3A17Z&sv=2019-12-12

CVE レポート スキーマ

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Vulnerability Report",
  "type": "object",
  "properties": {
    "metadata": {
      "type": "object",
      "properties": {
        "dateRetrieved": {
          "type": "string",
          "format": "date-time",
          "description": "The date and time when the data was retrieved."
        },
        "platform": {
          "type": "string",
          "description": "The name of the platform."
        },
        "resource": {
          "type": "string",
          "description": "The name of the resource."
        },
        "runtimeVersion": {
          "type": "string",
          "description": "The version of the runtime."
        },
        "managementVersion": {
          "type": "string",
          "description": "The version of the management software."
        },
        "vulnerabilitySummary": {
          "type": "object",
          "properties": {
            "criticalCount": {
              "type": "integer",
              "description": "Number of critical vulnerabilities."
            },
            "highCount": {
              "type": "integer",
              "description": "Number of high severity vulnerabilities."
            },
            "mediumCount": {
              "type": "integer",
              "description": "Number of medium severity vulnerabilities."
            },
            "lowCount": {
              "type": "integer",
              "description": "Number of low severity vulnerabilities."
            },
            "noneCount": {
              "type": "integer",
              "description": "Number of vulnerabilities with no severity."
            },
            "unknownCount": {
              "type": "integer",
              "description": "Number of vulnerabilities with unknown severity."
            }
          },
          "required": ["criticalCount", "highCount", "mediumCount", "lowCount", "noneCount", "unknownCount"]
        }
      },
      "required": ["dateRetrieved", "platform", "resource", "runtimeVersion", "managementVersion", "vulnerabilitySummary"]
    },
    "containers": {
      "type": "object",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "namespace": {
              "type": "string",
              "description": "The namespace of the container."
            },
            "digest": {
              "type": "string",
              "description": "The digest of the container image."
            },
            "os": {
              "type": "object",
              "properties": {
                "family": {
                  "type": "string",
                  "description": "The family of the operating system."
                }
              },
              "required": ["family"]
            },
            "summary": {
              "type": "object",
              "properties": {
                "criticalCount": {
                  "type": "integer",
                  "description": "Number of critical vulnerabilities in this container."
                },
                "highCount": {
                  "type": "integer",
                  "description": "Number of high severity vulnerabilities in this container."
                },
                "lowCount": {
                  "type": "integer",
                  "description": "Number of low severity vulnerabilities in this container."
                },
                "mediumCount": {
                  "type": "integer",
                  "description": "Number of medium severity vulnerabilities in this container."
                },
                "noneCount": {
                  "type": "integer",
                  "description": "Number of vulnerabilities with no severity in this container."
                },
                "unknownCount": {
                  "type": "integer",
                  "description": "Number of vulnerabilities with unknown severity in this container."
                }
              },
              "required": ["criticalCount", "highCount", "lowCount", "mediumCount", "noneCount", "unknownCount"]
            },
            "vulnerabilities": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "description": "Title of the vulnerability."
                  },
                  "vulnerabilityID": {
                    "type": "string",
                    "description": "Identifier of the vulnerability."
                  },
                  "fixedVersion": {
                    "type": "string",
                    "description": "The version in which the vulnerability is fixed."
                  },
                  "installedVersion": {
                    "type": "string",
                    "description": "The currently installed version."
                  },
                  "referenceLink": {
                    "type": "string",
                    "format": "uri",
                    "description": "Link to the vulnerability details."
                  },
                  "publishedDate": {
                    "type": "string",
                    "format": "date-time",
                    "description": "The date when the vulnerability was published."
                  },
                  "score": {
                    "type": "number",
                    "description": "The CVSS score of the vulnerability."
                  },
                  "severity": {
                    "type": "string",
                    "description": "The severity level of the vulnerability."
                  },
                  "resource": {
                    "type": "string",
                    "description": "The resource affected by the vulnerability."
                  },
                  "target": {
                    "type": "string",
                    "description": "The target of the vulnerability."
                  },
                  "packageType": {
                    "type": "string",
                    "description": "The type of the package."
                  },
                  "exploitAvailable": {
                    "type": "boolean",
                    "description": "Indicates if an exploit is available for the vulnerability."
                  }
                },
                "required": ["title", "vulnerabilityID", "fixedVersion", "installedVersion", "referenceLink", "publishedDate", "score", "severity", "resource", "target", "packageType", "exploitAvailable"]
              }
            }
          },
          "required": ["namespace", "digest", "os", "summary", "vulnerabilities"]
        }
      }
    }
  },
  "required": ["metadata", "containers"]
}

CVE データの詳細

CVE データは、コンテナー イメージごとに 24 時間ごと、またはイメージを参照する Kubernetes リソースに変更が発生したときに更新されます。

Helm リリースの収集

Helm リリース データは、collect-helm-releases コマンドで収集され、jason として {year}-{month}-{day}-helm-releases.json に書式設定されます。 JSON ファイルは、ストレージ アカウントにあるデータ抽出 zip ファイルにあります。 収集されたデータには、クラスターからのすべての Helm リリース情報が含まれます。これは、helm list コマンドを実行したときに返される標準データから構成されています。

この例では、引数を指定せずに collect-helm-releases コマンドを実行します。

Note

ターゲット マシンはコントロール プレーン ノードである必要があり、そうでない場合、アクションは実行されません。

az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
  --resource-group "cluster_MRG" \
  --subscription "subscription" \
  --commands '[{"command":"collect-helm-releases"}]' \
  --limit-time-seconds 600

collect-helm-releases 出力

====Action Command Output====
Helm releases report saved.


================================
Script execution result can be found in storage account:
https://cmcr5xp3mbn7st.blob.core.windows.net/bmm-run-command-output/a29dcbdb-5524-4172-8b55-88e0e5ec93ff-action-bmmdataextcmd.tar.gz?se=2024-10-30T02%3A09%3A54Z&sig=v6cjiIDBP9viEijs%2B%2BwJDrHIAbLEmuiVmCEEDHEi%2FEc%3D&sp=r&spr=https&sr=b&st=2024-10-29T22%3A09%3A54Z&sv=2023-11-03

Helm リリース スキーマ

{
  "$schema": "http://json-schema.org/schema#",
  "type": "object",
  "properties": {
    "metadata": {
      "type": "object",
      "properties": {
        "dateRetrieved": {
          "type": "string"
        },
        "platform": {
          "type": "string"
        },
        "resource": {
          "type": "string"
        },
        "clusterId": {
          "type": "string"
        },
        "runtimeVersion": {
          "type": "string"
        },
        "managementVersion": {
          "type": "string"
        }
      },
      "required": [
        "clusterId",
        "dateRetrieved",
        "managementVersion",
        "platform",
        "resource",
        "runtimeVersion"
      ]
    },
    "helmReleases": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          },
          "revision": {
            "type": "string"
          },
          "updated": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "chart": {
            "type": "string"
          },
          "app_version": {
            "type": "string"
          }
        },
        "required": [
          "app_version",
          "chart",
          "name",
          "namespace",
          "revision",
          "status",
          "updated"
        ]
      }
    }
  },
  "required": [
    "helmReleases",
    "metadata"
  ]
}

Systemctl Status 出力を収集する

サービス状態は、platform-services-status コマンドで収集されます。 出力はプレーン テキスト形式で、ホスト上のサービスの状態の概要と、見つかった各サービスの systemctl status を返します。

この例では、引数を指定せずに platform-services-status コマンドを実行します。

az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
  --resource-group "clusete_MRG" \
  --subscription "subscription" \
  --commands '[{"command":"platform-services-status"}]' \
  --limit-time-seconds 600
  --output-directory "/path/to/local/directory"

platform-services-status 出力

====Action Command Output====
UNIT                                                                                          LOAD      ACTIVE   SUB     DESCRIPTION
aods-infra-vf-config.service                                                                  not-found inactive dead    aods-infra-vf-config.service
aods-pnic-config-infra.service                                                                not-found inactive dead    aods-pnic-config-infra.service
aods-pnic-config-workload.service                                                             not-found inactive dead    aods-pnic-config-workload.service
arc-unenroll-file-semaphore.service                                                           loaded    active   exited  Arc-unenrollment upon shutdown service
atop-rotate.service                                                                           loaded    inactive dead    Restart atop daemon to rotate logs
atop.service                                                                                  loaded    active   running Atop advanced performance monitor
atopacct.service                                                                              loaded    active   running Atop process accounting daemon
audit.service                                                                                 loaded    inactive dead    Audit service
auditd.service                                                                                loaded    active   running Security Auditing Service
azurelinux-sysinfo.service                                                                    loaded    inactive dead    Azure Linux Sysinfo Service
blk-availability.service                                                                      loaded    inactive dead    Availability of block devices
[..snip..]


-------
● arc-unenroll-file-semaphore.service - Arc-unenrollment upon shutdown service
     Loaded: loaded (/etc/systemd/system/arc-unenroll-file-semaphore.service; enabled; vendor preset: enabled)
     Active: active (exited) since Tue 2024-11-12 06:33:40 UTC; 11h ago
   Main PID: 11663 (code=exited, status=0/SUCCESS)
        CPU: 5ms

Nov 12 06:33:39 rack1compute01 systemd[1]: Starting Arc-unenrollment upon shutdown service...
Nov 12 06:33:40 rack1compute01 systemd[1]: Finished Arc-unenrollment upon shutdown service.


-------
○ atop-rotate.service - Restart atop daemon to rotate logs
     Loaded: loaded (/usr/lib/systemd/system/atop-rotate.service; static)
     Active: inactive (dead)
TriggeredBy: ● atop-rotate.timer
[..snip..]

出力の表示

このコマンドでは、完全な出力をダウンロードするためのリンク (クラスター マネージャー ストレージを使用している場合) または別のコマンド (ユーザーが指定したストレージを使用している場合) が提供されます。 tar.gz ファイルには、zip 形式で圧縮された抽出コマンド ファイルの出力も含まれています。 オプションの引数 --output-directory にディレクトリ パスを指定して、ストレージ BLOB からローカル ディレクトリに出力ファイルをダウンロードします。

警告

--output-directory 引数を使用すると、作成する新しいファイルと同じ名前を持つローカル ディレクトリ内のすべてのファイルが上書きされます。

Note

ストレージ アカウントがロックされ、ネットワークまたはファイアウォールの制限が原因で 403 This request is not authorized to perform this operation. が発生する可能性があります。 アクセスを確認する手順については、クラスター マネージャー ストレージまたはユーザー管理ストレージに関するセクションを参照してください。