Behandeln von Problemen mit Bare-Metal-Computern mithilfe des Befehls az networkcloud baremetalmachine run-data-extract
Es kann Situationen geben, in denen ein Benutzer Probleme mit einem lokalen Bare-Metal-Computer untersuchen und auflösen muss. Azure Operator Nexus bietet über az networkcloud baremetalmachine run-data-extract
einen vorgeschriebenen Satz von Datenextraktionsbefehlen. Mit diesen Befehlen können Benutzer Diagnosedaten von einem Bare-Metal-Computer abrufen.
Der Befehl erzeugt eine Ausgabedatei, welche die Ergebnisse der Datenextraktion enthält. Standardmäßig werden die Daten an das Clustermanager-Speicherkonto gesendet. Es gibt auch eine Vorschaumethode, mit der Benutzer die Clusterressource mit einem Speicherkonto und einer Identität konfigurieren können, die Zugriff auf das Speicherkonto hat, um die Ausgabe zu erhalten.
Voraussetzungen
- Dieser Artikel geht davon aus, dass die Azure-Befehlszeilenschnittstelle und die
networkcloud
-Erweiterung der Befehlszeilenschnittstelle installiert sind. Weitere Informationen finden Sie unter Installieren von CLI-Erweiterungen. - Der Bare-Metal-Zielcomputer ist eingeschaltet und bereit.
- Die Syntax für diese Befehle basiert auf Version 0.3.0+ der
az networkcloud
CLI. - Rufen Sie den Namen der vom Cluster verwalteten Ressourcengruppe (cluster_MRG) ab, den Sie für die Clusterressource erstellt haben.
Überprüfen des Zugriffs auf das Clustermanager-Speicherkonto
Hinweis
Die Ausgabemethode des Clustermanager-Speicherkontos wird in Zukunft veraltet werden, sobald das Cluster-Onboarding zu vertrauenswürdigen Diensten abgeschlossen ist und die Option benutzerseitig verwalteter Speicher vollständig unterstützt wird.
Überprüfen Sie bei Verwendung der Clustermanager-Speichermethode, ob Sie Zugriff auf das Speicherkonto des Clustermanagers haben:
- Navigieren Sie im Azure-Portal zum Speicherkonto des Cluster-Managers.
- Wählen Sie in den Details des Speicherkontos den Speicherbrowser im Navigationsmenü auf der linken Seite aus.
- Wählen Sie in den Details des Speicherbrowsers die Option für Blobcontainer aus.
- Wenn beim Zugriff auf das Speicherkonto
403 This request is not authorized to perform this operation.
auftritt, müssen die Firewalleinstellungen des Speicherkontos aktualisiert werden, um die öffentliche IP-Adresse einzuschließen. - Fordern Sie den Zugriff an, indem Sie über das Portal ein Supportticket für die Cluster-Manager-Ressource erstellen. Geben Sie die öffentliche IP-Adresse an, die Zugriff erfordert.
VORSCHAU: Senden der Befehlsausgabe an ein vom Benutzer angegebenes Speicherkonto
Wichtig
Bitte beachten Sie, dass sich diese Methode zum Angeben eines Benutzerspeicherkontos für die Befehlsausgabe in der Vorschau befindet. Diese Methode sollte nur mit Benutzerspeicherkonten verwendet werden, für die keine Firewall aktiviert ist. Wenn für Ihre Umgebung die Speicherkontofirewall aktiviert sein muss, verwenden Sie die vorhandene Clustermanager-Ausgabemethode.
Erstellen und Konfigurieren von Speicherressourcen
- Erstellen Sie ein Speicherkonto, oder identifizieren Sie ein vorhandenes Speicherkonto, das Sie verwenden möchten. Siehe Erstellen eines Azure-Speicherkontos.
- Erstellen Sie einen Blob Storage-Container im Speicherkonto. Siehe Erstellen eines Containers.
- Weisen Sie den Benutzern und verwalteten Identitäten die Rolle „Mitwirkender für Speicherblobdaten“ zu, die Zugriff auf die Ausgabe des Run-Data-Extrakts benötigen.
- Weitere Informationen finden Sie unter Zuweisen einer Azure-Rolle für den Zugriff auf Blobdaten. Die Rolle muss auch einer benutzerseitig zugewiesenen verwalteten Identität oder der eigenen systemseitig zugewiesenen verwalteten Identität des Clusters zugewiesen werden.
- Weitere Informationen zu verwalteten Identitäten finden Sie unter Was sind verwaltete Identitäten für Azure-Ressourcen?.
- Wenn Sie die systemseitig zugewiesene Identität des Clusters verwenden, muss diese dem Cluster hinzugefügt werden, bevor der Zugriff gewährt werden kann.
- Stellen Sie beim Zuweisen einer Rolle zur systemseitig zugewiesenen Identität des Clusters sicher, dass Sie die Ressource mit dem Typ „Cluster (Operator Nexus)" auswählen.
Konfigurieren des Clusters für die Verwendung einer benutzerseitig zugewiesenen verwalteten Identität für den Speicherzugriff
Verwenden Sie diesen Befehl, um einen Cluster mit einem vom Benutzer verwalteten Speicherkonto und einer benutzerseitig zugewiesenen Identität zu erstellen. Beachten Sie, dass dieses Beispiel ein abgekürzter Befehl ist, das nur die Felder hervorhebt, die für das Hinzufügen des vom Benutzer verwalteten Speichers relevant sind. Es handelt sich nicht um den vollständigen Befehl zum Erstellen des Clusters.
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>"
Verwenden Sie diesen Befehl, um einen vorhandenen Cluster für ein von einem Benutzer bereitgestelltes Speicherkonto und eine benutzerseitig zugewiesene Identität zu konfigurieren. Der Updatebefehl kann auch verwendet werden, um den Speicherort und die Identität des Speicherkontos bei Bedarf zu ändern.
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>"
Konfigurieren des Clusters für die Verwendung einer systemseitig zugewiesenen verwalteten Identität für den Speicherzugriff
Verwenden Sie diesen Befehl, um einen Cluster mit einem von einem Benutzer verwalteten Speicherkonto und einer systemseitig zugewiesenen Identität zu erstellen. Beachten Sie, dass dieses Beispiel ein abgekürzter Befehl ist, das nur die Felder hervorhebt, die für das Hinzufügen des vom Benutzer verwalteten Speichers relevant sind. Es handelt sich nicht um den vollständigen Befehl zum Erstellen des Clusters.
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>"
Verwenden Sie diesen Befehl, um einen vorhandenen Cluster für ein von einem Benutzer bereitgestelltes Speicherkonto zu konfigurieren und eine eigene systemseitig zugewiesene Identität zu verwenden. Der Updatebefehl kann auch verwendet werden, um den Ort des Speicherkontos zu ändern.
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>"
Um den Cluster von einer benutzerseitig zugewiesenen Identität in eine systemseitig zugewiesene Identität zu ändern, muss CommandOutputSettings zuerst mithilfe des Befehls im nächsten Abschnitt gelöscht und dann mit diesem Befehl festgelegt werden.
Löschen der CommandOutputSettings des Clusters
Die CommandOutputSettings können gelöscht werden, so dass die Ausgabe des Run-Data-Extrakts wieder an den Speicher des Clustermanagers geleitet wird. Dies wird jedoch nicht empfohlen, da es weniger sicher ist und die Option in einem zukünftigen Release entfernt wird.
Die CommandOutputSettings müssen jedoch gelöscht werden, wenn sie von einer benutzerseitig zugewiesenen Identität zu einer systemseitig zugewiesenen Identität wechseln.
Verwenden Sie diesen Befehl, um die CommandOutputSettings zu löschen:
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}}'
Anzeigen der Prinzipal-ID für die verwaltete Identität
Die Identitätsressourcen-ID finden Sie, indem Sie auf der Identitätsressource „JSON-Ansicht“ auswählen, die ID befindet sich am oberen Rand des angezeigten Bereichs. Die Container-URL finden Sie auf der Registerkarte „Einstellungen –> Eigenschaften“ der Containerressource.
Die CLI kann auch verwendet werden, um die Identität und die zugehörigen Prinzipal-ID-Daten im Cluster anzuzeigen.
Beispiel:
az networkcloud cluster show --ids /subscriptions/<Subscription ID>/resourceGroups/<Cluster Resource Group Name>/providers/Microsoft.NetworkCloud/clusters/<Cluster Name>
Beispiel für systemseitig zugewiesene Identität:
"identity": {
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "SystemAssigned"
},
Beispiel für benutzerseitig zugewiesene Identität:
"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"
}
}
},
Ausführen eines Ausführungsdatenextraktionsbefehls
Der Befehl zum Ausführen der Datenextraktion führt ein oder mehrere vordefinierte Skripts aus, um Daten von einem Bare-Metal-Computer zu extrahieren.
Warnung
Microsoft bietet oder unterstützt keine Operator Nexus-API-Aufrufe, die die Angabe von Benutzernamen und/oder Kennwörtern als Klartext erwarten. Beachten Sie, dass alle gesendeten Werte protokolliert werden und als verfügbar gemachte Geheimnisse betrachtet werden, die rotiert und widerrufen werden sollen. Die von Microsoft dokumentierte Methode für die sichere Verwendung von Geheimnissen besteht darin, sie in Azure Key Vault zu speichern. Wenn Sie bestimmte Fragen oder Bedenken haben, senden Sie eine Anfrage über das Azure-Portal.
Aktuelle Liste der unterstützten Befehle:
SupportAssist/TSR-Sammlung zur Problembehandlung für Dell
Befehlsname:hardware-support-data-collection
Argumente: Typ der angeforderten ProtokolleSysInfo
: SysteminformationenTTYLog
: TTYLog-SpeicherdatenDebug
: Debugprotokolle
Sammeln von Agentinformationen für Microsoft Defender for Endpoint (MDE)
Befehlsname:mde-agent-information
Argumente: KeineSammeln von MDE-Diagnoseunterstützungsprotokollen
Befehlsname:mde-support-diagnostics
Argumente: KeineErfassen des Dell-Hardwarerollupstatus
Befehlsname:hardware-rollup-status
Argumente: KeineGenerieren eines Cluster-CVE-Berichts
Befehlsname:cluster-cve-report
Argumente: KeineHelm-Freigaben sammeln
Befehlsname:collect-helm-releases
Argumente: KeineAusgabe sammeln
systemctl status
Befehlsname:platform-services-status
Argumente: Keine
Die Befehlssyntax ist wie folgt:
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>"
Geben Sie in der --commands
-Option mehrere Befehle im JSON-Format an. Jedes command
-Element gibt Befehle und Argumente an. Geben Sie für einen Befehl mit mehreren Argumenten eine Liste für den Parameter arguments
an. Anweisungen zum Erstellen der --commands
-Struktur finden Sie unter Azure CLI-Kurzform.
Diese Befehle können zeitintensiv sein, daher wird empfohlen, --limit-time-seconds
auf mindestens 600 Sekunden (10 Minuten) festzulegen. Die Option Debug
oder das Ausführen mehrerer Extraktionen kann länger als 10 Minuten dauern.
In der Antwort wird der Vorgang asynchron ausgeführt, und der HTTP-Statuscode 202 wird zurückgegeben. Weitere Informationen zum Nachverfolgen des Befehlsabschlusses und zum Anzeigen der Ausgabedatei finden Sie im Abschnitt Anzeigen des Ausgabe.
Sammlung von Hardwareunterstützungsdaten
In diesem Beispiel wird der Befehl hardware-support-data-collection
ausgeführt, und die Protokolle SysInfo
und TTYLog
werden vom Dell Server abgerufen. Das Skript führt einen racadm supportassist collect
-Befehl auf dem angegebenen Bare-Metal-Computer aus. Die resultierende tar.gz-Datei enthält die komprimierten Ausgaben der extrahierten Befehlsdatei in 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
Ausgabe von 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
Beispielliste von gesammelten Hardwareunterstützungsdateien
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..]
Sammeln von MDE-Agent-Informationen
Daten werden mit dem Befehl mde-agent-information
gesammelt und als JSON in /hostfs/tmp/runcommand/mde-agent-information.json
formatiert. Die JSON-Datei befindet sich in der ZIP-Datei der Datenextraktion im Speicherkonto. Das Skript führt eine Sequenz von mdatp
-Befehlen auf dem angegebenen Bare-Metal-Computer aus.
In diesem Beispiel wird der Befehl mde-agent-information
ohne Argumente ausgeführt.
az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
--resource-group "cluster_MRG" \
--subscription "subscription" \
--commands '[{"command":"mde-agent-information"}]' \
--limit-time-seconds 600
Ausgabe von 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
Beispiel für gesammeltes JSON-Objekt
{
"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
}
}
Diagnose des MDE-Supports erfassen
Die mit dem Befehl mde-support-diagnostics
gesammelten Daten werden mit dem MDE-Clientanalysetool gebündelt, um Informationen aus mdatp
-Befehlen und relevanten Protokolldateien zu erhalten. Die Speicherkontodatei tgz
enthält eine Datei zip
mit dem Namen mde-support-diagnostics-<hostname>.zip
. Die zip
-Datei sollte zusammen mit allen Supportanfragen gesendet werden, damit die Supportteams die Protokolle bei Bedarf für die Problembehandlung und Ursachenanalyse verwenden können.
In diesem Beispiel wird der Befehl mde-support-diagnostics
ohne Argumente ausgeführt.
az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
--resource-group "cluster_MRG" \
--subscription "subscription" \
--commands '[{"command":"mde-support-diagnostics"}]' \
--limit-time-seconds 600
Ausgabe von 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
Nachdem Sie die Ausführungsergebnisdatei heruntergeladen haben, können die Supportdateien für die Analyse entpackt werden.
Beispielliste der vom MDE-Clientanalysetool erfassten Informationen
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...]
Dell-Hardwarerollupstatus
Daten werden mit dem Befehl hardware-rollup-status
gesammelt und als JSON in /hostfs/tmp/runcommand/rollupStatus.json
formatiert. Die JSON-Datei befindet sich in der ZIP-Datei der Datenextraktion im Speicherkonto. Die gesammelten Daten zeigen die Integrität der Computersubsysteme an.
In diesem Beispiel wird der Befehl hardware-rollup-status
ohne Argumente ausgeführt.
az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
--resource-group "clusete_MRG" \
--subscription "subscription" \
--commands '[{"command":"hardware-rollup-status"}]' \
--limit-time-seconds 600
Ausgabe von 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
Beispiel für JSON mit gesammelten Daten
{
"@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..]
Generieren eines Cluster-CVE-Berichts
Daten zu Sicherheitsrisiken werden mit dem Befehl cluster-cve-report
gesammelt und als JSON in {year}-{month}-{day}-nexus-cluster-vulnerability-report.json
formatiert. Die JSON-Datei befindet sich in der ZIP-Datei der Datenextraktion im Speicherkonto. Die gesammelten Daten enthalten Sicherheitsrisikodaten pro Containerimage im Cluster.
In diesem Beispiel wird der Befehl cluster-cve-report
ohne Argumente ausgeführt.
Hinweis
Der Zielcomputer muss ein Knoten auf Steuerungsebene sein, andernfalls wird die Aktion nicht ausgeführt.
az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
--resource-group "cluster_MRG" \
--subscription "subscription" \
--commands '[{"command":"cluster-cve-report"}]' \
--limit-time-seconds 600
Ausgabe von 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-Berichtsschema
{
"$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-Datendetails
Die CVE-Daten werden pro Containerimage alle 24 Stunden aktualisiert, oder wenn eine Änderung an der Kubernetes-Ressource auftritt, die auf das Image verweist.
Helm-Freigaben sammeln
Helm-Freigabedaten werden mit dem collect-helm-releases
Befehl gesammelt und als json nach {year}-{month}-{day}-helm-releases.json
formatiert. Die JSON-Datei befindet sich in der ZIP-Datei der Datenextraktion im Speicherkonto. Die gesammelten Daten enthalten alle Steuerfreigabeinformationen aus dem Cluster, die aus den beim Ausführen des Befehls helm list
zurückgegebenen Standarddaten bestehen.
In diesem Beispiel wird der Befehl collect-helm-releases
ohne Argumente ausgeführt.
Hinweis
Der Zielcomputer muss ein Knoten auf Steuerungsebene sein, andernfalls wird die Aktion nicht ausgeführt.
az networkcloud baremetalmachine run-data-extract --name "bareMetalMachineName" \
--resource-group "cluster_MRG" \
--subscription "subscription" \
--commands '[{"command":"collect-helm-releases"}]' \
--limit-time-seconds 600
Ausgabe von 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 Release-Schema
{
"$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-Statusausgabe sammeln
Der Dienststatus wird mit dem platform-services-status
Befehl erfasst. Die Ausgabe ist im Nur-Text-Format und gibt einen Überblick über den Status der Dienste auf dem Host sowie die systemctl status
für jeden gefundenen Dienst zurück.
In diesem Beispiel wird der Befehl platform-services-status
ohne Argumente ausgeführt.
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"
Ausgabe von 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..]
Anzeigen der Ausgabe
Der Befehl stellt einen Link bereit (wenn Clustermanager-Speicher verwendet wird) oder einen anderen Befehl (wenn vom Benutzer bereitgestellter Speicher verwendet wird), um die vollständige Ausgabe herunterzuladen. Die tar.gz-Datei enthält auch die komprimierten Ausgaben der extrahierten Befehlsdatei. Laden Sie die Ausgabedatei aus dem Speicherblob in ein lokales Verzeichnis herunter, indem Sie den Verzeichnispfad im optionalen Argument --output-directory
angeben.
Warnung
Wenn Sie das Argument --output-directory
verwenden, werden alle Dateien im lokalen Verzeichnis überschrieben, die denselben Namen haben wie die neuen Dateien, die erstellt werden.
Hinweis
Das Speicherkonto kann aufgrund von Netzwerk- oder Firewalleinschränkungen gesperrt werden, was zu 403 This request is not authorized to perform this operation.
führt. Prozeduren zum Überprüfen des Zugriffs finden Sie in den Abschnitten Clustermanager-Speicher oder vom Benutzer verwalteter Speicher.