PowerFlex: GET_INFO — narzędzie do zbierania danych dotyczących pakietu pomocy technicznej
Summary: get_info.sh — zbierz informacje diagnostyczne z hosta PowerFlex i włącz je do pakietu pomocy technicznej.
Instructions
get_info.sh [OPCJE]
OPIS
get_info.sh to narzędzie diagnostyczne, które zbiera informacje debugowania z hosta PowerFlex (dawniej ScaleIO) i archiwizuje je w skompresowanym pakiecie do analizy przez personel pomocy technicznej.
Narzędzie zbiera dane z wielu źródeł, w tym:
- Dzienniki, konfiguracja i pliki śledzenia elementów PowerFlex
- Dane wyjściowe zapytań MDM/SCLI i wewnętrzny zrzut debugowania
- Diagnostyka wewnętrzna elementów PowerFlex
- Konfiguracja systemu operacyjnego, dzienniki i stan środowiska uruchomieniowego
- Zasoby sprzętu (kontrolery pamięci masowej, urządzenia sieciowe, dyski NVMe, NVDIMM itd.)
- Zrzuty rdzenia (istniejące i opcjonalnie generowane na żądanie)
- Moduł zbierający dane diagnostyczne (
diag_coll) Statystyki
Wynikowy pakiet jest pojedynczym skompresowanym archiwum (domyślnie tar/gz), które można przenieść do działu pomocy technicznej PowerFlex w celu dalszej analizy.
Tylko jedno wystąpienie get_info.sh mogą działać na hoście w danym momencie. Jeśli nie ma wystarczającej ilości wolnego miejsca na wyjście, odmawia uruchomienia (chyba że sprawdzanie spacji zostanie jawnie pominięte).
OPCJE
Opcje ogólne
-
-a, --allZbierz wszystkie dane. Jest to równoznaczne z określeniem
--mdm-repository,--collect-cores,--max-cores=2,--valgrind-coresi--analyse-diag-coll. -
-A, --analyse-diag-collAnalizowanie modułu zbierającego dane diagnostyczne (
diag coll) Dane -
-b[COMPONENTS], --collect-cores[=COMPONENTS]Zbierz istniejące zrzuty rdzenia dla rozdzielonej spacjami listy obszarów użytkownika
COMPONENTS. Domyślne (gdy:COMPONENTSjest pominięty): Wszystkie komponenty przestrzeni użytkownika
-b i KOMPONENTY. W przypadku długiej formy oddziel za pomocą =
Przykład
-b'mdm sds'
--collect-cores='mdm sds'
-
-d OUT_DIR, --output-dir=OUT_DIRZapisz wynikowy pakiet w katalogu
OUT_DIR. Default: <WORK_DIR>/scaleio-getinfo(patrz--work-dir). -
-f, --skip-mdm-loginPomiń zapytanie o poświadczenia logowania do PowerFlex MDM. Jest to przydatne, gdy użytkownik zalogował się już ręcznie.
-
-h, --helpWyświetl komunikat pomocy i wyjdź. W połączeniu z
--tech, wyświetl także opcje technika. -
-J, --xzUżyj
tar/xzFormat zebranego pakietu zamiast domyślnegotar/gz.Ignorowane, jeślitar(1)Nie obsługuje--use-compress-programlubxz(1)nie znaleziono. -
-k NUM, --max-cores=NUMZbierz nawet
NUMpodstawowych plików z każdego komponentu. Domyślnie: Wszystkie pliki rdzenia, implikuje--collect-cores -
-l, --lightWygeneruj wiązkę światła. Zbierane są tylko najnowszej generacji numerowanych plików dziennika, a pliki wykonywalne składników lub biblioteki nie są uwzględniane podczas zbierania rdzeni. Korzystanie z tej opcji zmniejsza możliwości wsparcia i odradza się korzystanie z niej.
-
-m NUM, --max-traces=NUMZbierz nawet
NUMPliki śledzenia PowerFlex z każdego elementu. Domyślnie: Wszystkie pliki -
-N, --skip-space-checkPomiń weryfikację wolnego miejsca na dysku przed zebraniem danych.
-
-P PATH, --collect-path=PATHZbierz dodatkową ścieżkę
PATH.Akceptowane są tylko ścieżki bezwzględne. Akceptuje symbole wieloznaczne; Symbole wieloznaczne powinny być podane w cudzysłowie. Tę opcję można określić wiele razy, aby zebrać wiele ścieżek. -
-q, --quiet, --silentPomija komunikaty na standardowym wyjściu.
-
-r, --mdm-repositoryZbierz pliki repozytorium MDM.
-
-s, --skip-sdbgPomiń zbieranie danych wyjściowych SDBG (debugger diagnostyczny).
-
-S, --pause-core-generationWstrzymaj generowanie podstawowych komponentów PowerFlex na czas zbierania danych. Pierwotna konfiguracja zostanie przywrócona po zakończeniu zbierania.
-
-w WORK_DIR, --work-dir=WORK_DIRUżyj katalogu
WORK_DIRw przypadku plików tymczasowych. Domyślnie:/tmp. -
-x FILE, --output-file=FILEZapisz zebrany pakiet jako plik o nazwie
FILE. Odpowiedni sufiks nazwy pliku (.tgz,.zipi tak dalej) jest dodawana automatycznie. jeśli nie ustawionoFILEJest-(myślnik), zapisuje pakiet na standardowe wyjście (implikuje--quiet). Gdy pakiet jest zapisywany na standardowe wyjście, na dysku nie jest tworzony żaden plik pakietu. Domyślnie:getInfoDump. -
-z, --zipUżyj
zipFormat zebranego pakietu zamiast domyślnegotar/gz. Ignorowane, jeślizip(1)nie został znaleziony w systemie. -
--mdm-port=PORTPołącz się z MDM za pomocą portu
PORTdla poleceń SCLI. Domyślnie:scli default behavior. -
--overwrite-output-fileZastąp plik wyjściowy, jeśli już istnieje. Gdy plik wyjściowy lub katalog jest jawnie określony (przy użyciu
-xlub-d), domyślnym zachowaniem jest odmowa nadpisania; Ta opcja zastępuje tę opcję. -
--techUwzględnij opcje technika w danych wyjściowych komunikatu pomocy.
Opcje logowania do MDM
Następujące opcje są przekazywane do SCLI --login . Ich zachowanie i wartości domyślne są regulowane przez SCLI.
-
-n, --use-nonsecure-communicationPołącz się z MDM w trybie niezabezpieczonym.
-
-p PASSWORD, --password=PASSWORDUżyj
PASSWORDna potrzeby logowania do rozwiązania PowerFlex MDM. Domyślnie: Domyślne zachowanie interfejsu SCLI -
-u USERNAME, --username=USERNAMEUżyj
USERNAMEna potrzeby logowania do rozwiązania PowerFlex MDM. Domyślnie: Domyślne zachowanie interfejsu SCLI -
--ldap-authenticationZaloguj się do PowerFlex MDM przy użyciu uwierzytelniania opartego na LDAP.
-
--management-system-ip=ADDRESSPołącz się z
SSO/M&OatADDRESS, aby zalogować się do PowerFlex. Domyślnie: Domyślne zachowanie interfejsu SCLI -
--p12-password=PASSWORDSzyfrowanie logowania PowerFlex
PKCS#12Plik za pomocąPASSWORD. Domyślnie: Domyślne zachowanie interfejsu SCLI -
--p12-path=FILEPrzechowywanie danych logowania PowerFlex
PKCS#12Plik jakoFILE. Domyślnie: Domyślne zachowanie interfejsu SCLI
Opcje dla techników
Poniższe opcje są przeznaczone do użytku przez pracowników pomocy technicznej i są wyświetlane w komunikacie pomocy tylko wtedy, gdy --tech jest określony.
-c[COMPONENTS], --generate-cores[=COMPONENTS]
Generowanie plików rdzenia (przy użyciu gcore(1)) w odniesieniu do uruchomionych procesów w ramach oddzielonego przestrzenią wykazu gruntów użytkowych COMPONENTS. Domyślnie: wszystkie komponenty przestrzeni użytkownika, implikuje --collect-executablesi wymaga gdb i gcore.
-c i COMPONENTS. W przypadku długiej formy oddziel za pomocą =.
Przykłady:
-c'mdm sds'
--generate-cores='mdm sds'
-
-C CORE_FILE, --reference-core-file=CORE_FILEZbierz dzienniki produktów i rdzenie dotyczące czasu ostatniej modyfikacji (
mtime) z dniaCORE_FILE, zamiast godziny rozpoczęcia wykonywania. Oznacza--collect-cores -
-E REF_TIME, --event-time=REF_TIMEGromadzenie dzienników produktów i rdzeni związanych z
REF_TIME, zamiast godziny rozpoczęcia wykonywania. Akceptuje dowolny format zrozumiały dladate(1). Oznacza--collect-cores. -g[COMPONENTS], --valgrind-cores[=COMPONENTS]
Zbierać valgrind zrzuty rdzenia dla określonej przestrzeni użytkownika COMPONENTS. Domyślnie: wszystkie komponenty przestrzeni użytkownika. Oznacza --collect-executables.
-b i COMPONENTS. W przypadku długiej formy oddziel za pomocą =
Przykłady:
-g'mdm sds'
--valgrind-cores='mdm sds'
-
-t MIN, --minutes-before-event=MINZbieranie wygenerowanych dzienników produktów i rdzeni do
MINminut przed czasem odniesienia. Domyślnie: 15 -
-T MIN, --minutes-after-event=MINZbieranie wygenerowanych dzienników produktów i rdzeni do
MINminut po czasie odniesienia. Domyślnie: 5 -
-X[COMPONENTS], --collect-executables[=COMPONENTS]Zbieranie plików wykonywalnych komponentów i ich bibliotek współdzielonych dla określonej przestrzeni użytkownika
COMPONENTS. Domyślnie: Wszystkie komponenty przestrzeni użytkownika
-b i COMPONENTS. W przypadku długiej formy oddziel za pomocą =
Przykłady:
-X'mdm sds'
--collect-executables='mdm sds'
-
--keep-work-dirZachowaj wygenerowany tymczasowy katalog roboczy po utworzeniu pakietu (czyszczony automatycznie).
STRUKTURA PAKIETU
Pakiet wyjściowy jest pojedynczym skompresowanym archiwum.
- Katalog najwyższego poziomu pakietu jest nazwą hosta systemu objętego zbieraniem danych.
- Ogólne dane wyjściowe poleceń hosta przechodzą do
server/Podkatalogu.
Nazwa pliku to<command>+<arguments>+ przyrostek (.txtdomyślnie). Spacje zamienione na_, znaki niealfanumeryczne usunięte
Przykład:server/ip_-s_addr.txt – output of ip -s addr - Dane wyjściowe poleceń produktu są przenoszone do podkatalogu komponentu.
mdm/Forscli,sdc/Fordrv_cfgi tak dalej.
Nazwa polecenia (scli,drv_cfgi tak dalej) jest usuwany. Pierwszym znaczącym argumentem staje się nazwa pliku. Pliki są przypisywane jako odpowiedni sufiks,.txt.
Przykłady:
-
mdm/query_cluster.txt- wyjściescli --query_clustermdm/tgt_dump.txt- wyjściescli --debug_action --tgt_dumpsdc/query_mdms.txt- wyjściedrv_cfg --query_mdmssds/sdbg.txt- wyjście SDBGdumpallscreensdla karty charakterystyki charakterystyki
- pliki składowe produktu (w przeciwieństwie do danych wyjściowych poleceń),
<component>/cfg,<component>/logsi tak dalej
Skopiowane z katalogu komponentu z usuniętym prefiksem.
Przykłady:
-
mdm/cfg/conf.txt- kopia/opt/emc/scaleio/mdm/cfg/conf.txtsds/logs/trc.0- kopia/opt/emc/scaleio/sds/logs/trc.0
- Pliki systemu plików hosta są umieszczane w ścieżce systemu plików względem katalogu głównego pakietu.
Przykłady:
-
etc/os-release- kopia/etc/os-releasevar/log/messages- kopia/var/log/messagesproc/cpuinfo- kopia/proc/cpuinfo
- Pliki kolektora diagnostycznego (diag_coll) są kopiowane za pomocą
/optprzedrostek usunięty, zachowując strukturę wewnętrzną.
Przykład:diag_coll/logs/sar.0- kopia/opt/diag_coll/logs/sar.0 - Ukryte pliki (z prefiksem kropki) są "odkrywane" poprzez usunięcie kropki wiodącej.
- Dziennik wykonywania narzędzia,
get_info_run.log, umieszczony bezpośrednio pod nazwą hosta>/katalogiem <głównym
Struktura drzewa katalogów pakietów:
<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)
FILTROWANIE DZIENNIKÓW PRODUKTÓW I PLIKÓW RDZENIA
Opcje opisane w tej sekcji kontrolują sposób, w jaki pliki dziennika produktu (nazywane również plikami śledzenia, na przykład trc.0, trc.1, exp.0) i pliki zrzutu rdzenia są wybierane do uwzględnienia w zbieranym pakiecie. Robią to, definiując czas odniesienia, okno czasowe wokół niego i limity liczbowe.
Jeśli nie określono żadnych opcji filtrowania, zbierane są wszystkie pliki dziennika produktu i (jeśli włączona jest kolekcja rdzeniowa) wszystkie pliki zrzutu pamięci. Opcje filtrowania stopniowo zawężają ten wybór zgodnie z poniższym opisem.
Czas referencyjny
Czas referencyjny można ustawić za pomocą jednej z następujących opcji: -E/--event-time lub -C/--reference-core-file.
Jeśli ani jedno, ani drugie --event-time Ani --reference-core-file nie jest wykonywane filtrowanie okna czasowego: czas referencyjny jest domyślnie ustawiony na bieżący czas i jest używany tylko do porządkowania opartego na bliskości, gdy limit zliczania (-m lub -k) (patrz limity liczby poniżej).
Jeśli oba te elementy -E i -C pojawia się, ostatni element w wierszu poleceń zaczyna obowiązywać.
Okno czasowe
Po ustawieniu czasu odniesienia (za pomocą --event-time lub --reference-core-file), wokół niego ustanawia się okno czasowe. Zakres okna czasowego można ustawić za pomocą -t/--minutes-before-event oraz lub -T/--minutes-after-event, które domyślnie wynoszą odpowiednio 15 i 5 minut. Do kolekcji kwalifikują się tylko pliki, których zawartość pokrywa się z tym oknem.
Na przykład: -E "2020-03-20 14:30" -t 10 -T 3 Gromadzi pliki obejmujące okres od 14:20:00 do 14:33:00.
--minutes-before-event i --minutes-after-event są ignorowane, gdy ani jedno, ani drugie --event-time Ani --reference-core-file jest określony.
Limity liczby
Limit liczby plików można ustawić za pomocą -m/--max-traces i -k/--max-cores, odpowiednio dla plików dziennika i plików podstawowych. Wartość graniczna jest mierzona dla każdego składnika.
Gdy w przedziale czasowym mieści się więcej plików niż liczba liczb numerycznych (lub są one dostępne, jeśli żadne okno nie jest aktywne), gromadzone są pliki numeryczne znajdujące się najbliżej czasu referencyjnego.
Gdy limit zliczania jest używany bez --event-time lub --reference-core-file, wszystkie pliki są plikami kandydującymi (bez okna czasowego) i wybierane są najnowsze pliki NUM.
Logika filtrowania
Filtrowanie plików dotyczy najpierw przedziału czasu, a następnie limitu zliczania:
- Ustal kandydatów. Wyliczane są wszystkie pliki dziennika produktu i/lub pliki zrzutu rdzenia dla składnika.
- Uzyskiwanie zawartości period. Zawartość plików dziennika produktów reprezentuje okres. Uznaje się, że okres zawartości rozpoczyna się w momencie ostatniej modyfikacji poprzednika (
mtime) lub epokę Uniksa, jeśli nie istnieje poprzednik; Kończy się na plikumtime. Pliki zrzutu rdzenia reprezentują punkt w czasie, w którym plikmtime. - Zastosuj okno czasowe (jeśli
-Elub-Cokreślone). Pliki, których zawartość w całości wykracza poza okno, są odrzucane z zaznaczania. W przypadku plików dziennika produktu, jeśli żaden plik nie mieści się w oknie, zachowywany jest pojedynczy plik znajdujący się najbliżej okna, dzięki czemu pakiet nigdy nie jest pusty dla komponentu. W przypadku plików zrzutu pamięci rdzenia taka rezerwa nie ma zastosowania. - Zastosuj limit zliczania (jeśli
-moraz lub-kokreślone). Wśród pozostałych plików co najwyżejNUM, preferując te, które są najbliższe czasowi referencyjnemu. Pliki przed i po czasie referencyjnym rywalizują w równym stopniu o wybór.
UWIERZYTELNIANIA
Narzędzie próbuje zalogować się do lokalnego MDM, jeśli zostanie wykryte, że główny proces MDM nasłuchuje na oczekiwanym porcie (ustawienie domyślne: 6611)
Opcje logowania MDM są przekazywane do SCLI --login i są przez nie przetwarzane.
Jeśli logowanie się nie powiedzie, narzędzie zostanie zamknięte z błędem.
W przypadku pominięcia logowania nadal podejmowane są polecenia SCLI (w celu obsługi scenariuszy, w których użytkownik zalogował się wcześniej ręcznie). Po trzech awariach SCLI wyświetlane jest ostrzeżenie, a wszystkie kolejne polecenia SCLI są pomijane.
Logowanie jest pomijane, gdy:
- Na hoście lokalnym nie znaleziono podstawowego procesu MDM.
- Pakiet
--skip-mdm-loginjest określona.
Logowanie kończy się niepowodzeniem, gdy:
- Właściciel procesu MDM nie znajduje się na liście autoryzowanych użytkowników (ustawienie domyślne:
root) i włączone jest bezpieczne logowanie. - The SCLI
--loginPolecenie zwraca błąd (na przykład nieprawidłowe poświadczenia).
MIEJSCE NA DYSKU
Wymagania dotyczące miejsca na dysku dla plików tymczasowych i wynikowego pakietu mogą się znacznie różnić.
Narzędzie stara się zminimalizować tymczasowe wykorzystanie przestrzeni; Ogranicza się do danych wyjściowych poleceń i kopii zebranego wirtualnego systemu plików (/proc i /sys) plików.
Pakiet może być przesyłany strumieniowo ze zdalnego hosta za pomocą --output-file=- , aby zminimalizować wykorzystanie miejsca na dysku hosta PowerFlex. Plik pakietu jest zapisywany bezpośrednio na standardowe wyjście (stdout) podczas przesyłania strumieniowego; Nie jest tworzony na dysku.
Przed zebraniem danych narzędzie szacuje wymagane miejsce na dysku zarówno dla tymczasowego katalogu roboczego, jak i pakietu wyjściowego.
Jeśli szacowane wymagane miejsce przekracza ilość miejsca dostępnego w odpowiednich systemach plików, narzędzie zakończy działanie z błędem. Tę kontrolę można pominąć za pomocą --skip-space-check.
Katalog roboczy i katalog wyjściowy mogą znajdować się w różnych systemach plików; Każdy z nich jest sprawdzany niezależnie.
Szacowane wymagania przestrzenne są zapisywane w pliku dziennika narzędzia, get_info_run.log.
KOD ZAKOŃCZENIA
| 0 | Pomyślnie ukończono |
| 1 | Błąd (nieprawidłowe argumenty, niewystarczająca ilość miejsca, błąd logowania, inna instancja już uruchomiona, awaria generowania pakietu, przechwycenie sygnału itp.) |
PLIKI
<WORK_DIR>/get_info_run.log |
Dziennik wykonania (również w pakiecie) |
<WORK_DIR>/scaleio-getinfo-tmp/ |
Tymczasowy katalog pracy (wyczyszczony po pomyślnym zakończeniu) |
/tmp/scaleio-getinfo/getInfoDump.tgz |
Domyślna lokalizacja pakietu wyjściowego |
<WORK_DIR>/scaleio-getinfo-extra/
/tmp/scaleio-getinfo-extra/ |
Opcjonalne dodatkowe katalogi danych diagnostycznych |
/tmp/scaleio-getinfo-backup/ |
Tymczasowe kopie zapasowe zmodyfikowanych plików konfiguracyjnych (tworzone automatycznie) |
/opt/emc/scaleio/ |
Katalog instalacyjny PowerFlex |
ŚRODOWISKO
Wymagania wstępne
- Narzędzie musi być uruchomione jako
root(lub użytkownik z wystarczającymi uprawnieniami do odczytu plików składników, uruchamiania poleceń diagnostycznych i uzyskiwania dostępu/proc,/sysi tak dalej). - Standardowe media:
tar,gzip,stat,find,awk,sed,getopt(1)(wzmocniony),nice. - Opcjonalnie:
zip(dla--zip),xz(dla--xz),gdb/gcore(dla--generate-cores)
Współbieżności
Tylko jedno wystąpienie get_info.sh może działać jednocześnie. Narzędzie sprawdza istniejącą uruchomioną instancję za pomocą polecenia: pidof(1) i kończy działanie, jeśli instancja zostanie znaleziona.
Obsługa sygnałów
Pułapki użytkowe INT, EXITi TERM sygnały podczas gromadzenia danych. Po odebraniu sygnału:
- Przywraca wszystkie pliki konfiguracyjne, dla których utworzono kopię zapasową (na przykład ustawienia generacji rdzenia).
- Czyści katalogi tymczasowe
- Wyjścia ze stanem 1
Dziennik wykonywania jest zachowywany, a jego ścieżka jest wypisywana jako błąd standardowy.
Przykłady
Odbierz standardowy pakiet pomocy technicznej:
get_info.sh
Przesyłanie strumieniowe pakietu za pośrednictwem połączenia SSH bez tworzenia pliku pakietu na zdalnym hoście PowerFlex:
ssh <host> 'get_info.sh --output-file=-' > getInfoDump-<host>.tgz
Użyj innego katalogu służbowego, aby uniknąć zapełnienia /tmp:
get_info.sh --work-dir=/var/tmp
Uwzględnij ścieżki niestandardowe w pakiecie:
get_info.sh --collect-path=/opt/custom/app/logs --collect-path='/var/log/app*'
Zbierz najnowszy zrzut rdzenia tylko dla komponentów SDS i MDM:
get_info.sh --collect-cores='mdm sds' --max-cores=1
Zbieraj dane skoncentrowane wokół czasu modyfikacji pliku rdzenia, z niestandardowym przedziałem czasu:
get_info.sh --reference-core-file=/opt/emc/scaleio/sds/bin/core.1000 \
--minutes-before-event=10 \
--minutes-after-event=2