PowerFlex: GET_INFO – Dienstprogramm zur Erfassung von Supportbündeln
Summary: get_info.sh: Erfassen Sie Diagnoseinformationen von einem PowerFlex-Host und packen Sie sie in ein Support-Bundle.
Instructions
get_info.sh [OPTIONEN]
BESCHREIBUNG
get_info.sh ist ein Diagnosedienstprogramm, das Debug-Informationen von einem PowerFlex-Host (ehemals ScaleIO) sammelt und in einem komprimierten Bundle zur Analyse durch Supportmitarbeiter archiviert.
Das Dienstprogramm sammelt Daten aus mehreren Quellen, darunter:
- PowerFlex-Komponentenprotokolle, -Konfiguration und -Trace-Dateien
- MDM/SCLI-Abfrageausgaben und internes Debug-Speicherabbild
- Interne Diagnose der PowerFlex-Komponente
- Konfiguration, Protokolle und Laufzeitstatus des Betriebssystems
- Hardware-Bestandsaufnahme (Storage-Controller, Netzwerkgeräte, NVMe, NVDIMM usw.)
- Core-Speicherabbilder (vorhanden und optional nach Bedarf generiert)
- Diagnostischer Datensammler (
diag_coll) Statistik
Das resultierende Bundle ist ein einzelnes komprimiertes Archiv (standardmäßig tar/gz), das zur weiteren Analyse an den PowerFlex-Support übertragen werden kann.
Nur eine Instanz von get_info.sh kann zu einem bestimmten Zeitpunkt auf einem Host 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, --allSammeln Sie alle Daten. Dies entspricht der Angabe von
--mdm-repository,--collect-cores,--max-cores=2,--valgrind-coresund--analyse-diag-coll. -
-A, --analyse-diag-collAnalysieren des diagnostischen Data Collectors (
diag coll) Daten -
-b[COMPONENTS], --collect-cores[=COMPONENTS]Sammeln vorhandener Core-Dumps für die durch Leerzeichen getrennte Liste von Nutzerland
COMPONENTS. Standard (wennCOMPONENTSweggelassen wird): Alle User-Land-Komponenten
-b und KOMPONENTEN. Für die lange Form trennen Sie mit =
Beispiel
-b'mdm sds'
--collect-cores='mdm sds'
-
-d OUT_DIR, --output-dir=OUT_DIRSpeichern Sie das resultierende Bundle unter dem Verzeichnis.
OUT_DIR. Default: <WORK_DIR>/scaleio-getinfo(Siehe--work-dir). -
-f, --skip-mdm-loginÜberspringen Sie die Abfrage der Anmeldedaten für PowerFlex MDM. Nützlich, wenn sich der Nutzer bereits manuell angemeldet hat.
-
-h, --helpZeigen Sie die Hilfemeldung an und beenden Sie den Vorgang. In Kombination mit
--tech, zeigen Sie auch Technikeroptionen an. -
-J, --xzVerwenden Sie
tar/xzFormat für das erfasste Bundle anstelle des Standardformatstar/gz.Ignoriert, wenn dietar(1)Unterstützt nicht--use-compress-programoderxz(1)nicht gefunden wird. -
-k NUM, --max-cores=NUMSammeln Sie bis zu
NUMCore-Dateien von jeder Komponente. Default: Alle Core-Dateien, impliziert--collect-cores -
-l, --lightErzeugen Sie ein Lichtbündel. Nur die neueste Generation nummerierter Protokolldateien wird erfasst und ausführbare Dateien oder Bibliotheken von Komponenten werden bei der Core-Erfassung nicht berücksichtigt. Die Verwendung dieser Option verringert die Unterstützbarkeit, und von ihrer Verwendung wird abgeraten.
-
-m NUM, --max-traces=NUMSammeln Sie bis zu
NUMPowerFlex-Trace-Dateien von jeder Komponente. Default: Alle Dateien -
-N, --skip-space-checkÜberspringen Sie die Überprüfung des freien Speicherplatzes vor der Datenerfassung.
-
-P PATH, --collect-path=PATHErfassen des zusätzlichen Pfads
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, --silentUnterdrückt Meldungen in der Standardausgabe.
-
-r, --mdm-repositoryErfassen Sie MDM-Repository-Dateien.
-
-s, --skip-sdbgÜberspringen Sie die Erfassung der SDBG-Ausgabe (Diagnose-Debugger).
-
-S, --pause-core-generationHalten Sie die Core-Generierung von PowerFlex-Komponenten während der Datenerhebung an. Die ursprüngliche Konfiguration wird nach Abschluss der Erfassung wiederhergestellt.
-
-w WORK_DIR, --work-dir=WORK_DIRVerzeichnis verwenden
WORK_DIRfür temporäre Dateien. Default:/tmp. -
-x FILE, --output-file=FILESpeichern Sie das erfasste Bundle als Datei mit dem Namen
FILE. Das entsprechende Dateinamensuffix (.tgz,.zipusw.) wird automatisch hinzugefügt. WennFILEIst-(Bindestrich), schreibt das Bundle in die Standardausgabe (impliziert--quiet) enthalten. Wenn ein Bundle in die Standardausgabe geschrieben wird, wird keine Bundle-Datei auf der Festplatte erstellt. Default:getInfoDump. -
-z, --zipVerwenden Sie
zipFormat für das erfasste Bundle anstelle des Standardformatstar/gz. Ignoriert, wennzip(1)wurde auf dem System nicht gefunden. -
--mdm-port=PORTStellen Sie über Port eine Verbindung zum MDM her.
PORTfür SCLI-Befehle. Default:scli default behavior. -
--overwrite-output-fileÜberschreiben Sie die Ausgabedatei, wenn sie bereits vorhanden ist. Wenn eine Ausgabedatei oder ein Ausgabeverzeichnis explizit angegeben wird (mithilfe von
-xoder-d), ist das Standardverhalten, das Überschreiben abzulehnen; Diese Option überschreibt dies. -
--techFügen Sie Technikeroptionen in die Ausgabe der Hilfemeldung ein.
MDM-Anmeldeoptionen
Die folgenden Optionen werden an die SCLI übergeben --login . Ihr Verhalten und ihre Standardwerte werden durch SCLI geregelt.
-
-n, --use-nonsecure-communicationStellen Sie eine Verbindung zum MDM im nicht sicheren Modus her.
-
-p PASSWORD, --password=PASSWORDVerwenden Sie
PASSWORDfür die PowerFlex-MDM-Anmeldung. Default: SCLI-Standardverhalten -
-u USERNAME, --username=USERNAMEVerwenden Sie
USERNAMEfür die PowerFlex-MDM-Anmeldung. Default: SCLI-Standardverhalten -
--ldap-authenticationMelden Sie sich mit LDAP-basierter Authentifizierung bei PowerFlex MDM an.
-
--management-system-ip=ADDRESSVerbinden mit
SSO/M&OumADDRESSfür die PowerFlex-Anmeldung. Default: SCLI-Standardverhalten -
--p12-password=PASSWORDPowerFlex-Anmeldung verschlüsseln
PKCS#12Datei mitPASSWORD. Default: SCLI-Standardverhalten -
--p12-path=FILESpeichern der PowerFlex-Anmeldung
PKCS#12Datei alsFILE. Default: SCLI-Standardverhalten
Technikeroptionen
Die folgenden Optionen sind für die Verwendung durch Supporttechniker vorgesehen und werden nur in der Hilfemeldung angezeigt, wenn --tech angegeben wird.
-c[COMPONENTS], --generate-cores[=COMPONENTS]
Generieren von Core-Dateien (mithilfe von gcore(1)) für die laufenden Prozesse der durch Leerzeichen getrennten Liste von User-Land COMPONENTS. Standard: alle User-Land-Komponenten, impliziert --collect-executablesund erfordert gdb und gcore.
-c und COMPONENTS. Für die lange Form trennen Sie mit =.
Beispiele:
-c'mdm sds'
--generate-cores='mdm sds'
-
-C CORE_FILE, --reference-core-file=CORE_FILESammeln Sie Produktprotokolle und -kerne relativ zur letzten Änderungszeit (
mtime) vonCORE_FILEanstelle der Ausführungsstartzeit. Impliziert--collect-cores -
-E REF_TIME, --event-time=REF_TIMEErfassen von Produktprotokollen und Cores in Bezug auf
REF_TIMEanstelle der Ausführungsstartzeit. Akzeptiert jedes Format, das vondate(1). Impliziert--collect-cores. -g[COMPONENTS], --valgrind-cores[=COMPONENTS]
Sammeln valgrind Core-Dumps für das angegebene Nutzerland COMPONENTS. Standardeinstellung: alle User-Land-Komponenten. Impliziert --collect-executables.
-b und COMPONENTS. Für die lange Form trennen Sie mit =
Beispiele:
-g'mdm sds'
--valgrind-cores='mdm sds'
-
-t MIN, --minutes-before-event=MINSammeln von Produktprotokollen und -kernen, die bis zu
MINMinuten vor der Referenzzeit. Default: 15 -
-T MIN, --minutes-after-event=MINSammeln von Produktprotokollen und -kernen, die bis zu
MINMinuten nach der Referenzzeit. Default: 5 -
-X[COMPONENTS], --collect-executables[=COMPONENTS]Erfassen von ausführbaren Komponentendateien und ihren gemeinsam genutzten Bibliotheken für das angegebene Benutzerland
COMPONENTS. Default: Alle User-Land-Komponenten
-b und COMPONENTS. Für die lange Form trennen Sie mit =
Beispiele:
-X'mdm sds'
--collect-executables='mdm sds'
-
--keep-work-dirBehalten Sie das erzeugte temporäre Arbeitsverzeichnis nach der Bundle-Erstellung bei (automatische Bereinigung).
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 - Produktbefehlsausgaben werden in das Unterverzeichnis der Komponente übertragen.
mdm/Fürscli,sdc/Fürdrv_cfgund so weiter.
Befehlsname (scli,drv_cfgusw.) wird entfernt. Das erste sinnvolle Argument ist der Dateiname. Dateien werden als relevantes Suffix zugewiesen..txt.
Beispiele:
-
mdm/query_cluster.txt- Ausgabe vonscli --query_clustermdm/tgt_dump.txt- Ausgabe vonscli --debug_action --tgt_dumpsdc/query_mdms.txt- Ausgabe vondrv_cfg --query_mdmssds/sdbg.txt- Ausgabe von SDBGdumpallscreensfür SDS
- Produktkomponentendateien (im Gegensatz zu Befehlsausgaben),
<component>/cfg,<component>/logsusw.
Kopiert aus dem Verzeichnis der Komponente, wobei das Präfix entfernt wurde.
Beispiele:
-
mdm/cfg/conf.txt- Kopie von/opt/emc/scaleio/mdm/cfg/conf.txtsds/logs/trc.0- Kopie von/opt/emc/scaleio/sds/logs/trc.0
- Hostdateisystemdateien werden relativ zum Bundle-Stamm an ihrem Dateisystempfad abgelegt.
Beispiele:
-
etc/os-release- Kopie von/etc/os-releasevar/log/messages- Kopie von/var/log/messagesproc/cpuinfo- Kopie von/proc/cpuinfo
- Diagnostic Collector (diag_coll)-Dateien werden mit dem Befehl
/optDas Präfix wurde entfernt, um die interne Struktur zu erhalten.
Beispiel:diag_coll/logs/sar.0- Kopie von/opt/diag_coll/logs/sar.0 - Ausgeblendete Dateien (mit Präfix) werden durch Entfernen des führenden Punktes "eingeblendet".
- Ausführungsprotokoll des Dienstprogramms,
get_info_run.log, die direkt unter dem Hostnamen>/Root <platziert wird
Bundle-Verzeichnisstruktur:
<hostname>/
|-- get_info_run.log Utility execution log
|-- server/ General command output directory
| |-- ip_-s_addr.txt
| |-- uptime.txt
| |-- uname_-a.txt
| |-- ps_-elF.txt
| |-- dmesg.txt
| +-- ... (one file per collected command)
|
|-- mdm/ PowerFlex component data (if installed)
| |-- cfg/ Configuration files (excl. PEM)
| |-- logs/ Trace and log files
| |-- rep/ Repository (if --mdm-repository)
| |-- query_all.txt SCLI query outputs
| |-- sdbg.txt SDBG screen dumps
| +-- ...
|-- sds/
|-- pds/
|-- dgwt/
|-- sdr/
|-- sdt/
|-- lia/
|-- sdc/
|-- gateway/
|
|-- diag_coll/ Diagnostic data collector (if installed)
| |-- logs/
| |-- cfg/
| +-- ...
|
|-- etc/ Host files
| |-- os-release
| |-- sysconfig/
| |-- network/
| +-- ...
|-- var/
| |-- log/
| | |-- messages
| | +-- ...
| +-- ...
|-- proc/
| |-- cpuinfo
| |-- meminfo
| +-- ...
|-- sys/
|-- ...
|
|-- scaleio-getinfo-extra/ Extra diagnostic data (if present)
+-- scaleio-getinfo-backup/ Backed-up configuration files (if any)
PRODUKTPROTOKOLL UND FILTERUNG VON CORE-DATEIEN
Die in diesem Abschnitt beschriebenen Optionen steuern, wie Produktprotokolldateien (auch Trace-Dateien genannt, z. B. trc.0, trc.1, exp.0) und Core-Speicherabbilddateien werden für die Aufnahme in das erfasste Bundle ausgewählt. Sie tun dies, indem sie eine Referenzzeit, ein Zeitfenster um sie herum und Zählgrenzen definieren.
Wenn keine Filteroptionen angegeben werden, werden alle Produktprotokolldateien und (bei aktivierter Core-Sammlung) alle Core-Speicherabbilddateien erfasst. Die Filteroptionen schränken diese Auswahl schrittweise ein, wie unten beschrieben.
Referenzzeit
Eine Referenzzeit kann mit folgenden Parametern eingestellt werden: -E/--event-time oder -C/--reference-core-file.
Wenn keiner von beiden --event-time Noch --reference-core-file angegeben ist, wird keine Zeitfensterfilterung durchgeführt: Die Referenzzeit wird standardmäßig auf die aktuelle Zeit festgelegt und nur für die näherungsbasierte Reihenfolge verwendet, wenn eine Zählgrenze (-m oder -k) in Kraft ist (siehe Grenzwerte für die Anzahl unten).
Wenn beide -E und -C angezeigt wird, wird das letzte Element auf der Befehlszeile wirksam.
Zeitfenster
Wenn eine Referenzzeit eingestellt ist (mit --event-time oder --reference-core-file), wird ein Zeitfenster um ihn herum eingerichtet. Der Umfang des Zeitfensters kann mithilfe von -t/--minutes-before-event und/oder -T/--minutes-after-event, die standardmäßig auf 15 bzw. 5 Minuten festgelegt sind. Nur Dateien, deren Inhalt sich mit diesem Fenster überschneidet, können erfasst werden.
Zum Beispiel: -E "2020-03-20 14:30" -t 10 -T 3 Sammelt Dateien für den Zeitraum von 14:20:00 bis 14:33:00.
--minutes-before-event und --minutes-after-event werden ignoriert, wenn keiner von beiden --event-time Noch --reference-core-file angegeben wird.
Begrenzungen der Anzahl
Ein Grenzwert für die Dateianzahl kann mithilfe von -m/--max-traces und -k/--max-cores, für Protokolldateien bzw. Core-Dateien. Der Grenzwert wird pro Komponente gemessen.
Wenn mehr Dateien als NUM in das Zeitfenster fallen (oder verfügbar sind, wenn kein Fenster aktiv ist), werden die NUM-Dateien gesammelt, die der Referenzzeit am nächsten liegen.
Wenn eine Zählbegrenzung ohne --event-time oder --reference-core-filesind alle Dateien Kandidaten (kein Zeitfenster) und die neuesten Dateien der NUM werden ausgewählt.
Filterlogik
Die Dateifilterung wird zuerst auf das Zeitfenster und dann auf die Anzahlbegrenzung angewendet:
- Etablieren Sie Kandidaten. Alle Produktprotokolldateien und/oder Core-Speicherabbilddateien für eine Komponente werden aufgelistet.
- Zeitraum der Ableitung von Inhalten. Der Inhalt der Produktprotokolldateien stellt einen Zeitraum dar. Es wird davon ausgegangen, dass der Inhaltszeitraum mit dem letzten Änderungszeitpunkt des Vorgängers beginnt (
mtime) oder die UNIX-Epoche, wenn kein Vorgänger existiert; Sie endet an der eigenen Dateiseitemtime. Core-Speicherabbilddateien stellen einen Point-in-Time dar, zu dem die Dateimtime. - Zeitfenster anwenden (falls
-Eoder-Cspezifiziert). Dateien, deren Inhalt vollständig außerhalb des Fensters liegt, werden aus der Auswahl ausgeschlossen. Wenn bei Produktprotokolldateien keine Datei in das Fenster fällt, wird die einzelne Datei, die dem Fenster am nächsten ist, aufbewahrt, sodass das Bundle für eine Komponente nie leer ist. Für Kernspeicherabbilddateien gilt kein solcher Fallback. - Anwenden der Anzahlbegrenzung (falls
-mund/oder-kspezifiziert). Von den übrigen Dateien sind höchstensNUMausgewählt werden, wobei diejenigen bevorzugt werden, die der Referenzzeit am nächsten sind. Dateien vor und nach der Referenzzeit konkurrieren gleichermaßen um die Auswahl.
AUTHENTIFIZIERUNG
Das Dienstprogramm versucht, sich beim lokalen MDM anzumelden, wenn ein primärer MDM-Prozess erkannt wird, der den erwarteten Port überwacht (Standardeinstellung: 6611)
MDM-Anmeldeoptionen werden an die SCLI übergeben --login Befehl und werden von ihm verarbeitet.
Wenn die Anmeldung fehlschlägt, wird das Dienstprogramm mit einem Fehler beendet.
Wenn die Anmeldung übersprungen wird, werden weiterhin SCLI-Befehle versucht (zur Unterstützung von Szenarien, in denen sich der Nutzer zuvor manuell angemeldet hat). Nach drei SCLI-Fehlern wird eine Warnung angezeigt und alle weiteren SCLI-Befehle werden übersprungen.
Die Anmeldung wird übersprungen, wenn:
- Es wurde kein primärer MDM-Prozess auf dem lokalen Host gefunden.
- Bei der
--skip-mdm-loginangegeben ist.
Die Anmeldung schlägt fehl, wenn:
- Der MDM-Prozesseigentümer ist nicht in der Liste der autorisierten Nutzer enthalten (Standardeinstellung:
root) und die sichere Anmeldung aktiviert ist. - Der SCLI
--logingibt einen Fehler zurück (z. B. falsche Zugangsdaten).
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.
Das Bundle kann von einem Remotehost mit --output-file=- , um die Speicherplatzauslastung auf dem PowerFlex-Host zu minimieren. Die Bundle-Datei wird direkt in die Standardausgabe (stdout) beim Streaming; Es wird nicht auf der Festplatte erstellt.
Das Dienstprogramm schätzt den erforderlichen Speicherplatz für das temporäre Arbeitsverzeichnis und das Ausgabepaket vor der Datenerfassung.
Wenn der geschätzte erforderliche Speicherplatz den verfügbaren Speicherplatz auf den relevanten Dateisystemen überschreitet, wird das Dienstprogramm mit einem Fehler beendet. Diese Prüfung kann umgangen werden mit --skip-space-check.
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. get_info_run.log.
BEENDIGUNGSSTATUS
| 0 | Erfolgreicher Abschluss |
| 1 | Fehler (ungültige Argumente, nicht genügend Speicherplatz, Anmeldefehler, eine andere Instanz wird bereits ausgeführt, Fehler bei der Bundle-Generierung, Signal abgefangen usw.) |
DATEIEN
<WORK_DIR>/get_info_run.log |
Ausführungsprotokoll (auch im Bundle) |
<WORK_DIR>/scaleio-getinfo-tmp/ |
Temporäres Arbeitsverzeichnis (bei Erfolg bereinigt) |
/tmp/scaleio-getinfo/getInfoDump.tgz |
Standardspeicherort für Ausgabe-Bundles |
<WORK_DIR>/scaleio-getinfo-extra/
/tmp/scaleio-getinfo-extra/ |
Optionale zusätzliche Diagnosedatenverzeichnisse |
/tmp/scaleio-getinfo-backup/ |
Temporäre Backups geänderter Konfigurationsdateien (automatisch erstellt) |
/opt/emc/scaleio/ |
PowerFlex-Installationsverzeichnis |
UMGEBUNG
Voraussetzungen
- Das Dienstprogramm muss ausgeführt werden als:
root(oder ein Nutzer mit ausreichenden Berechtigungen zum Lesen von Komponentendateien, Ausführen von Diagnosebefehlen und Zugriff auf/proc,/sysund so weiter). - Standard-Dienstprogramme:
tar,gzip,stat,find,awk,sed,getopt(1)(erweitert),nice. - Optional:
zip(für--zip),xz(für--xz),gdb/gcore(für--generate-cores)
Parallelität
Nur eine Instanz von get_info.sh kann gleichzeitig ausgeführt werden. Das Dienstprogramm sucht mithilfe von pidof(1) und beendet, wenn eine Instanz gefunden wird.
Signalverarbeitung
Die Dienstprogramm-Traps INT, EXITund TERM Signale während der Datenerfassung. Beim Empfang eines Signals:
- Stellt alle gesicherten Konfigurationsdateien wieder her (z. B. Core-Generierungseinstellungen).
- Bereinigen temporärer Verzeichnisse
- Exits mit Status 1
Das Ausführungsprotokoll wird beibehalten und der Pfad wird mit Standardfehler gedruckt.
Beispiele
Erfassen eines Standard-Support-Bundles:
get_info.sh
Streamen Sie ein Bundle über eine SSH-Verbindung, ohne eine Bundle-Datei auf dem PowerFlex-Remotehost zu erstellen:
ssh <host> 'get_info.sh --output-file=-' > getInfoDump-<host>.tgz
Verwenden Sie ein anderes Arbeitsverzeichnis, um eine Auslastung zu vermeiden /tmpverwalten:
get_info.sh --work-dir=/var/tmp
Nutzerdefinierte Pfade in das Bundle aufnehmen:
get_info.sh --collect-path=/opt/custom/app/logs --collect-path='/var/log/app*'
Erfassen Sie den neuesten Core-Speicherabbild nur für die SDS- und MDM-Komponenten:
get_info.sh --collect-cores='mdm sds' --max-cores=1
Erfassen Sie Daten, die sich um die Änderungszeit einer Core-Datei drehen, mit einem nutzerdefinierten Zeitfenster:
get_info.sh --reference-core-file=/opt/emc/scaleio/sds/bin/core.1000 \
--minutes-before-event=10 \
--minutes-after-event=2