PowerFlex. GET_INFO — утилита для сбора пакетов поддержки
Summary: get_info.sh — сбор диагностической информации с хоста PowerFlex и ее упаковка в пакет поддержки.
Instructions
get_info.sh [ВАРИАНТЫ]
ОПИСАНИЕ
get_info.sh — это утилита диагностики, которая собирает отладочную информацию с хоста PowerFlex (ранее ScaleIO) и архивирует ее в сжатый пакет для анализа персоналом службы поддержки.
Утилита собирает данные из нескольких источников, в том числе:
- Журналы компонентов PowerFlex, файлы конфигурации и трассировки
- Выходные данные запросов MDM/SCLI и внутренний дамп отладки
- Внутренняя диагностика компонентов PowerFlex
- Конфигурация операционной системы, журналы и состояние во время выполнения
- Учет оборудования (контроллеры хранилища, сетевые устройства, NVMe, NVDIMM и т. д.)
- Дампы ядра (существующие и дополнительно создаваемые по требованию)
- Сборщик диагностических данных (
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 из каждого компонента. Default: Все файлы ядра подразумевают--collect-cores -
-l, --lightСгенерируйте светлый пучок. Собирается только нумерованные файлы журналов последнего поколения, а исполняемые файлы компонентов или библиотеки не включаются при сборе ядер. Использование этого параметра снижает доступность поддержки, и его использование не рекомендуется.
-
-m NUM, --max-traces=NUMСоберите до
NUMPowerFlex отслеживает файлы для каждого компонента. Default: Все файлы -
-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для временных файлов. Default:/tmp. -
-x FILE, --output-file=FILEСохраните собранный пакет в виде файла с именем
FILE. Соответствующий суффикс имени файла (.tgz,.zipи т.д.) добавляется автоматически. ЕслиFILEявляется-(тире), записать связку в стандартный вывод (подразумевает--quiet). При записи пакета в стандартный вывод файл пакета на диске не создается. Default:getInfoDump. -
-z, --zipИспользуйте
zipформат для собранного пакета вместо формата по умолчаниюtar/gz. Игнорируется, еслиzip(1)не найден в системе. -
--mdm-port=PORTПодключитесь к MDM с помощью порта.
PORTдля команд SCLI. Default: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. Default: Поведение SCLI по умолчанию -
-u USERNAME, --username=USERNAMEИспользуйте
USERNAMEдля входа в PowerFlex MDM. Default: Поведение SCLI по умолчанию -
--ldap-authenticationВойдите в PowerFlex MDM, используя аутентификацию на основе LDAP.
-
--management-system-ip=ADDRESSПодключиться к
SSO/M&OatADDRESSдля входа в систему PowerFlex. Default: Поведение SCLI по умолчанию -
--p12-password=PASSWORDШифрование учетных данных PowerFlex
PKCS#12Использование файлаPASSWORD. Default: Поведение SCLI по умолчанию -
--p12-path=FILEСохранение учетных данных PowerFlex
PKCS#12File asFILE. Default: Поведение SCLI по умолчанию
Варианты для технических специалистов
Следующие параметры предназначены для использования специалистами службы поддержки и отображаются в справочном сообщении только в следующих случаях: --tech указано.
-c[COMPONENTS], --generate-cores[=COMPONENTS]
Создайте файлы ядра (с помощью gcore(1)) для запущенных процессов списка разделенных пробелами пользовательских ресурсов 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 дампы ядра для указанной пользовательской среды COMPONENTS. По умолчанию: все компоненты пользовательской среды. Подразумевает --collect-executables.
-b и COMPONENTS. Для длинной формы разделите с помощью =
Примеры:
-g'mdm sds'
--valgrind-cores='mdm sds'
-
-t MIN, --minutes-before-event=MINСбор журналов продуктов и ядер, сгенерированных до
MINминут до контрольного времени. Default: 15 -
-T MIN, --minutes-after-event=MINСбор журналов продуктов и ядер, сгенерированных до
MINминут после эталонного времени. Default: 5 -
-X[COMPONENTS], --collect-executables[=COMPONENTS]Сбор исполняемых файлов компонентов и их общих библиотек для указанной пользовательской среды
COMPONENTS. Default: Все пользовательские компоненты
-b и COMPONENTS. Для длинной формы разделите с помощью =
Примеры:
-X'mdm sds'
--collect-executables='mdm sds'
-
--keep-work-dirСохранение созданного временного рабочего каталога после создания пакета (очищается автоматически).
СТРУКТУРА ПАКЕТА
Выходной пакет представляет собой один сжатый архив.
- Каталог верхнего уровня пакета — это имя хоста собранной системы.
- Общие выходные данные команд хоста поступают в
server/Подкаталог.
Имя файла:<command>+<arguments>+ суффикс (.txtпо умолчанию). Пробелы заменены на_, небуквенно-цифровые символы удалены
Пример:server/ip_-s_addr.txt – output of ip -s addr - Выходные данные команды product поступают в подкаталог компонента.
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, размещается непосредственно под именем <>хоста/корня
Древовидная структура каталогов пакета:
<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)
ФИЛЬТРАЦИЯ ЖУРНАЛОВ ПРОДУКТОВ И ФАЙЛОВ ЯДРА
Параметры, описанные в этом разделе, управляют тем, как файлы журналов продуктов (также называемые файлами трассировки, например) trc.0, trc.1, exp.0) и файлы дампа ядра выбираются для включения в собранный пакет. Они делают это, определяя эталонное время, временной промежуток вокруг него и пределы подсчета.
Если параметры фильтрации не указаны, собираются все файлы журналов продуктов и (если включен сбор ядра) все файлы дампа ядра. Параметры фильтрации постепенно сужают выборку, как описано ниже.
Справочное время
Эталонное время можно задать одним из следующих способов -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 (или доступно, если ни одно окно не активно), собираются файлы NUM, ближайшие к базовому времени.
Если предел количества используется без --event-time или --reference-core-file, все файлы являются кандидатами (без временного окна), и выбирается количество последних файлов.
Логика фильтрации
Фильтрация файлов применяется сначала к временному окну, а затем к предельному количеству:
- Определите кандидатов. Перечисляются все файлы журналов продукта и/или файлы дампа ядра для компонента.
- Вывод содержимого периода. Содержимое файлов журналов продукта представляет собой определенный период. Период содержания считается начинающимся с момента последнего изменения предшественника (
mtime) или эпоха UNIX, когда не существует предшественника; он заканчивается на собственном файлеmtime. Файлы дампа ядра представляют момент времениmtime. - Примените временное окно (если
-Eили-Cуказано). Файлы, содержимое которых полностью выходит за пределы окна, исключаются из выбора. Для файлов журналов продукта, если ни один файл не попадает в окно, сохраняется один файл, ближайший к окну, чтобы пакет никогда не был пустым для компонента. Для файлов дампа ядра такой резервный вариант не применяется. - Примените ограничение на количество (если
-mи или-kуказано). Среди оставшихся файлов не болееNUMвыбираются, отдавая предпочтение тем, которые ближе всего к эталонному времени. Файлы до и после контрольного времени в равной степени конкурируют за выбор.
ПРОВЕРКИ ПОДЛИННОСТИ
Утилита пытается войти в локальный MDM, если обнаружен основной процесс MDM, прослушивающий ожидаемый порт (по умолчанию: 6611)
Параметры входа MDM передаются в SCLI --login и обрабатываются ею.
Если вход не удается, работа утилиты завершается с ошибкой.
Если вход пропущен, попытки выполнения команд SCLI продолжаются (для поддержки сценариев, в которых пользователь предварительно выполнил вход вручную). После трех сбоев SCLI отображается предупреждение и все дальнейшие команды SCLI пропускаются.
Вход в систему пропускается, если:
- На локальном хосте не найден основной процесс MDM.
- Переменная
--skip-mdm-loginпараметра.
Ошибка входа в систему, если:
- Владелец процесса MDM не входит в список авторизованных пользователей (по умолчанию:
root) и включен безопасный вход. - Система SCLI
--loginвозвращает ошибку (например, неверные учетные данные).
ДИСКЕ
Требования к дисковому пространству для временных файлов и результирующего пакета могут значительно отличаться.
Утилита пытается свести к минимуму временное использование пространства; Он ограничен выводами команд и копиями собранной виртуальной файловой системы (/proc и /sys) файлов.
Пакет может быть передан в потоковом режиме с удаленного хоста с помощью --output-file=- , чтобы минимизировать использование дискового пространства на хосте PowerFlex. Файл пакета записывается непосредственно в стандартный вывод (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-соединению без создания файла пакета на удаленном хосте 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