PowerFlex: GET_INFO - Hulpprogramma voor het verzamelen van supportbundels
Summary: get_info.sh - Verzamel diagnostische gegevens van een PowerFlex-host en verpak deze in een supportbundel.
Instructions
get_info.sh [OPTIES]
OMSCHRIJVING
get_info.sh is een diagnostisch hulpprogramma dat foutopsporingsinformatie van een PowerFlex-host (voorheen ScaleIO) verzamelt en deze archiveert in een gecomprimeerde bundel voor analyse door ondersteunend personeel.
Het hulpprogramma verzamelt gegevens uit meerdere bronnen, waaronder:
- PowerFlex componentlogboeken, configuratie- en traceerbestanden
- MDM/SCLI-query-uitvoer en interne foutopsporingsdump
- Interne diagnostiek PowerFlex-component
- Besturingssysteemconfiguratie, logboeken en runtimestatus
- Hardware-inventaris (storagecontrollers, netwerkapparaten, NVMe, NVDIMM, enzovoort.)
- Coredumps (bestaande en optioneel gegenereerd op aanvraag)
- Verzamelaar van diagnostische gegevens (
diag_coll) Statistieken
De resulterende bundel is één gecomprimeerd archief (standaard tar/gz) dat voor verdere analyse kan worden overgebracht naar PowerFlex-ondersteuning.
Slechts één instantie van get_info.sh kan op een bepaald moment op een host worden uitgevoerd. Als er niet genoeg vrije ruimte is voor de uitvoer, wordt deze geweigerd uit te voeren (tenzij de spatiecontrole expliciet wordt overgeslagen).
OPTIES
Algemene opties
-
-a, --allVerzamel alle gegevens. Dit komt overeen met het specificeren van
--mdm-repository,--collect-cores,--max-cores=2,--valgrind-coresen--analyse-diag-coll. -
-A, --analyse-diag-collAnalyseer de diagnostische gegevensverzamelaar (
diag coll) gegevens -
-b[COMPONENTS], --collect-cores[=COMPONENTS]Verzamel bestaande kerndumps voor de door spaties gescheiden lijst van gebruikersland
COMPONENTS. Standaard (wanneerCOMPONENTSis weggelaten): Alle gebruikerslandcomponenten
-b en COMPONENTEN. Voor de lange vorm, scheid met =
Voorbeeld
-b'mdm sds'
--collect-cores='mdm sds'
-
-d OUT_DIR, --output-dir=OUT_DIRSla de resulterende bundel op in de directory
OUT_DIR. Default: <WORK_DIR>/scaleio-getinfo(zie--work-dir). -
-f, --skip-mdm-loginSla de query om PowerFlex MDM-aanmeldingsreferenties over. Handig wanneer de gebruiker al handmatig is ingelogd.
-
-h, --helpToon het Help-bericht en sluit af. In combinatie met
--techen worden ook de opties voor technici weergegeven. -
-J, --xzGebruik
tar/xzIndeling voor de verzamelde bundel in plaats van de standaardtar/gz.Wordt genegeerd alstar(1)biedt geen ondersteuning voor--use-compress-programofxz(1)is niet gevonden. -
-k NUM, --max-cores=NUMVerzamel maximaal
NUMcore-bestanden van elk onderdeel. Standaard: Alle kernbestanden, impliceert--collect-cores -
-l, --lightGenereer een lichtbundel. Alleen de nieuwste generatie genummerde logbestanden wordt verzameld en uitvoerbare bestanden of bibliotheken van componenten worden niet opgenomen bij het verzamelen van cores. Het gebruik van deze optie vermindert de ondersteun en het gebruik ervan wordt afgeraden.
-
-m NUM, --max-traces=NUMVerzamel maximaal
NUMPowerFlex-traceringsbestanden van elk onderdeel. Standaard: Alle bestanden -
-N, --skip-space-checkSla verificatie van gratis schijfruimte over voordat u data verzamelt.
-
-P PATH, --collect-path=PATHHet extra pad ophalen
PATH.Alleen absolute paden worden geaccepteerd. Accepteert wildcards; Wildcards moeten worden geciteerd. Deze optie kan meerdere keren worden opgegeven om meerdere paden te verzamelen. -
-q, --quiet, --silentBerichten onderdrukken op standaarduitvoer.
-
-r, --mdm-repositoryVerzamel MDM-repositorybestanden.
-
-s, --skip-sdbgSla het ophalen van SDBG-uitvoer (diagnostische foutopsporing) over.
-
-S, --pause-core-generationOnderbreek de coregeneratie van PowerFlex-componenten tijdens het verzamelen van data. De oorspronkelijke configuratie wordt hersteld nadat de verzameling is voltooid.
-
-w WORK_DIR, --work-dir=WORK_DIRDirectory gebruiken
WORK_DIRvoor tijdelijke bestanden. Standaard:/tmp. -
-x FILE, --output-file=FILESla de verzamelde bundel op als bestandsnaam
FILE. Het juiste achtervoegsel van de bestandsnaam (.tgz,.zip, enzovoort) wordt automatisch toegevoegd. AlsFILEIs-(streepje), schrijf de bundel naar standaarduitvoer (impliceert--quiet). Wanneer een bundel naar standaarduitvoer wordt geschreven, wordt er geen bundelbestand op de schijf gemaakt. Standaard:getInfoDump. -
-z, --zipGebruik
zipIndeling voor de verzamelde bundel in plaats van de standaardtar/gz. Genegeerd alszip(1)Wordt niet aangetroffen op het systeem. -
--mdm-port=PORTVerbinding maken met de MDM via poort
PORTvoor SCLI-opdrachten. Standaard:scli default behavior. -
--overwrite-output-fileOverschrijf het uitvoerbestand als het al bestaat. Wanneer een uitvoerbestand of -map expliciet is opgegeven (met behulp van
-xof-d), is het standaardgedrag om te weigeren te overschrijven; Deze optie heft dat op. -
--techVoeg technicusopties toe aan de uitvoer van het helpbericht.
MDM-aanmeldingsopties
De volgende opties worden doorgegeven aan de SCLI --login Opdracht. Hun gedrag en standaardwaarden worden bepaald door SCLI.
-
-n, --use-nonsecure-communicationMaak verbinding met de MDM in de niet-beveiligde modus.
-
-p PASSWORD, --password=PASSWORDGebruik
PASSWORDvoor PowerFlex MDM-aanmelding. Standaard: SCLI-standaardgedrag -
-u USERNAME, --username=USERNAMEGebruik
USERNAMEvoor PowerFlex MDM-aanmelding. Standaard: SCLI-standaardgedrag -
--ldap-authenticationMeld u aan bij PowerFlex MDM met verificatie op basis van LDAP.
-
--management-system-ip=ADDRESSMaak verbinding met
SSO/M&OOpADDRESSvoor PowerFlex-aanmelding. Standaard: SCLI-standaardgedrag -
--p12-password=PASSWORDDe PowerFlex-aanmelding versleutelen
PKCS#12Bestand metPASSWORD. Standaard: SCLI-standaardgedrag -
--p12-path=FILESla de PowerFlex-aanmelding op
PKCS#12Bestand alsFILE. Standaard: SCLI-standaardgedrag
Opties voor technici
De volgende opties zijn bedoeld voor gebruik door supporttechnici en worden alleen in het Help-bericht weergegeven wanneer: --tech is gespecificeerd.
-c[COMPONENTS], --generate-cores[=COMPONENTS]
Genereer kernbestanden (met behulp van gcore(1)) voor de lopende processen van de door spaties gescheiden lijst van gebruikersland COMPONENTS. Standaard: alle gebruikerslandcomponenten, impliceert --collect-executables, en vereist gdb als gcore.
-c als COMPONENTS. Voor de lange vorm, scheid met =.
Voorbeelden:
-c'mdm sds'
--generate-cores='mdm sds'
-
-C CORE_FILE, --reference-core-file=CORE_FILEProductlogboeken en cores verzamelen ten opzichte van de laatste wijzigingstijd (
mtime) vanCORE_FILE, in plaats van de starttijd van de uitvoering. Impliceert--collect-cores -
-E REF_TIME, --event-time=REF_TIMEProductlogboeken en cores verzamelen met betrekking tot
REF_TIME, in plaats van de starttijd van de uitvoering. Accepteert elk formaat dat wordt begrepen doordate(1). Impliceert--collect-cores. -g[COMPONENTS], --valgrind-cores[=COMPONENTS]
Verzamelen valgrind Core dumps voor het opgegeven gebruikersland COMPONENTS. Standaard: alle gebruikerslandcomponenten. Impliceert --collect-executables.
-b als COMPONENTS. Voor de lange vorm, scheid met =
Voorbeelden:
-g'mdm sds'
--valgrind-cores='mdm sds'
-
-t MIN, --minutes-before-event=MINProductlogboeken en cores verzamelen die zijn gegenereerd tot
MINminuten voor de referentietijd. Standaard: 15 -
-T MIN, --minutes-after-event=MINProductlogboeken en cores verzamelen die zijn gegenereerd tot
MINminuten na de referentietijd. Standaard: 5 -
-X[COMPONENTS], --collect-executables[=COMPONENTS]Verzamel uitvoerbare bestanddelen en hun gedeelde bibliotheken voor het opgegeven gebruikersland
COMPONENTS. Standaard: Alle gebruikerslandcomponenten
-b als COMPONENTS. Voor de lange vorm, scheid met =
Voorbeelden:
-X'mdm sds'
--collect-executables='mdm sds'
-
--keep-work-dirBewaar de gegenereerde tijdelijke werkmap na het maken van de bundel (automatisch opgeschoond).
BUNDELSTRUCTUUR
De uitvoerbundel is één gecomprimeerd archief.
- De map op het hoogste niveau van de bundel is de hostnaam van het opgehaalde systeem.
- Algemene host-opdrachtuitvoer gaat naar een
server/Submap.
Bestandsnaam is<command>+<arguments>+ achtervoegsel (.txtstandaard). Spaties vervangen door_, niet-alfanumerieke tekens gestript
Voorbeeld:server/ip_-s_addr.txt – output of ip -s addr - Uitvoer van productopdrachten gaat naar de subdirectory van het component.
mdm/Voorscli,sdc/Voordrv_cfg, enzovoort.
Naam van opdracht (scli,drv_cfg, enzovoort) wordt gestript. Het eerste betekenisvolle argument wordt de bestandsnaam. Bestanden worden toegewezen als het relevante achtervoegsel,.txtstandaard.
Voorbeelden:
-
mdm/query_cluster.txt- output vanscli --query_clustermdm/tgt_dump.txt- output vanscli --debug_action --tgt_dumpsdc/query_mdms.txt- output vandrv_cfg --query_mdmssds/sdbg.txt- uitvoer van SDBGdumpallscreensvoor SDS
- Productcomponentbestanden (in tegenstelling tot opdrachtuitvoer),
<component>/cfg,<component>/logs, enzovoort
Gekopieerd uit de map van het component met het voorvoegsel verwijderd.
Voorbeelden:
-
mdm/cfg/conf.txt- kopie van/opt/emc/scaleio/mdm/cfg/conf.txtsds/logs/trc.0- kopie van/opt/emc/scaleio/sds/logs/trc.0
- Hostbestandssysteembestanden worden op het bestandssysteempad geplaatst ten opzichte van de bundelroot.
Voorbeelden:
-
etc/os-release- kopie van/etc/os-releasevar/log/messages- kopie van/var/log/messagesproc/cpuinfo- kopie van/proc/cpuinfo
- Diagnostische verzamelaarbestanden (diag_coll) worden gekopieerd met het
/optVoorvoegsel gestript, met behoud van interne structuur.
Voorbeeld:diag_coll/logs/sar.0- kopie van/opt/diag_coll/logs/sar.0 - Verborgen bestanden (met voorvoegsel punt) worden "verborgen" door de voorlooppunt te verwijderen.
- Logboek voor uitvoering van hulpprogramma's,
get_info_run.log, direct onder de <hostnaam>/root geplaatst
Structuur van de bundelmapstructuur:
<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)
FILTEREN VAN PRODUCTLOGBOEKEN EN CORE-BESTANDEN
De opties die in deze sectie worden beschreven, bepalen hoe productlogbestanden (ook wel traceerbestanden genoemd, bijvoorbeeld: trc.0, trc.1, exp.0) en core dump-bestanden worden geselecteerd voor opname in de verzamelde bundel. Ze doen dit door een referentietijd, een tijdvenster eromheen en tellimieten te definiëren.
Wanneer er geen filteropties zijn opgegeven, worden alle productlogbestanden en (als kernverzameling is ingeschakeld) alle kerndumpbestanden verzameld. De filteropties beperken deze selectie geleidelijk, zoals hieronder beschreven.
Referentietijd
Een referentietijd kan worden ingesteld met behulp van -E/--event-time of -C/--reference-core-file.
Als geen van beide --event-time Noch --reference-core-file wordt gegeven, wordt er geen tijdvensterfiltering uitgevoerd: de referentietijd wordt standaard ingesteld op de huidige tijd en wordt alleen gebruikt voor ordening op basis van nabijheid wanneer een tellimiet (-m of -k) is van kracht (zie Count Limits hieronder).
Als beide -E als -C verschijnt, wordt het laatste item op de opdrachtregel van kracht.
Tijdvenster
Wanneer een referentietijd is ingesteld (met behulp van --event-time of --reference-core-file), is er een tijdvenster omheen ingesteld. Het tijdvensterbereik kan worden ingesteld met behulp van -t/--minutes-before-event en/of -T/--minutes-after-event, die standaard respectievelijk 15 en 5 minuten zijn. Alleen bestanden waarvan de inhoud overlapt met dit venster komen in aanmerking voor verzameling.
Bijvoorbeeld, -E "2020-03-20 14:30" -t 10 -T 3 verzamelt bestanden over de periode 14:20:00 tot en met 14:33:00.
--minutes-before-event als --minutes-after-event worden genegeerd wanneer geen van beide --event-time Noch --reference-core-file is gespecificeerd.
Limieten aantal
Een limiet voor het aantal bestanden kan worden ingesteld met behulp van -m/--max-traces als -k/--max-cores, voor respectievelijk logbestanden en corebestanden. De grens wordt per onderdeel gemeten.
Wanneer meer bestanden dan NUM binnen het tijdvenster vallen (of beschikbaar zijn, als er geen venster actief is), worden de NUM-bestanden verzameld die het dichtst bij de referentietijd liggen.
Wanneer een tellimiet wordt gebruikt zonder --event-time of --reference-core-file, zijn alle bestanden kandidaten (geen tijdvenster) en worden de meest recente bestanden van de NUM geselecteerd.
Logica filteren
Bestandsfiltering wordt eerst toegepast op het tijdvenster en vervolgens op de tellimiet:
- Stel kandidaten vast. Alle productlogbestanden en/of coredumpbestanden voor een component worden geïnventariseerd.
- Leid de inhoudsperiode af. De inhoud van productlogbestanden vertegenwoordigt een periode. De inhoudsperiode wordt geacht te beginnen op het tijdstip van de laatste wijziging van zijn voorganger (
mtime), of het UNIX-tijdperk, wanneer er geen voorganger bestaat; het eindigt bij het bestand zelfmtime. Coredumpbestanden vertegenwoordigen een tijdstip op het moment dat het bestandmtime. - Tijdvenster toepassen (indien
-Eof-Cgespecificeerd). Bestanden waarvan de inhoud volledig buiten het venster valt, worden uit de selectie verwijderd. Voor productlogbestanden, als er geen bestand in het venster valt, wordt het enkele bestand behouden dat zich het dichtst bij het venster bevindt, zodat de bundel nooit leeg is voor een onderdeel. Voor coredumpbestanden is een dergelijke fallback niet van toepassing. - Pas de tellimiet toe (als
-men/of-kgespecificeerd). Van de overige bestanden zijn er hoogstensNUMworden geselecteerd, waarbij de voorkeur wordt gegeven aan degenen die het dichtst bij de referentietijd liggen. Bestanden voor en na de referentietijd strijden in gelijke mate om selectie.
VERIFICATIE
Het hulpprogramma probeert zich aan te melden bij de lokale MDM als een primair MDM-proces wordt gedetecteerd dat luistert op de verwachte poort (standaard: 6611)
MDM-aanmeldingsopties worden doorgegeven aan de SCLI --login commando en worden erdoor verwerkt.
Als het aanmelden mislukt, wordt het hulpprogramma beëindigd met een foutmelding.
Wanneer aanmelding wordt overgeslagen, worden nog steeds SCLI-opdrachten geprobeerd (ter ondersteuning van scenario's waarbij de gebruiker zich vooraf handmatig heeft aangemeld). Na drie SCLI-fouten wordt een waarschuwing weergegeven en worden alle verdere SCLI-opdrachten overgeslagen.
Aanmelding wordt overgeslagen in de volgende situaties:
- Er wordt geen primair MDM-proces gevonden op de lokale host.
- De
--skip-mdm-loginoptie is opgegeven.
Aanmelden mislukt in de volgende gevallen:
- De eigenaar van het MDM-proces staat niet in de lijst met geautoriseerde gebruikers (standaard:
root) en beveiligde aanmelding is ingeschakeld. - Het SCLI
--loginCommand retourneert een foutmelding (bijvoorbeeld verkeerde referenties).
SCHIJFRUIMTE
De benodigde schijfruimte voor tijdelijke bestanden en de resulterende bundel kan sterk variëren.
Het hulpprogramma probeert het tijdelijke ruimtegebruik tot een minimum te beperken; Het is beperkt tot opdrachtuitvoer en kopieën van het verzamelde virtuele bestandssysteem (/proc als /sys) bestanden.
De bundel kan worden gestreamd vanaf een externe host met --output-file=- om het gebruik van schijfruimte op de PowerFlex-host te minimaliseren. Het bundelbestand wordt rechtstreeks naar de standaarduitvoer geschreven (stdout) tijdens het streamen; Het is niet gemaakt op schijf.
Het hulpprogramma schat de benodigde schijfruimte voor zowel de tijdelijke werkmap als de uitvoerbundel voordat gegevens worden verzameld.
Als de geschatte benodigde ruimte groter is dan de beschikbare ruimte op de relevante bestandssystemen, wordt het hulpprogramma beëindigd met een fout. Deze controle kan worden omzeild met --skip-space-check.
De werkmap en de uitvoermap kunnen zich op verschillende bestandssystemen bevinden; Elk wordt onafhankelijk gecontroleerd.
De geschatte benodigde ruimte wordt naar het logboekbestand van het hulpprogramma geschreven. get_info_run.log.
AFSLUITSTATUS
| 0 | Met succes voltooid |
| 1 | Fout (ongeldige argumenten, onvoldoende ruimte, aanmeldingsfout, een andere instantie die al wordt uitgevoerd, fout bij het genereren van bundels, signaal betrapt, enzovoort) |
BESTANDEN
<WORK_DIR>/get_info_run.log |
Uitvoeringslogboek (ook in de bundel) |
<WORK_DIR>/scaleio-getinfo-tmp/ |
Tijdelijke werkmap (opgeschoond bij succes) |
/tmp/scaleio-getinfo/getInfoDump.tgz |
Standaardlocatie van de uitvoerbundel |
<WORK_DIR>/scaleio-getinfo-extra/
/tmp/scaleio-getinfo-extra/ |
Optionele extra diagnostische datadirectory's |
/tmp/scaleio-getinfo-backup/ |
Tijdelijke back-ups van gewijzigde configuratiebestanden (automatisch gemaakt) |
/opt/emc/scaleio/ |
PowerFlex-installatiemap |
MILIEU
Vereisten
- Het hulpprogramma moet worden uitgevoerd als
root(of een gebruiker met voldoende rechten om componentbestanden te lezen, diagnostische opdrachten uit te voeren en toegang te krijgen tot/proc,/sys, enzovoort). - Standaard nutsvoorzieningen:
tar,gzip,stat,find,awk,sed,getopt(1)(verbeterd),nice. - Optionele:
zip(voor--zip),xz(voor--xz),gdb/gcore(voor--generate-cores)
Concurrency
Slechts één instantie van get_info.sh Kan tegelijkertijd worden uitgevoerd. Het hulpprogramma controleert op een bestaande actieve instantie met behulp van pidof(1) en wordt beëindigd als er een instantie wordt gevonden.
Signaal afhandeling
De nutsvoorzieningen vallen INT, EXITen TERM signalen tijdens het verzamelen van gegevens. Na ontvangst van een signaal:
- Herstelt alle back-ups van configuratiebestanden (bijvoorbeeld instellingen voor coregeneratie).
- Ruimt tijdelijke mappen op
- Afsluiten met status 1
Het uitvoeringslogboek blijft behouden en het pad wordt afgedrukt naar standaardfout.
Voorbeelden
Verzamel een standaard supportbundel:
get_info.sh
Een bundel streamen via een SSH-verbinding, zonder een bundelbestand te maken op de externe PowerFlex-host:
ssh <host> 'get_info.sh --output-file=-' > getInfoDump-<host>.tgz
Gebruik een andere werkmap om te voorkomen dat u vol raakt /tmp:
get_info.sh --work-dir=/var/tmp
Voeg aangepaste paden toe aan de bundel:
get_info.sh --collect-path=/opt/custom/app/logs --collect-path='/var/log/app*'
Verzamel alleen de meest recente coredump voor de SDS- en MDM-componenten:
get_info.sh --collect-cores='mdm sds' --max-cores=1
Verzamel data gecentreerd rond de wijzigingstijd van een kernbestand, met een aangepast tijdvenster:
get_info.sh --reference-core-file=/opt/emc/scaleio/sds/bin/core.1000 \
--minutes-before-event=10 \
--minutes-after-event=2