PowerFlex: PFMP_SUPPORT - Utilidad de recopilación de paquetes de soporte
Résumé: pfmp_support: recopile datos de diagnóstico de PowerFlex Manager y empáquelos en un paquete de soporte
Instructions
pfmp_support[OPCIONES]
DESCRIPCIÓN
pfmp_support es una utilidad de diagnóstico que recopila información de depuración de un host del instalador de PowerFlex Manager o PowerFlex Manager y la archiva en un paquete comprimido para su análisis por parte del personal de soporte.
La utilidad recopila datos de varias fuentes, entre las que se incluyen:
- Datos de diagnóstico, configuración y registros de Kubernetes
- Información de la versión de Helm
- Datos de tiempo de ejecución de Docker y contenedor
- Registros del instalador de PowerFlex Manager
- Configuración del sistema operativo, registros y estado de tiempo de ejecución
- Inventario de hardware
Cuando se recolectan datos de varios nodos de clúster de Kubernetes, se debe recolectar un paquete estándar (no se especifica --skip-kubernetes-shared) de al menos un nodo, donde kubectl y helm están disponibles y con acceso al plano de control de Kubernetes. En los nodos subsiguientes --skip-kubernetes-shared se pueden utilizar para reducir el tamaño de los datos recopilados.
El paquete resultante es un único archivo comprimido (tar/gz de manera predeterminada) que se puede transferir al soporte de PowerFlex para un análisis más detallado.
Solo se puede ejecutar una instancia de pfmp_support en un host en un momento determinado. Si no hay suficiente espacio libre para su salida, se negará a ejecutarse (a menos que la comprobación de espacio se omita explícitamente).
OPCIONES
Opciones generales
-
-A DIR, --installer-root-path=DIR
Utilice DIR como el directorio base del instalador de PowerFlex Manager. Útil cuando se recopilan datos del instalador de PowerFlex y el contenedor del instalador (
atlantic_installer) no se está ejecutando. Valor predeterminado: se detecta automáticamente o/var. -
-dOUT_DIR, --dir-salida=OUT_DIR
Almacene el paquete resultante en el OUT_DIR de directorio. Predeterminado:
<WORK_DIR>/powerflex-pfmpsupport(consulte --work-dir). -
-h, --help
Muestre el mensaje de ayuda y salga. Cuando se combina con --tech, también muestra las opciones de técnico.
-
-J, --xz
Utilice el formato tar/xz para el paquete recopilado en lugar del formato tar/gz predeterminado. Se ignora si el atributo
tar(1)No es compatible--use-compress-programoxz(1)no se encuentra. -
-n ESPACIO de nombres,--namespace=ESPACIO DE NOMBRES
Recopile datos adicionales del espacio de nombres de Kubernetes específico de la aplicación NAMESPACE. Predeterminado:
powerflex. -
-N, --skip-space-check
Omita la verificación del espacio libre en disco antes de la recolección de datos.
-
-PRUTA,--ruta-recopilar=RUTA
Recopile la ruta adicional PATH. Solo se aceptan rutas absolutas. Acepta comodines; Los comodines deben estar entre comillas. Esta opción se puede especificar varias veces para recolectar varias rutas.
-
-q, --quiet, --silent
Suprimir mensajes en la salida estándar.
-
-s, --skip-kubernetes-shared
Omita la recopilación de datos de Kubernetes compartidos (en todo el clúster). Los datos de Kubernetes por nodo y los datos del host se siguen recopilando. Útil para colecciones de múltiples nodos a fin de reducir el tamaño; Los datos del clúster se deben recopilar de al menos un nodo.
-
-wWORK_DIR, --dir-trabajo=WORK_DIR
Utilice el WORK_DIR de directorio para los archivos temporales. Predeterminado:
/tmp. -
-xARCHIVO,--archivo-salida=ARCHIVO
Almacene el paquete recopilado como un archivo denominado FILE. El sufijo del nombre de archivo correspondiente (
.tgz,.zip, etc.) se agrega automáticamente. Si FILE es-(guión), escriba el paquete en la salida estándar (implica --quiet). Cuando el paquete se escribe en la salida estándar, no se crea ningún archivo de paquete en el disco. Predeterminado:pfmpSupport. -
-z, --zip
Utilice el formato zip para el paquete recopilado en lugar del valor predeterminado tar/gz. Se ignora si
zip(1)no se encuentra en el sistema. -
--sobrescribir archivo-de-salida
Sobrescriba el archivo de salida si ya existe. Cuando se especifica explícitamente un archivo o directorio de salida (a través de -x o -d), el comportamiento predeterminado es negarse a sobrescribir; Esta opción reemplaza eso.
-
--tecnología
Incluya las opciones del técnico en el mensaje de ayuda.
Opciones del técnico
Las siguientes opciones están destinadas a los técnicos de soporte y se muestran en el mensaje de ayuda solo cuando se especifica --tech.
-
--keep-work-dir
Conserve el directorio de trabajo temporal generado después de la creación del paquete (normalmente se limpia automáticamente).
-
--old-pod-logs
Recopile registros de pod de Kubernetes más antiguos del almacenamiento rsyslog local. Cuando se omite, el valor actual (
kubectl logs) y anterior (kubectl logs --previous) aún se recopilan registros de contenedores.
ESTRUCTURA DEL PAQUETE
El paquete de salida es un único archivo comprimido.
- El directorio de nivel superior del paquete es el nombre de host del sistema recolectado.
- Las salidas de comandos generales del host van a un
server/subdirectorio. El nombre de archivo es<command>+<arguments>+ sufijo (.txtpor defecto). Espacios reemplazados por_, caracteres no alfanuméricos eliminados.
Ejemplo:server/ip_-s_addr.txt - output of ip -s addr - Las salidas de los comandos kubectl, helm y docker van a sus respectivos subdirectorios. Además, se organizan por alcance,
<namespace>/<pod>/<container>, en su caso.
Se eliminan los argumentos relacionados con el nombre del comando, el alcance y el formato de salida. El nombre de archivo es<subcommand>+<arguments>+ sufijo (.txtpor defecto). Espacios reemplazados por_, caracteres no alfanuméricos eliminados.
Las salidas del comando kubectl exec se almacenan enexec/del subdirectorio del pod.
Ejemplos:kubectl/version.txt- Salida dekubectl versionkubectl/all-namespaces/get_pods.yaml-- salida dekubectl -o=yaml get --all-namespaces podskubectl/powerflex/asmui-7d6944dcb8-zqqtk/asmui/logs_--previous.txt- Salida dekubectl logs -n powerflex --container asmui --previous asmui-7d6944dcb8-zqqtkkubectl/powerflex/nats-server-box-6d685b4b7d-cf278/nats-box/exec/nats_stream_report.txt- Salida dekubectl exec -n powerflex --container nats-box nats-server-box-6d685b4b7d-cf278 -- nats stream reporthelm/powerflex/get_all_asmmanager.txt- Salida dehelm get -n powerflex all asmmanagerdocker/ps_-a.txt- Salida dedocker ps -a
- Los archivos extraídos de los contenedores de pods se colocan en el directorio del contenedor en su ruta del sistema de archivos dentro del contenedor.
Ejemplo:kubectl/powerflex/thin-deployer-5657659bc7-gzbq4/thin-deployer/opt/Dell/ASM/deployments/8aaa809298a9efe10198aa58c8874f35/deployment.log- Copia de/opt/Dell/ASM/deployments/8aaa809298a9efe10198aa58c8874f35/deployment.logextraído del interior de lathin-deployercontenedor delthin-deployer-5657659bc7-gzbq4Vaina - Los archivos del sistema de archivos del host se colocan en su ruta del sistema de archivos en relación con la raíz del paquete.
Ejemplos: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
- Los archivos ocultos (con prefijo de punto) se "ocultan" mediante la eliminación del punto inicial.
- Registro de ejecución de utilidades,
pfmp_support.log, colocado directamente bajo el nombre> de <host/raíz.
Estructura de árbol del directorio del paquete:
<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)
ESPACIO DE DISCO
Los requisitos de espacio en disco para los archivos temporales y el paquete resultante pueden variar considerablemente.
La utilidad intenta minimizar el uso temporal del espacio; Se limita a salidas de comandos y copias de sistemas de archivos virtuales recopilados (/proc y /sys) archivos.
Para minimizar el uso del espacio de disco en el host de PowerFlex Manager, el paquete se puede transmitir desde un host remoto con --output-file=-. Al transmitir, el archivo del paquete se escribe directamente en la salida estándar (stdout); No se crea en el disco.
Antes de recopilar datos, la utilidad calcula el espacio en disco necesario tanto para el directorio de trabajo temporal como para el paquete de salida.
Si el espacio necesario estimado supera el espacio disponible en los sistemas de archivos pertinentes, la utilidad finaliza con un error. Esta comprobación se puede omitir con --skip-space-check.
El directorio de trabajo y el directorio de salida pueden residir en sistemas de archivos diferentes; Cada uno se comprueba de forma independiente.
Los requisitos de espacio estimados se escriben en el archivo de registro de la utilidad, pfmp_support.log.
ESTADO DE SALIDA
| 0 | Finalización correcta |
| 1 | Error (argumentos no válidos, espacio insuficiente, otra instancia ya en ejecución, falla en la generación de paquetes, señal detectada, etc.) |
ARCHIVOS
<WORK_DIR>/pfmp_support.log |
Registro de ejecución (también incluido en el paquete) |
<WORK_DIR>/powerflex-pfmpsupport-tmp/ |
Directorio de trabajo temporal (limpiado cuando se realiza correctamente) |
/tmp/powerflex-pfmpsupport/pfmpSupport.tgz |
Ubicación predeterminada del paquete de salida |
<WORK_DIR>/powerflex-pfmpsupport-extra/
/tmp/powerflex-pfmpsupport-extra/ |
Directorios de datos de diagnóstico adicionales opcionales |
/tmp/powerflex-pfmpsupport-backup/ |
Respaldos temporales de archivos de configuración modificados (creados automáticamente) |
ENTORNO
Requisitos previos
- La utilidad se debe ejecutar como raíz (o un usuario con privilegios suficientes para leer archivos del sistema, ejecutar comandos de diagnóstico, interactuar con el clúster de Kubernetes y acceder
/proc,/sys, etc.). - Utilidades estándar:
tar,gzip,stat,find,awk,sed,getopt(1)(mejorado),nice. - Opcional:
zip(para--zip),xz(para--xz).
Simultaneidad
Solo se puede ejecutar una instancia de pfmp_support a la vez. La utilidad comprueba si existe una instancia en ejecución a través de pidof(1) y termina si se encuentra uno.
Manejo de señales
Las trampas de utilidad INT, EXITy TERM señales durante la recopilación de datos. Al recibir una señal, hace lo siguiente:
- Restaura los archivos de configuración respaldados.
- Limpia directorios temporales.
- Sale con el estado 1.
El registro de ejecución se conserva y su ruta se imprime en error estándar.
EJEMPLOS
Recopile un paquete de soporte estándar:
pfmp_support
Recopile paquetes de varios nodos en un clúster de Kubernetes.
- En un nodo con
kubectlyhelmacceda, recopile todos los datos de Kubernetes:pfmp_support - En los nodos subsiguientes, omita los datos compartidos de Kubernetes:
pfmp_support --skip-kubernetes-shared
Transmita un paquete a través de una conexión SSH, sin crear un archivo de paquete en el host remoto de PowerFlex Manager:
ssh <host> 'pfmp_support --output-file=-' > pfmpSupport-<host>.tgz
Use un directorio de trabajo diferente para evitar llenarlo /tmp:
pfmp_support --work-dir=/var/tmp
Incluya rutas personalizadas en el paquete:
pfmp_support --collect-path=/opt/custom/app/logs --collect-path='/var/log/app*'