PowerFlex: PFMP_SUPPORT – Dienstprogramm zur Erfassung von Supportbündeln
Résumé: pfmp_support – Erfassen von PowerFlex Manager-Diagnosedaten und Packen in ein Support-Bundle
Instructions
pfmp_support [OPTIONEN]
BESCHREIBUNG
pfmp_support ist ein Diagnosedienstprogramm, das Debug-Informationen von einem PowerFlex Manager- oder einem PowerFlex Manager-Installationshost sammelt und zur Analyse durch Supportmitarbeiter in einem komprimierten Bundle archiviert.
Das Dienstprogramm sammelt Daten aus mehreren Quellen, darunter:
- Kubernetes-Diagnosedaten, -Konfiguration und -Protokolle
- Informationen zur Helm-Version
- Docker- und Container-Laufzeitdaten
- PowerFlex Manager -Installationsprotokolle
- Konfiguration, Protokolle und Laufzeitstatus des Betriebssystems
- Hardware-Bestandsaufnahme
Beim Sammeln von Daten von mehreren Kubernetes-Cluster-Nodes sollte ein Standard-Bundle (--skip-kubernetes-shared not specified) von mindestens einem Node erfasst werden, wobei kubectl und helm verfügbar sind und Zugriff auf die Kubernetes-Steuerungsebene haben. Auf nachfolgenden Nodes --skip-kubernetes-shared kann verwendet werden, um die Größe der gesammelten Daten zu reduzieren.
Das resultierende Bundle ist ein einzelnes komprimiertes Archiv (standardmäßig tar/gz), das zur weiteren Analyse an den PowerFlex-Support übertragen werden kann.
Auf einem Host kann jeweils nur eine Instanz von pfmp_support ausgeführt werden. Wenn nicht genügend freier Speicherplatz für die Ausgabe vorhanden ist, wird die Ausführung verweigert (es sei denn, die Speicherplatzprüfung wird explizit übersprungen).
OPTIONEN
Allgemeine Optionen
-
-A DIR, --installer-root-path=DIR
Verwenden Sie DIR als Basisverzeichnis des PowerFlex Manager -Installationsprogramms. Nützlich beim Erfassen von PowerFlex Installer-Daten und des Installer-Containers (
atlantic_installer) wird nicht ausgeführt. Standardeinstellung: automatisch erkannt oder/varherunter. -
-d OUT_DIR, --output-dir=OUT_DIR
Speichern Sie das resultierende Bundle im Verzeichnis OUT_DIR. Default:
<WORK_DIR>/powerflex-pfmpsupport(siehe --work-dir). -
-h, --help
Zeigen Sie die Hilfemeldung an und beenden Sie den Vorgang. In Kombination mit --tech werden auch Technikeroptionen angezeigt.
-
-J, --xz
Verwenden Sie das tar/xz-Format für das erfasste Bundle anstelle des Standardformats tar/gz. Ignoriert, wenn die
tar(1)Unterstützt nicht--use-compress-programoderxz(1)nicht gefunden wird. -
-n NAMENSRAUM,--namespace=NAMENSRAUM
Sammeln Sie zusätzliche Daten aus dem anwendungsspezifischen Kubernetes-Namespace NAMESPACE. Default:
powerflexherunter. -
-N, --skip-space-check
Überspringen Sie die Überprüfung des freien Speicherplatzes vor der Datenerfassung.
-
-P PFAD,--collect-path=PFAD
Erfassen Sie den zusätzlichen Pfad PATH. Es werden nur absolute Pfade akzeptiert. Akzeptiert Platzhalter; Platzhalter sollten in Anführungszeichen gesetzt werden. Diese Option kann mehrmals angegeben werden, um mehrere Pfade zu erfassen.
-
-q, --quiet, --silent
Unterdrückt Meldungen in der Standardausgabe.
-
-s, --skip-kubernetes-shared
Überspringen Sie die Erfassung freigegebener (clusterübergreifender) Kubernetes-Daten. Kubernetes-Daten und Hostdaten pro Node werden weiterhin erfasst. Nützlich für Sammlungen mit mehreren Knoten, um die Größe zu reduzieren; Clusterdaten sollten von mindestens einem Node erfasst werden.
-
-w WORK_DIR, --work-dir=WORK_DIR
Verwenden Sie das WORK_DIR für temporäre Dateien. Default:
/tmpherunter. -
-x DATEI,--output-file=DATEI
Speichern Sie das erfasste Bundle als Datei mit dem Namen FILE. Das entsprechende Dateinamensuffix (
.tgz,.zipusw.) wird automatisch hinzugefügt. Wenn FILE-(Bindestrich), schreibt das Bundle in die Standardausgabe (impliziert --quiet). Wenn das Bundle in die Standardausgabe geschrieben wird, wird keine Bundle-Datei auf der Festplatte erstellt. Default:pfmpSupportherunter. -
-z, --zip
Verwenden Sie das ZIP-Format für das erfasste Bundle anstelle des Standardformats tar/gz. Ignoriert, wenn
zip(1)wurde auf dem System nicht gefunden. -
--überschreiben-Ausgabe-Datei
Überschreiben Sie die Ausgabedatei, wenn sie bereits vorhanden ist. Wenn eine Ausgabedatei oder ein Ausgabeverzeichnis explizit angegeben wird (über -x oder -d), besteht das Standardverhalten darin, das Überschreiben abzulehnen. Diese Option überschreibt dies.
-
--Tech
Fügen Sie Technikeroptionen in die Ausgabe der Hilfemeldung ein.
Technikeroptionen
Die folgenden Optionen sind für Supporttechniker vorgesehen und werden nur dann in der Hilfemeldung angezeigt, wenn --tech angegeben ist.
-
--keep-work-dir
Behalten Sie das erzeugte temporäre Arbeitsverzeichnis nach der Bundle-Erstellung bei (normalerweise automatisch bereinigt).
-
--old-pod-logs
Sammeln Sie ältere Kubernetes-Pod-Protokolle aus dem lokalen rsyslog-Speicher. Bei Wegfall wird die aktuelle (
kubectl logs) und vorherige (kubectl logs --previous) werden Containerprotokolle weiterhin gesammelt.
BUNDLE-STRUKTUR
Das Ausgabe-Bundle ist ein einzelnes komprimiertes Archiv.
- Das Bundle-Verzeichnis der obersten Ebene ist der Hostname des erfassten Systems.
- Allgemeine Ausgaben von Hostbefehlen werden in eine
server/Unterverzeichnis. Der Dateiname lautet<command>+<arguments>+ Suffix (.txtstandardmäßig). Leerzeichen ersetzt durch_, nicht-alphanumerische Zeichen entfernt.
Beispiel:server/ip_-s_addr.txt - output of ip -s addr - Ausgaben der Befehle kubectl, helm und docker werden in die entsprechenden Unterverzeichnisse verschoben. Sie sind weiter nach Geltungsbereich gegliedert,
<namespace>/<pod>/<container>, falls zutreffend.
Argumente im Zusammenhang mit Befehlsname, Umfang und Ausgabeformat werden entfernt. Der Dateiname lautet<subcommand>+<arguments>+ Suffix (.txtstandardmäßig). Leerzeichen ersetzt durch_, nicht-alphanumerische Zeichen entfernt.
Die Befehlsausgaben von kubectl exec werden unterexec/des Unterverzeichnisses des Pods.
Beispiele:kubectl/version.txt- Ausgabe vonkubectl versionkubectl/all-namespaces/get_pods.yaml-- Ausgabe vonkubectl -o=yaml get --all-namespaces podskubectl/powerflex/asmui-7d6944dcb8-zqqtk/asmui/logs_--previous.txt- Ausgabe vonkubectl logs -n powerflex --container asmui --previous asmui-7d6944dcb8-zqqtkkubectl/powerflex/nats-server-box-6d685b4b7d-cf278/nats-box/exec/nats_stream_report.txt- Ausgabe vonkubectl exec -n powerflex --container nats-box nats-server-box-6d685b4b7d-cf278 -- nats stream reporthelm/powerflex/get_all_asmmanager.txt- Ausgabe vonhelm get -n powerflex all asmmanagerdocker/ps_-a.txt- Ausgabe vondocker ps -a
- Dateien, die aus Pod-Containern extrahiert werden, werden im Verzeichnis des Containers an ihrem In-Container-Dateisystempfad abgelegt.
Beispiel:kubectl/powerflex/thin-deployer-5657659bc7-gzbq4/thin-deployer/opt/Dell/ASM/deployments/8aaa809298a9efe10198aa58c8874f35/deployment.log- Kopie von/opt/Dell/ASM/deployments/8aaa809298a9efe10198aa58c8874f35/deployment.logaus dem Inneren derthin-deployerBehälter derthin-deployer-5657659bc7-gzbq4Pod - Hostdateisystemdateien werden in Bezug auf den Bundle-Stamm an ihrem Dateisystempfad abgelegt.
Beispiele:etc/os-release - copy of /etc/os-releasevar/log/messages - copy of /var/log/messagesproc/cpuinfo - copy of /proc/cpuinfovar/lib/rancher/rke2/agent/logs/kubelet.log - copy of /var/lib/rancher/rke2/agent/logs/kubelet.log
- Ausgeblendete Dateien (mit Präfix) werden durch Entfernen des führenden Punktes "eingeblendet".
- Ausführungsprotokoll des Dienstprogramms,
pfmp_support.log, die direkt unter dem Hostnamen>/Root <platziert wird.
Bundle-Verzeichnisstruktur:
<hostname>/
|-- pfmp_support.log Utility execution log
|-- server/ General command output directory
| |-- ip_-s_addr.txt
| |-- uptime.txt
| |-- uname_-a.txt
| |-- ps_-elF.txt
| |-- dmesg_-T.txt
| +-- ... (one file per collected command)
|
|-- kubectl/ kubectl command output directory
| |-- version.txt Non-namespace-specific commands
| |-- ...
| |-- all-namespaces/ Cross-namespace commands
| | |-- get_pods.txt
| | |-- get_pods.yaml
| | +-- ...
| +-- <namespace>/ Per-namespace Kubernetes data
| +-- <pod>/ Per-pod data
| +-- <container>/ Per-container data
| |-- logs.txt Current container logs
| |-- exec/ Commands executed within container (if any)
| | +-- ...
| |-- <dir>/ Files extracted from container (if any)
| +-- ...
|-- helm/ helm command output directory
|-- docker/ docker command output directory
|
|-- etc/ Host files
| |-- os-release
| |-- sysconfig/
| |-- network/
| +-- ...
|-- var/
| |-- log/
| | |-- messages
| | +-- ...
| |-- lib/rancher/rke2/
| +-- ...
|-- proc/
| |-- cpuinfo
| |-- meminfo
| +-- ...
|-- sys/
|-- ...
|
|-- powerflex-pfmpsupport-extra/ Extra diagnostic data (if present)
+-- powerflex-pfmpsupport-backup/ Backed-up configuration files (if any)
SPEICHERPLATZ
Die Speicherplatzanforderungen für temporäre Dateien und das resultierende Bundle können erheblich variieren.
Das Dienstprogramm versucht, die temporäre Speicherplatznutzung zu minimieren. Sie ist auf Befehlsausgaben und Kopien des erfassten virtuellen Dateisystems (/proc und /sys) Dateien.
Um die Speicherplatzauslastung auf dem PowerFlex Manager-Host zu minimieren, kann das Bundle mit --output-file=- von einem Remotehost gestreamt werden. Beim Streaming wird die Bundle-Datei direkt in die Standardausgabe (stdout) geschrieben. Es wird nicht auf der Festplatte erstellt.
Vor der Datenerfassung schätzt das Dienstprogramm den erforderlichen Speicherplatz für das temporäre Arbeitsverzeichnis und das Ausgabe-Bundle.
Wenn der geschätzte erforderliche Speicherplatz den verfügbaren Speicherplatz auf dem/den relevanten Dateisystem(en) überschreitet, wird das Dienstprogramm mit einem Fehler beendet. Diese Prüfung kann mit --skip-space-check umgangen werden.
Das Arbeitsverzeichnis und das Ausgabeverzeichnis können sich auf unterschiedlichen Dateisystemen befinden. Jede wird unabhängig geprüft.
Der geschätzte Speicherplatzbedarf wird in die Protokolldatei des Dienstprogramms geschrieben. pfmp_support.logherunter.
BEENDIGUNGSSTATUS
| 0 | Erfolgreicher Abschluss |
| 1 | Fehler (ungültige Argumente, nicht genügend Speicherplatz, eine andere Instanz wird bereits ausgeführt, Fehler bei der Bundle-Generierung, Signal abgefangen usw.) |
DATEIEN
<WORK_DIR>/pfmp_support.log |
Ausführungsprotokoll (ebenfalls im Bundle enthalten) |
<WORK_DIR>/powerflex-pfmpsupport-tmp/ |
Temporäres Arbeitsverzeichnis (bei Erfolg bereinigt) |
/tmp/powerflex-pfmpsupport/pfmpSupport.tgz |
Standardspeicherort für Ausgabe-Bundles |
<WORK_DIR>/powerflex-pfmpsupport-extra/
/tmp/powerflex-pfmpsupport-extra/ |
Optionale zusätzliche Diagnosedatenverzeichnisse |
/tmp/powerflex-pfmpsupport-backup/ |
Temporäre Backups geänderter Konfigurationsdateien (automatisch erstellt) |
UMGEBUNG
Voraussetzungen
- Das Dienstprogramm muss als Root-Nutzer ausgeführt werden (oder als NutzerIn mit ausreichenden Berechtigungen zum Lesen von Systemdateien, zum Ausführen von Diagnosebefehlen, zur Interaktion mit dem Kubernetes-Cluster und zum Zugriff auf
/proc,/sysusw.). - Standard-Dienstprogramme:
tar,gzip,stat,find,awk,sed,getopt(1)(erweitert),niceherunter. - Optional:
zip(für--zip),xz(für--xz) enthalten.
Parallelität
Es kann jeweils nur eine Instanz von pfmp_support ausgeführt werden. Das Dienstprogramm prüft, ob eine vorhandene Instanz ausgeführt wird über pidof(1) und beendet, wenn eine gefunden wird.
Signalverarbeitung
Die Dienstprogramm-Traps INT, EXITund TERM Signale während der Datenerfassung. Beim Empfang eines Signals:
- Stellt alle gesicherten Konfigurationsdateien wieder her.
- Bereinigt temporäre Verzeichnisse.
- Beendet mit Status 1.
Das Ausführungsprotokoll wird beibehalten und der Pfad wird mit Standardfehler gedruckt.
BEISPIELE
Erfassen eines Standard-Support-Bundles:
pfmp_support
Erfassen Sie Bundles von mehreren Nodes in einem Kubernetes-Cluster.
- Auf einem Node mit
kubectlundhelmZugriff und sammeln Sie alle Kubernetes-Daten:pfmp_support - Überspringen Sie auf nachfolgenden Nodes freigegebene Kubernetes-Daten:
pfmp_support --skip-kubernetes-shared
Streamen Sie ein Bundle über eine SSH-Verbindung, ohne eine Bundle-Datei auf dem Remotehost von PowerFlex Manager zu erstellen:
ssh <host> 'pfmp_support --output-file=-' > pfmpSupport-<host>.tgz
Verwenden Sie ein anderes Arbeitsverzeichnis, um eine Auslastung zu vermeiden /tmpverwalten:
pfmp_support --work-dir=/var/tmp
Nutzerdefinierte Pfade in das Bundle aufnehmen:
pfmp_support --collect-path=/opt/custom/app/logs --collect-path='/var/log/app*'