PowerFlex. PFMP_SUPPORT — утилита для сбора пакетов поддержки
Résumé: pfmp_support. Сбор диагностических данных PowerFlex Manager и их упаковка в пакет поддержки
Instructions
pfmp_support[ПАРАМЕТРЫ]
ОПИСАНИЕ
pfmp_support — это утилита диагностики, которая собирает отладочную информацию с хоста PowerFlex Manager или установщика PowerFlex Manager и архивирует ее в сжатый пакет для анализа персоналом службы поддержки.
Утилита собирает данные из нескольких источников, в том числе:
- Диагностические данные, конфигурация и журналы Kubernetes
- Информация о выпуске Helm
- Данные Docker и среды выполнения контейнеров
- Журналы установщика PowerFlex Manager
- Конфигурация операционной системы, журналы и состояние во время выполнения
- Инвентаризация оборудования
При сборе данных с нескольких узлов кластера Kubernetes стандартный пакет (--skip-kubernetes-shared не указан) должен быть собран хотя бы с одного узла, где kubectl и helm доступны и с доступом к плоскости управления Kubernetes. На последующих узлах --skip-kubernetes-shared может использоваться для уменьшения размера собираемых данных.
Результирующий пакет представляет собой единый сжатый архив (по умолчанию tar/gz), который можно передать в службу поддержки PowerFlex для дальнейшего анализа.
В любой момент времени на хосте может работать только один экземпляр pfmp_support. Если для вывода недостаточно свободного места, он откажется выполняться (если проверка пространства не пропущена явным образом).
ПАРАМЕТРЫ
Общие параметры
-
-A DIR ,--installer-root-path=DIR
Используйте DIR в качестве базового каталога установщика PowerFlex Manager. Полезно при сборе данных установщика PowerFlex и контейнера установщика (
atlantic_installer) не выполняется. По умолчанию: «Автоматически обнаружено» или «По умолчанию»/var. -
-d OUT_DIR, --output-dir=OUT_DIR
Сохраните полученный пакет в каталоге OUT_DIR. Default:
<WORK_DIR>/powerflex-pfmpsupport(см. --work-dir). -
-h, --help
Отобразите справочное сообщение и выйдите из меню. В сочетании с --tech также отображает параметры технического специалиста.
-
-J, --xz
Используйте формат tar/xz для собранного пакета вместо формата tar/gz по умолчанию. Игнорируется, если
tar(1)не поддерживает--use-compress-programилиxz(1)не найдено. -
-n NAMESPACE,--namespace=NAMESPACE
Соберите дополнительные данные из пространства имен Kubernetes конкретного приложения NAMESPACE. Default:
powerflex. -
-N, --skip-space-check
Пропуск проверки свободного места на диске перед сбором данных.
-
- P ПУТЬ,--collect-path=ПУТЬ
Соберите дополнительный путь PATH. Принимаются только абсолютные пути. Принимает подстановочные знаки; Подстановочные знаки должны быть заключены в кавычки. Этот параметр можно указать несколько раз для сбора данных нескольких путей.
-
-q, --quiet, --silent
Подавлять сообщения при стандартном выводе.
-
-s, --skip-kubernetes-shared
Пропуск сбора общих данных Kubernetes (на уровне кластера). Данные Kubernetes для каждого узла и данные хостов по-прежнему собираются. Полезно для многоузловых коллекций для уменьшения размера; Данные кластера должны быть собраны по крайней мере на одном узле.
-
-w WORK_DIR, --work-dir=WORK_DIR
Используйте WORK_DIR каталогов для временных файлов. Default:
/tmp. -
-x ФАЙЛ,--output-file=ФАЙЛ
Сохраните собранный пакет в виде файла с именем FILE. Соответствующий суффикс имени файла (
.tgz,.zipи т.д.) добавляется автоматически. Если FILE имеет значение-(тире), записать пакет в стандартный вывод (подразумевает --quiet). При записи пакета в стандартный вывод файл пакета на диске не создается. Default:pfmpSupport. -
-z, --zip
Используйте формат zip для собранного пакета вместо формата tar/gz по умолчанию. Игнорируется, если
zip(1)не найден в системе. -
--overwrite-output-file
Перезапишите выходной файл, если он уже существует. Когда выходной файл или каталог указан явно (через -x или -d), поведение по умолчанию заключается в отказе от перезаписи; Этот параметр переопределяет это.
-
--Технологий
Включить параметры технического специалиста в выходные данные справочного сообщения.
Варианты для технических специалистов
Следующие параметры предназначены для использования техническими специалистами службы поддержки и отображаются в сообщении справки только при указании параметра --tech.
-
--keep-work-dir
Сохранение созданного временного рабочего каталога после создания пакета (обычно очищается автоматически).
-
--old-pod-logs
Соберите старые журналы pod Kubernetes из локального хранилища rsyslog. Если он опущен, текущий атрибут (
kubectl logs) и предыдущая (kubectl logs --previous) по-прежнему собираются журналы контейнера.
СТРУКТУРА ПАКЕТА
Выходной пакет представляет собой один сжатый архив.
- Каталог верхнего уровня пакета — это имя хоста собранной системы.
- Общие выходные данные команд хоста поступают в
server/Подкаталог. Имя файла:<command>+<arguments>+ суффикс (.txtпо умолчанию). Пробелы заменены на_, небуквенно-цифровые символы удалены.
Примере:server/ip_-s_addr.txt - output of ip -s addr - Выходные данные команд kubectl, helm и docker поступают в соответствующие подкаталоги. Далее они упорядочены по сферам применения,
<namespace>/<pod>/<container>, где это применимо.
Аргументы, связанные с именем, областью действия и форматом вывода, удаляются. Имя файла:<subcommand>+<arguments>+ суффикс (.txtпо умолчанию). Пробелы заменены на_, небуквенно-цифровые символы удалены.
Выходные данные команды kubectl exec хранятся в каталогеexec/подкаталога пода.
Примеры:kubectl/version.txt- выходkubectl versionkubectl/all-namespaces/get_pods.yaml-- выходные данныеkubectl -o=yaml get --all-namespaces podskubectl/powerflex/asmui-7d6944dcb8-zqqtk/asmui/logs_--previous.txt- выходkubectl logs -n powerflex --container asmui --previous asmui-7d6944dcb8-zqqtkkubectl/powerflex/nats-server-box-6d685b4b7d-cf278/nats-box/exec/nats_stream_report.txt- выходkubectl exec -n powerflex --container nats-box nats-server-box-6d685b4b7d-cf278 -- nats stream reporthelm/powerflex/get_all_asmmanager.txt- выходhelm get -n powerflex all asmmanagerdocker/ps_-a.txt- выходdocker ps -a
- Файлы, извлеченные из контейнеров pod, помещаются в каталог контейнера по пути в файловой системе контейнера.
Примере:kubectl/powerflex/thin-deployer-5657659bc7-gzbq4/thin-deployer/opt/Dell/ASM/deployments/8aaa809298a9efe10198aa58c8874f35/deployment.log- копия/opt/Dell/ASM/deployments/8aaa809298a9efe10198aa58c8874f35/deployment.logизвлекается из недрthin-deployerконтейнерthin-deployer-5657659bc7-gzbq4Pod - Файлы файловой системы хоста размещаются по пути к файловой системе относительно корня пакета.
Примеры:etc/os-release - copy of /etc/os-releasevar/log/messages - copy of /var/log/messagesproc/cpuinfo - copy of /proc/cpuinfovar/lib/rancher/rke2/agent/logs/kubelet.log - copy of /var/lib/rancher/rke2/agent/logs/kubelet.log
- Скрытые файлы (с префиксом точки) «разгадываются» путем удаления начальной точки.
- Журнал выполнения утилиты,
pfmp_support.log, размещается непосредственно под именем <>хоста/root.
Древовидная структура каталогов пакета:
<hostname>/
|-- pfmp_support.log Utility execution log
|-- server/ General command output directory
| |-- ip_-s_addr.txt
| |-- uptime.txt
| |-- uname_-a.txt
| |-- ps_-elF.txt
| |-- dmesg_-T.txt
| +-- ... (one file per collected command)
|
|-- kubectl/ kubectl command output directory
| |-- version.txt Non-namespace-specific commands
| |-- ...
| |-- all-namespaces/ Cross-namespace commands
| | |-- get_pods.txt
| | |-- get_pods.yaml
| | +-- ...
| +-- <namespace>/ Per-namespace Kubernetes data
| +-- <pod>/ Per-pod data
| +-- <container>/ Per-container data
| |-- logs.txt Current container logs
| |-- exec/ Commands executed within container (if any)
| | +-- ...
| |-- <dir>/ Files extracted from container (if any)
| +-- ...
|-- helm/ helm command output directory
|-- docker/ docker command output directory
|
|-- etc/ Host files
| |-- os-release
| |-- sysconfig/
| |-- network/
| +-- ...
|-- var/
| |-- log/
| | |-- messages
| | +-- ...
| |-- lib/rancher/rke2/
| +-- ...
|-- proc/
| |-- cpuinfo
| |-- meminfo
| +-- ...
|-- sys/
|-- ...
|
|-- powerflex-pfmpsupport-extra/ Extra diagnostic data (if present)
+-- powerflex-pfmpsupport-backup/ Backed-up configuration files (if any)
ДИСКЕ
Требования к дисковому пространству для временных файлов и результирующего пакета могут значительно отличаться.
Утилита пытается свести к минимуму временное использование пространства; Он ограничен выводами команд и копиями собранной виртуальной файловой системы (/proc и /sys) файлов.
Чтобы минимизировать использование дискового пространства на хосте PowerFlex Manager, пакет можно передать в потоковом режиме с удаленного хоста с помощью команды --output-file=-. При потоковой передаче файл пакета записывается непосредственно в стандартный вывод (stdout); Он не создается на диске.
Перед сбором данных утилита оценивает необходимое дисковое пространство как для временного рабочего каталога, так и для выходного пакета.
Если расчетное требуемое пространство превышает доступный объем в соответствующих файловых системах, утилита завершает работу с ошибкой. Эту проверку можно пропустить с помощью --skip-space-check.
Рабочий каталог и выходной каталог могут находиться в разных файловых системах; Каждый из них проверяется независимо.
Расчетные требования к пространству записываются в файл журнала утилиты, pfmp_support.log.
СОСТОЯНИЕ ВЫХОДА
| 0 | Выполнено успешно |
| 1 | Ошибка (недопустимые аргументы, недостаточно места, другой экземпляр уже запущен, сбой генерации пакета, перехвачен сигнал и т. д.) |
ФАЙЛЫ
<WORK_DIR>/pfmp_support.log |
Журнал выполнения (также входит в комплект) |
<WORK_DIR>/powerflex-pfmpsupport-tmp/ |
Временный рабочий каталог (очищен при успешном выполнении) |
/tmp/powerflex-pfmpsupport/pfmpSupport.tgz |
Расположение выходного пакета по умолчанию |
<WORK_DIR>/powerflex-pfmpsupport-extra/
/tmp/powerflex-pfmpsupport-extra/ |
Дополнительные каталоги диагностических данных |
/tmp/powerflex-pfmpsupport-backup/ |
Временные резервные копии файлов измененной конфигурации (создаются автоматически) |
СРЕДА
Предварительные условия
- Утилита должна быть запущена от имени пользователя root (или пользователя с достаточными привилегиями для чтения системных файлов, выполнения команд диагностики, взаимодействия с кластером Kubernetes и доступа
/proc,/sysи т.д.). - Стандартные утилиты:
tar,gzip,stat,find,awk,sed,getopt(1)(улучшенный),nice. - Опционально.
zip(для--zip),xz(для--xz).
Параллелизма
Одновременно может работать только один экземпляр pfmp_support. Утилита проверяет наличие существующего запущенного экземпляра с помощью pidof(1) и прекращает работу, если таковая будет найдена.
Обработка сигналов
Вспомогательные ловушки INT, EXITи TERM сигналов при сборе данных. При получении сигнала он:
- Восстановление всех файлов конфигурации из резервной копии.
- Очищает временные каталоги.
- Выход со статусом 1.
Журнал выполнения сохраняется, а путь к нему выводится в стандартную ошибку.
ПРИМЕРЫ
Соберите стандартный пакет поддержки:
pfmp_support
Собирайте пакеты с нескольких узлов в кластере Kubernetes.
- На одном узле с
kubectlиhelmCollect, соберите все данные Kubernetes:pfmp_support - На последующих узлах пропустите общие данные Kubernetes:
pfmp_support --skip-kubernetes-shared
Потоковая передача пакета по SSH-соединению без создания файла пакета на удаленном хосте PowerFlex Manager:
ssh <host> 'pfmp_support --output-file=-' > pfmpSupport-<host>.tgz
Используйте другой рабочий каталог, чтобы избежать заполнения /tmp.
pfmp_support --work-dir=/var/tmp
Включение пользовательских путей в пакет:
pfmp_support --collect-path=/opt/custom/app/logs --collect-path='/var/log/app*'