PowerFlex : PFMP_SUPPORT - Support Bundle Collection Utility
Résumé: pfmp_support : collecter les données de diagnostic PowerFlex Manager et les regrouper dans un bundle de support
Instructions
pfmp_support [OPTIONS]
DESCRIPTION
pfmp_support est un utilitaire de diagnostic qui collecte les informations de débogage à partir d’un hôte PowerFlex Manager ou d’un programme d’installation PowerFlex Manager et les archive dans un bundle compressé à des fins d’analyse par le personnel de support.
L’utilitaire collecte des données provenant de plusieurs sources, notamment :
- Données de diagnostic, configuration et journaux Kubernetes
- Informations sur la version de Helm
- Données d’exécution de docker et de conteneur
- Journaux du programme d’installation de PowerFlex Manager
- Configuration du système d’exploitation, journaux et état d’exécution
- Inventaire matériel
Lors de la collecte de données à partir de plusieurs nœuds de cluster Kubernetes, un bundle standard (--skip-kubernetes-shared not specified) doit être collecté à partir d’au moins un nœud, où kubectl et helm sont disponibles et ont accès au plan de contrôle Kubernetes. Sur les nœuds suivants --skip-kubernetes-shared peut être utilisé pour réduire la taille des données collectées.
Le bundle résultant est une archive compressée unique (tar/gz par défaut) qui peut être transférée vers le support PowerFlex pour une analyse plus approfondie.
Une seule instance de pfmp_support peut s’exécuter sur un hôte à un moment donné. S’il n’y a pas suffisamment d’espace libre pour sa sortie, il refuse de s’exécuter (sauf si la vérification de l’espace est explicitement ignorée).
OPTIONS
Options générales
-
-ADIR, --installer-root-path=DIR
Utilisez DIR comme répertoire de base du programme d’installation de PowerFlex Manager. Utile lors de la collecte des données du programme d’installation PowerFlex et du conteneur du programme d’installation (
atlantic_installer) n’est pas en cours d’exécution. Par défaut : détecté automatiquement, ou/var. -
-d OUT_DIR, --sortie-rép=OUT_DIR
Stockez le bundle résultant sous le répertoire OUT_DIR. Default :
<WORK_DIR>/powerflex-pfmpsupport(voir --work-dir). -
-h, --help
Affichez le message d’aide et quittez. Lorsqu’il est associé à --tech, affiche également les options du technicien.
-
-J, --xz
Utilisez le format tar/xz pour l’offre groupée collectée au lieu du format tar/gz par défaut. Ignoré si le
tar(1)Ne prend pas en charge--use-compress-programouxz(1)est introuvable. -
-n NAMESPACE, --namespace=ESPACE DE NOMMAGE
Collectez des données supplémentaires à partir de l’espace de nommage Kubernetes spécifique à l’application, NAMESPACE. Default :
powerflex. -
-N, --skip-space-check
Ignorez la vérification de l’espace disque disponible avant la collecte des données.
-
-PPATH,--collect-path=PATH
Collectez le chemin supplémentaire PATH. Seuls les chemins absolus sont acceptés. Accepte les caractères génériques ; Les caractères génériques doivent être mis entre guillemets. Cette option peut être spécifiée plusieurs fois pour collecter plusieurs chemins.
-
-q, --quiet, --silent
Supprime les messages sur la sortie standard.
-
-s, --skip-kubernetes-shared
Ignorer la collecte des données Kubernetes partagées (à l’échelle du cluster). Les données Kubernetes par nœud et les données de l’hôte sont toujours collectées. Utile pour les collectes à plusieurs nœuds afin de réduire la taille ; Les données de cluster doivent être collectées à partir d’au moins un nœud.
-
-w WORK_DIR, --rép_travail=WORK_DIR
Utilisez WORK_DIR de répertoire pour les fichiers temporaires. Default :
/tmp. -
-x FICHIER,--fichier-sortie=FICHIER
Stockez le bundle collecté en tant que fichier nommé FILE. Le suffixe de nom de fichier approprié (
.tgz,.zip, etc.) est ajouté automatiquement. Si FILE est-(tiret), écrivez le bundle dans la sortie standard (implique --quiet). Lorsque le bundle est écrit sur la sortie standard, aucun fichier de bundle n’est créé sur le disque. Default :pfmpSupport. -
-z, --zip
Utilisez le format zip pour l’offre groupée collectée au lieu du format tar/gz par défaut. Ignoré si
zip(1)Introuvable sur le système. -
--overwrite-output-file
Remplacez le fichier de sortie s’il existe déjà. Lorsqu’un fichier ou un répertoire de sortie est explicitement spécifié (via -x ou -d), le comportement par défaut est de refuser d’écraser ; Cette option remplace cela.
-
--Tech
Incluez les options du technicien dans la sortie du message d’aide.
Options pour les techniciens
Les options suivantes sont destinées aux techniciens de support et s’affichent dans le message d’aide uniquement lorsque l’option --tech est spécifiée.
-
--keep-work-dir
Conservez le répertoire de travail temporaire généré après la création du bundle (normalement nettoyé automatiquement).
-
--old-pod-logs
Collectez les anciens logs du pod Kubernetes à partir du stockage rsyslog local. Lorsqu’elle est omise, la valeur actuelle (
kubectl logs) et les versions antérieures (kubectl logs --previous) les logs de conteneur sont toujours collectés.
STRUCTURE DE L’OFFRE GROUPÉE
Le bundle de sortie est une archive compressée unique.
- Le répertoire de premier niveau du bundle correspond au nom d’hôte du système collecté.
- Les sorties de commande de l’hôte général vont dans un
server/Sous-répertoire. Le nom du fichier est<command>+<arguments>+ suffixe (.txtpar défaut). Espaces remplacés par_, les caractères non alphanumériques ont été supprimés.
Exemple:server/ip_-s_addr.txt - output of ip -s addr - Les sorties de commande kubectl, helm et docker sont placées dans leurs sous-répertoires respectifs. Ils sont ensuite organisés par champ d’application,
<namespace>/<pod>/<container>, s’il y a lieu.
Les arguments liés au nom de commande, au périmètre et au format de sortie sont supprimés. Le nom du fichier est<subcommand>+<arguments>+ suffixe (.txtpar défaut). Espaces remplacés par_, les caractères non alphanumériques ont été supprimés.
Les sorties de la commande kubectl exec sont stockées sousexec/du sous-répertoire du pod.
Exemples:kubectl/version.txt- Sortie dekubectl versionkubectl/all-namespaces/get_pods.yaml-- sortie dekubectl -o=yaml get --all-namespaces podskubectl/powerflex/asmui-7d6944dcb8-zqqtk/asmui/logs_--previous.txt- Sortie dekubectl logs -n powerflex --container asmui --previous asmui-7d6944dcb8-zqqtkkubectl/powerflex/nats-server-box-6d685b4b7d-cf278/nats-box/exec/nats_stream_report.txt- Sortie dekubectl exec -n powerflex --container nats-box nats-server-box-6d685b4b7d-cf278 -- nats stream reporthelm/powerflex/get_all_asmmanager.txt- Sortie dehelm get -n powerflex all asmmanagerdocker/ps_-a.txt- Sortie dedocker ps -a
- Les fichiers extraits des conteneurs de pods sont placés sous le répertoire du conteneur au chemin du système de fichiers dans le conteneur.
Exemple:kubectl/powerflex/thin-deployer-5657659bc7-gzbq4/thin-deployer/opt/Dell/ASM/deployments/8aaa809298a9efe10198aa58c8874f35/deployment.log- copie de/opt/Dell/ASM/deployments/8aaa809298a9efe10198aa58c8874f35/deployment.logextrait de l’intérieur de lathin-deployerconteneur de l’objetthin-deployer-5657659bc7-gzbq4Pod - Les fichiers du système de fichiers hôte sont placés sur leur chemin d’accès au système de fichiers par rapport à la racine du bundle.
Exemples: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
- Les fichiers masqués (précédés d’un point) sont « masqués » en supprimant le point de début.
- Journal d’exécution de l’utilitaire,
pfmp_support.log, placé directement sous le nom> d’hôte</root.
Structure arborescente des répertoires du bundle :
<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)
ESPACE DISQUE
L’espace disque requis pour les fichiers temporaires et l’offre groupée qui en résulte peut varier considérablement.
L’utilitaire tente de minimiser l’utilisation temporaire de l’espace ; Elle se limite aux sorties de commande et aux copies du système de fichiers virtuel collecté (/proc et /sys) dans les fichiers.
Pour limiter l’utilisation de l’espace disque sur l’hôte PowerFlex Manager, le bundle peut être diffusé en continu à partir d’un hôte distant avec l’option --output-file=-. Lors de la diffusion en continu, le fichier de bundle est écrit directement dans la sortie standard (stdout) ; Il n’est pas créé sur le disque.
Avant de collecter les données, l’utilitaire estime l’espace disque requis pour le répertoire de travail temporaire et le bundle de sortie.
Si l’espace requis estimé dépasse l’espace disponible sur le ou les systèmes de fichiers concernés, l’utilitaire se termine avec une erreur. Cette vérification peut être contournée à l’aide de l’option --skip-space-check.
Le répertoire de travail et le répertoire de sortie peuvent résider sur des systèmes de fichiers différents ; Chacune d’entre elles est vérifiée indépendamment.
L’espace estimé requis est écrit dans le fichier journal de l’utilitaire, pfmp_support.log.
ÉTAT DE SORTIE
| 0 | Réussite |
| 1 | Erreur (arguments non valides, espace insuffisant, une autre instance est déjà en cours d’exécution, échec de génération de bundle, signal intercepté, etc.) |
FICHIERS
<WORK_DIR>/pfmp_support.log |
Journal d’exécution (également inclus dans l’offre groupée) |
<WORK_DIR>/powerflex-pfmpsupport-tmp/ |
Répertoire de travail temporaire (nettoyé en cas de succès) |
/tmp/powerflex-pfmpsupport/pfmpSupport.tgz |
Emplacement par défaut du bundle de sortie |
<WORK_DIR>/powerflex-pfmpsupport-extra/
/tmp/powerflex-pfmpsupport-extra/ |
Répertoires de données de diagnostic supplémentaires facultatifs |
/tmp/powerflex-pfmpsupport-backup/ |
Sauvegardes temporaires des fichiers de configuration modifiés (créés automatiquement) |
ENVIRONNEMENT
Configuration requise
- L’utilitaire doit être exécuté en tant qu’utilisateur root (c’est-à-dire en tant qu’utilisateur disposant de privilèges suffisants pour lire les fichiers système, exécuter des commandes de diagnostic, interagir avec le cluster Kubernetes et accéder
/proc,/sys, etc.). - Utilitaires standard :
tar,gzip,stat,find,awk,sed,getopt(1)(amélioré),nice. - Facultatif :
zip(pour--zip),xz(pour--xz).
Concurrence
Vous ne pouvez exécuter qu’une seule instance de pfmp_support à la fois. L’utilitaire vérifie une instance existante en cours d’exécution via pidof(1) et se termine si l’on en trouve un.
Gestion des signaux
Les traps utilitaires INT, EXITet TERM lors de la collecte des données. À la réception d’un signal, il :
- Restaure tous les fichiers de configuration sauvegardés.
- Nettoie les répertoires temporaires.
- Quitte avec l’état 1.
Le journal d’exécution est conservé et son chemin d’accès est imprimé sur l’erreur standard.
EXEMPLES
Collecter un bundle de support standard :
pfmp_support
Collectez des bundles à partir de plusieurs nœuds dans un cluster Kubernetes.
- Sur un nœud avec
kubectlethelmaccès, collecte toutes les données Kubernetes :pfmp_support - Sur les nœuds suivants, ignorez les données Kubernetes partagées :
pfmp_support --skip-kubernetes-shared
Diffusez un bundle via une connexion SSH, sans créer de fichier de bundle sur l’hôte PowerFlex Manager distant :
ssh <host> 'pfmp_support --output-file=-' > pfmpSupport-<host>.tgz
Utilisez un autre répertoire de travail pour éviter de le remplir /tmp:
pfmp_support --work-dir=/var/tmp
Incluez des chemins personnalisés dans l’offre groupée :
pfmp_support --collect-path=/opt/custom/app/logs --collect-path='/var/log/app*'