PowerFlex: GET_INFO - Утиліта для збірки пакетів підтримки
Résumé: get_info.sh — збирати діагностичну інформацію з хоста PowerFlex і об'єднувати її у підтримуючий пакет.
Instructions
get_info.sh [ОПЦІЇ]
ОПИС
get_info.sh — це діагностична утиліта, яка збирає інформацію про налагодження з хоста PowerFlex (раніше ScaleIO) і архівує її у стиснений пакет для аналізу допоміжним персоналом.
Компанія збирає дані з кількох джерел, зокрема:
- Журнали компонентів PowerFlex, файли конфігурації та трасування
- Виходи запитів MDM/SCLI та внутрішній дамп налагодження
- Внутрішня діагностика компонентів PowerFlex
- Конфігурація операційної системи, журнали та стан виконання
- Апаратний інвентар (контролери зберігання, мережеві пристрої, NVMe, NVDIMM тощо).
- Core dumps (існуючі та за бажанням генеруються на вимогу)
- Збирач діагностичних даних (
diag_coll) статистика
Отриманий пакет — це один стиснений архів (tar/gz за замовчуванням), який можна перенести до підтримки PowerFlex для подальшого аналізу.
Лише один випадок get_info.sh може працювати на хості в певний момент. Якщо вільного місця для його виводу недостатньо, він відмовляється працювати (якщо тільки перевірка пробілу явно не пропущена).
ВАРІАНТИ
Загальні опції
-
-a, --allЗберіть усі дані. Це еквівалентно вказівці
--mdm-repository,--collect-cores,--max-cores=2,--valgrind-cores, та--analyse-diag-coll. -
-A, --analyse-diag-collАналіз збирача діагностичних даних (
diag coll) дані -
-b[COMPONENTS], --collect-cores[=COMPONENTS]Збирати існуючі дампи ядра для списку просторово розділених користувачів
COMPONENTS. За замовчуванням (колиCOMPONENTSопущено): Усі компоненти користувацької землі
-b та КОМПОНЕНТИ. Для довгої форми розділяйте з =
Приклад
-b'mdm sds'
--collect-cores='mdm sds'
-
-d OUT_DIR, --output-dir=OUT_DIRЗберігати отриманий пучок у каталогу
OUT_DIR. Default: <WORK_DIR>/scaleio-getinfo(див.--work-dir). -
-f, --skip-mdm-loginПропустіть запит для входу в PowerFlex MDM. Корисно, коли користувач уже увійшов у систему вручну.
-
-h, --helpПокажіть повідомлення про допомогу і вийдіть з цього приводу. У поєднанні з
--tech, також опції техніка дисплея. -
-J, --xzВикористання
tar/xzформат для зібраного набору замість стандартногоtar/gz.Ігнорується, якщо системаtar(1)не підтримує--use-compress-programабоxz(1)не знайдено. -
-k NUM, --max-cores=NUMЗбирати до
NUMCore файли кожного компонента. За замовчуванням: Усі основні файли, означає--collect-cores -
-l, --lightЗгенеруйте легкий пучок. Збирається лише останнє покоління нумерованих файлів журналів, а компонентні виконувані файли або бібліотеки не включаються при зборі ядер. Використання цієї опції знижує підтримку і не рекомендується.
-
-m NUM, --max-traces=NUMЗбирати до
NUMФайли трасування PowerFlex з кожного компонента. За замовчуванням: Всі файли -
-N, --skip-space-checkПропустіть безкоштовну перевірку місця на диску перед збором даних.
-
-P PATH, --collect-path=PATHЗберіть додатковий шлях
PATH.Приймаються лише абсолютні шляхи. Приймає джокери; Потрібно цитувати дикі карти. Цю опцію можна вказати кілька разів для збору кількох шляхів. -
-q, --quiet, --silentПриглушуйте повідомлення на стандартному виході.
-
-r, --mdm-repositoryЗбирайте файли репозиторію MDM.
-
-s, --skip-sdbgПропустити колекцію результатів SDBG (діагностичного налагоджувача).
-
-S, --pause-core-generationПризупиніть генерацію ядра компонентів PowerFlex під час збору даних. Оригінальна конфігурація відновлюється після завершення збору.
-
-w WORK_DIR, --work-dir=WORK_DIRВикористовуйте каталог
WORK_DIRдля тимчасових файлів. За замовчуванням:/tmp. -
-x FILE, --output-file=FILEЗберігати зібраний пакет у вигляді файлу з назвою
FILE. Відповідний суфікс імені файлу (.tgz,.zip, і так далі) додається автоматично. ЯкщоFILEє-(тире), записати пучок у стандартний вихід (імп.--quiet). Коли пучок записується на стандартний вихід, на диску не створюється файл пучків. За замовчуванням:getInfoDump. -
-z, --zipВикористання
zipформат для зібраного набору замість стандартногоtar/gz. Ігнорується, якщоzip(1)не знаходиться в системі. -
--mdm-port=PORTПідключіться до MDM через порт
PORTдля команд SCLI. За замовчуванням:scli default behavior. -
--overwrite-output-fileПерезапишіть вихідний файл, якщо він уже існує. Коли вихідний файл або каталог явно вказані (за допомогою
-xабо-d), за замовчуванням відмовляється перезаписувати; Ця опція це переважає. -
--techВключіть опції техніка у вихідному повідомленні допомоги.
Опції входу в MDM
Наступні опції передаються SCLI --login Командування. Їхня поведінка та стандартні цінності регулюються SCLI.
-
-n, --use-nonsecure-communicationПідключайтеся до MDM у незахищеному режимі.
-
-p PASSWORD, --password=PASSWORDВикористання
PASSWORDдля входу в PowerFlex MDM. За замовчуванням: Поведінка SCLI за замовчуванням -
-u USERNAME, --username=USERNAMEВикористання
USERNAMEдля входу в PowerFlex MDM. За замовчуванням: Поведінка SCLI за замовчуванням -
--ldap-authenticationУвійдіть у PowerFlex MDM за допомогою автентифікації на основі LDAP.
-
--management-system-ip=ADDRESSПідключитися до
SSO/M&OуADDRESSдля входу в PowerFlex. За замовчуванням: Поведінка SCLI за замовчуванням -
--p12-password=PASSWORDЗашифруйте вхід у PowerFlex
PKCS#12Використання файлуPASSWORD. За замовчуванням: Поведінка SCLI за замовчуванням -
--p12-path=FILEЗберегти логін PowerFlex
PKCS#12Файл якFILE. За замовчуванням: Поведінка SCLI за замовчуванням
Варіанти техніків
Наступні опції призначені для використання техніками підтримки і відображаються у повідомленні допомоги лише тоді, коли --tech зазначено.
-c[COMPONENTS], --generate-cores[=COMPONENTS]
Генерація основних файлів (за допомогою gcore(1)) для виконання процесів у просторово розділеному списку user-land COMPONENTS. За замовчуванням: усі компоненти землі користувача, імплітує --collect-executables, і вимагає gdb та gcore.
-c та COMPONENTS. Для довгої форми розділяйте з =.
Приклади:
-c'mdm sds'
--generate-cores='mdm sds'
-
-C CORE_FILE, --reference-core-file=CORE_FILEЗберіть журнали продукту та ядра відносно останнього часу модифікації (
mtime)CORE_FILE, замість часу початку виконання. Імплітує--collect-cores -
-E REF_TIME, --event-time=REF_TIMEЗбирати продуктові журнали та керни відносно
REF_TIME, замість часу початку виконання. Приймає будь-який формат, який розумієdate(1). Імплітує--collect-cores. -g[COMPONENTS], --valgrind-cores[=COMPONENTS]
Збирати valgrind Core dumps для вказаної user-land COMPONENTS. За замовчуванням: усі компоненти з користувацької зони. Імплітує --collect-executables.
-b та COMPONENTS. Для довгої форми розділяйте з =
Приклади:
-g'mdm sds'
--valgrind-cores='mdm sds'
-
-t MIN, --minutes-before-event=MINЗбирайте журнали продукту та згенеровані ядра до
MINза кілька хвилин до референтного часу. За замовчуванням: 15 -
-T MIN, --minutes-after-event=MINЗбирайте журнали продукту та згенеровані ядра до
MINЗа кілька хвилин після референсного часу. За замовчуванням: 5 -
-X[COMPONENTS], --collect-executables[=COMPONENTS]Збирати виконувані файли компонентів та їхні спільні бібліотеки для вказаної користувацької сфери
COMPONENTS. За замовчуванням: Усі компоненти користувацької землі
-b та COMPONENTS. Для довгої форми розділяйте з =
Приклади:
-X'mdm sds'
--collect-executables='mdm sds'
-
--keep-work-dirЗберігайте згенерований тимчасовий робочий каталог після створення bundle (автоматично очищається).
СТРУКТУРА ПУЧКА
Вихідний пучок — це один стиснений архів.
- Каталог найвищого рівня bundle — це ім'я хоста зібраної системи.
- Загальні командні виходи хоста йдуть у
server/підкаталог.
Назва файлу:<command>+<arguments>+ суфікс (.txtза замовчуванням). Пробіли, замінені на_, неалфавітно-цифрові символи видалені
Приклад:server/ip_-s_addr.txt – output of ip -s addr - Виходи команд продукту потрапляють у підкаталог компонента.
mdm/дляscli,sdc/дляdrv_cfg, і так далі.
Ім'я команди (scli,drv_cfg, і так далі) — це позбавлено. Першим значущим аргументом є ім'я файлу. Файли призначаються відповідним суфіксом,.txtза замовчуванням.
Приклади:
-
mdm/query_cluster.txt- вихідscli --query_clustermdm/tgt_dump.txt- вихідscli --debug_action --tgt_dumpsdc/query_mdms.txt- вихідdrv_cfg --query_mdmssds/sdbg.txt- вихід SDBGdumpallscreensдля SDS
- Файли компонентів продукту (на відміну від командних виходів),
<component>/cfg,<component>/logs, і так
далі Скопійовано з каталогу компонента з видаленим префіксом.
Приклади:
-
mdm/cfg/conf.txt- копія/opt/emc/scaleio/mdm/cfg/conf.txtsds/logs/trc.0- копія/opt/emc/scaleio/sds/logs/trc.0
- Файли файлової системи хоста розміщуються на шляху до файлової системи відносно кореня пучки.
Приклади:
-
etc/os-release- копія/etc/os-releasevar/log/messages- копія/var/log/messagesproc/cpuinfo- копія/proc/cpuinfo
- Файли діагностичного збирача (diag_coll) копіюються за допомогою
/optПрефікс знятий, зберігаючи внутрішню структуру.
Приклад:diag_coll/logs/sar.0- копія/opt/diag_coll/logs/sar.0 - Приховані файли (з префіксом крапки) «розкриваються» шляхом видалення провідної крапки.
- Журнал виконання утиліти,
get_info_run.log, розміщений <безпосередньо під ім'ям> host/root
Структура дерева каталогу пучків:
<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)
ФІЛЬТРАЦІЯ ЖУРНАЛУ ПРОДУКТУ ТА ОСНОВНИХ ФАЙЛІВ
Опції, описані в цьому розділі, контролюють, як файли журналу продукту (також називаються trace-файлами, наприклад) trc.0, trc.1, exp.0) та файли ядра dump обираються для включення до зібраного набору. Вони роблять це, визначаючи орієнтирний час, часове вікно навколо нього та ліміти підрахунку.
Коли опції фільтрації не вказані, збираються всі файли журналу продукту та (якщо активовано ядро колекції) всі файли дампу ядра. Опції фільтрації поступово звужують цей вибір, як описано нижче.
Час довідки
Час посилання можна встановити за допомогою будь-якого -E/--event-time або -C/--reference-core-file.
Якщо ні інше --event-time ані --reference-core-file Задано, фільтрація часового вікна не виконується: референсний час за замовчуванням відображається на поточному часу і використовується лише для впорядкування на основі близькості, коли межа підрахунку (-m або -k) діє (див. Ліміти підрахунку нижче).
Якщо обидва -E та -C з'являється, набирає чинності останній елемент у командному рядку.
Часове вікно
Коли встановлено еталонний час (використовуючи --event-time або --reference-core-file), навколо нього встановлено часове вікно. Діапазон часового вікна можна встановити за допомогою -t/--minutes-before-event та або -T/--minutes-after-event, які за замовчуванням тривають 15 і 5 хвилин відповідно. Лише файли, вміст яких перекривається з цим вікном, можуть бути збірними.
Наприклад, -E "2020-03-20 14:30" -t 10 -T 3 збирає файли періоду з 14:20:00 до 14:33:00.
--minutes-before-event та --minutes-after-event ігноруються, коли жоден з них --event-time ані --reference-core-file зазначено.
Ліміти підрахунку
Обмеження на кількість файлів можна встановити за допомогою -m/--max-traces та -k/--max-cores, для лог-файлів і основних файлів відповідно. Межа вимірюється на кожен компонент.
Коли в часовий вікно (або доступні, якщо жодне вікно не активне), збираються файли NUM, найближчі до референсного часу.
Коли ліміт підрахунку використовується без --event-time або --reference-core-file, усі файли є кандидатами (без часового вікна), і вибрані найновіші файли NUM.
Логіка фільтрації
Фільтрація файлів спочатку застосовується до часового вікна, а потім до обмеження кількості:
- Визначте кандидатів. Усі файли журналів продукту та/або файли дампу ядра для компонента перераховуються.
- Вивести контент крапка. Вміст файлів журналу продукту відображає період. Вважається, що період змісту починається з останнього часу модифікації попередника (
mtime), або епоху UNIX, коли не існує попередника; він закінчується на самому файліmtime. Файли дампу ядра представляють певний момент часу, у файліmtime. - Застосувати часове вікно (якщо
-Eабо-Cуточнено). Файли, вміст яких повністю виходить за межі вікна, відкидаються з вибору. Для файлів журналу продукту, якщо жоден файл не потрапляє у вікно, зберігається єдиний файл, найближчий до вікна, щоб пакет ніколи не був порожнім для компонента. Для файлів дампу ядра такий запасний варіант не застосовується. - Застосувати ліміт підрахунку (якщо
-mта або-kуточнено). Серед решти справ, максимумNUMвідбираються, віддаючи перевагу тим, що найближче до еталонного часу. Файли до і після референтного часу змагаються порівну за відбір.
АВТЕНТИФІКАЦІЯ
Утиліта намагається увійти до локального MDM, якщо виявлено первинний MDM-процес, що прослуховує на очікуваному порту (за замовчуванням: 6611)
Опції входу в MDM передаються SCLI --login і обробляються нею.
Якщо вхід не вдається, утиліта завершується через помилку.
Коли вхід пропускається, команди SCLI все одно виконуються (щоб підтримати ситуації, коли користувач увійшов вручну заздалегідь). Після трьох відмов SCLI з'являється попередження, і всі подальші команди SCLI пропускаються.
Вход пропускається, коли:
- На локальному хості немає первинного MDM-процесу.
- The
--skip-mdm-loginВказано опцію.
Вхід не вдається, коли:
- Власник процесу MDM не входить до списку авторизованих користувачів (за замовчуванням:
root) і захищений вхід увімкнено. - The SCLI
--loginкоманда повертає помилку (наприклад, неправильні облікові дані).
ДИСКОВИЙ ПРОСТІР
Вимоги до місця на диску для тимчасових файлів і отриманого пакету можуть суттєво відрізнятися.
Компанія намагається мінімізувати тимчасове використання простору; Він обмежений командними виходами та копіями зібраної віртуальної файлової системи (/proc та /sys) справ.
Пакет можна транслювати з віддаленого хоста за допомогою --output-file=- щоб мінімізувати використання дискового простору на PowerFlex-хості. Файл bundle записується безпосередньо на стандартний вивід (stdout) під час стрімінгу; Він не створюється на диску.
Утиліта оцінює необхідний дисковий простір як для тимчасового робочого каталогу, так і для вихідного пакета перед збором даних.
Якщо оцінений необхідний простір перевищує доступний простір у відповідних файлових системах, утиліта завершує роботу з помилкою. Цю перевірку можна обійти за допомогою --skip-space-check.
Робочий каталог і вихідний каталог можуть розміщуватися в різних файлових системах; кожен перевіряється незалежно.
Орієнтовні вимоги до простору записуються у лог-файл утиліти, get_info_run.log.
СТАТУС ВИЇЗДУ
| 0 | Успішне завершення |
| 1 | Помилка (некоректні аргументи, недостатньо місця, помилка входу, інша інстанція вже запущена, помилка генерації бандла, сигнал зафіксований тощо) |
ФАЙЛИ
<WORK_DIR>/get_info_run.log |
Журнал виконання (також у наборі) |
<WORK_DIR>/scaleio-getinfo-tmp/ |
Тимчасовий робочий довідник (очищено після успіху) |
/tmp/scaleio-getinfo/getInfoDump.tgz |
Розташування вихідного пучка за замовчуванням |
<WORK_DIR>/scaleio-getinfo-extra/
/tmp/scaleio-getinfo-extra/ |
Додаткові каталоги діагностичних даних |
/tmp/scaleio-getinfo-backup/ |
Тимчасові резервні копії змінених конфігураційних файлів (автоматично створені) |
/opt/emc/scaleio/ |
Каталог встановлення PowerFlex |
НАВКОЛИШНЄ СЕРЕДОВИЩЕ
Передумови
- Утиліта має працювати як
root(або користувач із достатніми правами для читання компонентних файлів, виконання діагностичних команд і доступу/proc,/sys, і так далі). - Стандартні утиліти:
tar,gzip,stat,find,awk,sed,getopt(1)(покращено),nice. - Опціонально:
zip(для--zip),xz(для--xz),gdb/gcore(для--generate-cores)
Паралельність
Лише один випадок get_info.sh Може діяти окремо. Утиліта перевіряє наявність існуючого запущеного екземпляра за допомогою pidof(1) і завершується, якщо знайдено екземпляр.
Обробка сигналів
Пастки утилітарних пристроїв INT, EXIT, та TERM сигналів під час збору даних. Після отримання сигналу він:
- Відновлює всі резервні файли конфігурації (наприклад, налаштування генерації ядра).
- Очищення тимчасових каталогів
- З'їзди зі статусом 1
Журнал виконання зберігається, а його шлях друкується зі стандартною помилкою.
Приклади
Зберіть стандартний пакет підтримки:
get_info.sh
Стріміть пакет через SSH-з'єднання, не створюючи файл bundle на віддаленому хості PowerFlex:
ssh <host> 'get_info.sh --output-file=-' > getInfoDump-<host>.tgz
Використовуйте інший робочий довідник, щоб уникнути заповнення /tmp:
get_info.sh --work-dir=/var/tmp
Додайте власні шляхи до набору:
get_info.sh --collect-path=/opt/custom/app/logs --collect-path='/var/log/app*'
Збирайте останній дамп ядра лише для компонентів SDS і MDM:
get_info.sh --collect-cores='mdm sds' --max-cores=1
Збирайте дані, орієнтовані на час зміни основного файлу, з власним часовим вікном:
get_info.sh --reference-core-file=/opt/emc/scaleio/sds/bin/core.1000 \
--minutes-before-event=10 \
--minutes-after-event=2