PowerFlex : GET_INFO - Support Bundle Collection Utility
Résumé: get_info.sh : collecter les informations de diagnostic à partir d’un hôte PowerFlex et les regrouper dans un bundle de support
Instructions
get_info.sh [OPTIONS]
DESCRIPTION
get_info.sh est un utilitaire de diagnostic qui collecte des informations de débogage à partir d’un hôte PowerFlex (anciennement ScaleIO) 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 :
- Fichiers journaux, de configuration et de suivi des composants PowerFlex
- Sorties de requête MDM/SCLI et vidages de débogage internes
- Diagnostics internes des composants PowerFlex
- Configuration du système d’exploitation, journaux et état d’exécution
- Inventaire du matériel (contrôleurs de stockage, périphériques réseau, NVMe, NVDIMM, etc.)
- Vidages mémoire (existants et générés à la demande en option)
- Statistiques du Contrôleur de données de diagnostic (diag_coll)
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 get_info.sh 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
-
-a, --all
Collectez toutes les données. Cela équivaut à spécifier --mdm-repository, --collect-cores, --max-cores=2, --valgrind-cores et --analyse-diag-coll.
-
-A, --analyse-diag-coll
Analyser les données du collecteur de données de diagnostic (diag coll).
-
-b[COMPONENTS], --collect-cores[=COMPONENTS]
Collectez les vidages mémoire existants pour la liste séparée par des espaces des COMPOSANTS appartenant à l’utilisateur. Par défaut (lorsque COMPONENTS est omis) : tous les composants de l’espace utilisateur.
Remarque : Il ne doit pas y avoir d’espace entre les-bet COMPOSANTS. Pour le formulaire détaillé, séparez-le par=Exemples :
-b'mdm sds'--collect-cores='mdm sds' -
-d OUT_DIR, --sortie-rép=OUT_DIR
Stockez le bundle résultant sous le répertoire OUT_DIR. Default :
<WORK_DIR>/scaleio-getinfo(voir --work-dir). -
-f, --skip-mdm-login
Ignorez la requête pour les informations d’identification de connexion du MDM PowerFlex. Utile lorsque l’utilisateur s’est déjà connecté manuellement.
-
-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. -
-k NUM,--max-cores=NUM
Collectez jusqu’à NUM fichiers mémoire à partir de chaque composant. Par défaut : tous les fichiers mémoire. Implique --collect-cores.
-
-l, --lumière
Générez un bundle léger. Seule la dernière génération de fichiers journaux numérotés est collectée, et les fichiers exécutables/bibliothèques de composants ne sont pas inclus lors de la collecte des cœurs. L’utilisation de cette option réduit la prise en charge et, par conséquent, son utilisation est déconseillée.
-
-m NUM, --max-traces=NUM
Collectez jusqu’à NUM fichiers de trace PowerFlex à partir de chaque composant. Par défaut : tous les fichiers.
-
-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.
-
-r, --mdm-repository
Collectez les fichiers du référentiel MDM.
-
-s, --skip-sdbg
Ignorer la collecte de la sortie SDBG (débogueur de diagnostic).
-
-S, --pause-core-generation
Suspendez la génération de cœur des composants PowerFlex lors de la collecte des données. La configuration d’origine est restaurée à la fin de la collecte.
-
-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 :getInfoDump. -
-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. -
--mdm-port=PORT
Connectez-vous au MDM à l’aide du port PORT pour les commandes SCLI. Par défaut : comportement par défaut de l’outil scli.
-
--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 de connexion MDM
Les options suivantes sont transmises à la SCLI : --login . Leur comportement et leurs valeurs par défaut sont régis par la SCLI.
-
-n, --use-nonsecure-communication
Connectez-vous au MDM en mode non sécurisé.
-
-p MOT DE PASSE,--password=MOT DE PASSE
Utilisez le MOT DE PASSE pour la connexion à PowerFlex MDM. Default : Comportement par défaut de la SCLI.
-
-u NOM D’UTILISATEUR,--username=NOM D’UTILISATEUR
Utilisez NOM D’UTILISATEUR pour la connexion au MDM PowerFlex. Par défaut : comportement par défaut de l’outil scli.
-
--ldap-authentication
Connectez-vous à PowerFlex MDM à l’aide de l’authentification basée sur LDAP.
-
--management-system-ip=ADRESSE
Connectez-vous à SSO/M&O à l’ADRESSE pour la connexion à PowerFlex. Par défaut : comportement par défaut de l’outil scli.
-
--p12-password=MOT DE PASSE
Chiffrez le fichier PKCS#12 de connexion PowerFlex à l’aide du mot de passe. Par défaut : comportement par défaut de l’outil scli.
-
--p12-chemin=FICHIER
Stockez le fichier PKCS#12 de connexion PowerFlex en tant que fichier. Par défaut : comportement par défaut de l’outil scli.
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.
-c[COMPONENTS], --generate-cores[=COMPONENTS]
Générer des fichiers mémoire (via gcore(1)) pour les processus en cours d’exécution de la liste séparée par des espaces des COMPOSANTS de l’espace utilisateur. Par défaut : tous les composants user-land. Implique --collect-executables. Exige gdb et gcore.
-c et COMPOSANTS. Pour le formulaire détaillé, séparez-le par =.
Exemples :
-c'mdm sds'
--generate-cores='mdm sds'
-
-CCORE_FILE, --reference-core-file=CORE_FILE
Collectez les logs et les cœurs du produit en fonction de l’heure de dernière modification (mtime) de CORE_FILE, au lieu de l’heure de début d’exécution. Implique --collect-cores.
-
-E REF_TIME, --event-time=REF_TIME
Collectez les journaux et les cœurs du produit par rapport à REF_TIME, au lieu de l’heure de début d’exécution. Accepte tout format compris par
date(1). Implique --collect-cores. - -g[COMPOSANTS], --valgrind-cores[=COMPOSANTS]
Collectez les vidages mémoire Valgrind pour les COMPOSANTS du terrain utilisateur spécifiés. Par défaut : tous les composants user-land. Implique --collect-executables.
Remarque : Il ne doit pas y avoir d’espace entre les -b et COMPOSANTS. Pour le formulaire détaillé, séparez-le par =
Exemples :
-g'mdm sds'
--valgrind-cores='mdm sds'
-
-t MIN,--minutes-before-event=MIN
Collectez les journaux de produits et les cœurs générés jusqu’à quelques minutes avant l’heure de référence. Default : 15.
-
-T MIN,--minutes-after-event=MIN
Collectez les journaux de produit et les cœurs générés jusqu’à quelques minutes après l’heure de référence. Default : 5.
-
-X[COMPONENTS], --collect-executables[=COMPONENTS]
Collectez les exécutables de composants et leurs bibliothèques partagées pour les COMPOSANTS utilisateur spécifiés. Par défaut : tous les composants user-land.
Remarque : Il ne doit pas y avoir d’espace entre les
-bet COMPOSANTS. Pour le formulaire détaillé, séparez-le par=Exemples :
-X'mdm sds' --collect-executables='mdm sds' -
--keep-work-dir
Conservez le répertoire de travail temporaire généré après la création du bundle (normalement nettoyé automatiquement).
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– sortie deip -s addr - Les sorties de commande de produit sont placées dans le sous-répertoire du composant.
mdm/Pourscli,sdc/Pourdrv_cfgEtc.
Nom de la commande (scli,drv_cfg, etc.) est dépouillé. Le premier argument significatif devient le nom de fichier. Les fichiers se voient attribuer le suffixe correspondant,.txtpar défaut.
Exemples:mdm/query_cluster.txt– sortie descli --query_clustermdm/tgt_dump.txt– sortie descli --debug_action --tgt_dumpsdc/query_mdms.txt– sortie dedrv_cfg --query_mdmssds/sdbg.txt– la sortie de la SDBGdumpallscreenspour FDS
- Fichiers de composants de produits (par opposition aux sorties de commandes),
<component>/cfg,<component>/logsEtc.
Copié à partir du répertoire du composant avec le préfixe supprimé.
Exemples:mdm/cfg/conf.txt– copie de/opt/emc/scaleio/mdm/cfg/conf.txtsds/logs/trc.0– copie de/opt/emc/scaleio/sds/logs/trc.0
- 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– copie de/etc/os-releasevar/log/messages– copie de/var/log/messagesproc/cpuinfo– copie de/proc/cpuinfo
- Les fichiers du collecteur de diagnostics (diag_coll) sont copiés avec le
/optpréfixe dépouillé, préservant la structure interne.
Exemple:diag_coll/logs/sar.0– copie de/opt/diag_coll/logs/sar.0 - 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,
get_info_run.log, placé directement sous le nom> d’hôte</root.
Structure arborescente des répertoires du bundle :
<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)
FILTRAGE DES JOURNAUX DE PRODUITS ET DES FICHIERS MÉMOIRE
Les options décrites dans cette section contrôlent la façon dont les fichiers journaux du produit (également appelés fichiers de suivi, par ex. trc.0, trc.1, exp.0) et les fichiers de vidage mémoire sont sélectionnés pour être inclus dans le bundle collecté. Pour ce faire, ils définissent une heure de référence, une fenêtre temporelle autour de celle-ci et des limites de comptage.
Lorsqu’aucune option de filtrage n’est spécifiée, tous les fichiers journaux du produit et (si la collecte mémoire est activée) tous les fichiers de vidage mémoire sont collectés. Les options de filtrage restreignent progressivement cette sélection, comme décrit ci-dessous.
Heure de référence
Une heure de référence peut être définie à l’aide de l’une des méthodes suivantes : -E/--event-time ou -C/--reference-core-file.
Si ni l’un ni l' --event-time Ni --reference-core-file est donné, aucun filtrage de la période n’est effectué : l’heure de référence est par défaut l’heure actuelle et n’est utilisée que pour l’ordre basé sur la proximité lorsqu’une limite de comptage (-m ou -k) est en vigueur (voir la section Limites de comptage ci-dessous).
Si les deux -E et -C s’affiche, le dernier sur la ligne de commande prend effet.
Fenêtre de temps
Lorsqu’une heure de référence est définie (à l’aide de --event-time ou --reference-core-file), une fenêtre temporelle s’établit autour d’elle. Le périmètre de la période peut être défini comme suit : -t/--minutes-before-event et/ou -T/--minutes-after-event, qui sont respectivement de 15 et 5 minutes par défaut. Seuls les fichiers dont le contenu chevauche cette fenêtre peuvent être collectés.
Par exemple : -E "2020-03-20 14:30" -t 10 -T 3 collecte des fichiers couvrant la période de 14:20:00 à 14:33:00.
--minutes-before-event et --minutes-after-event sont ignorés lorsque ni l’un ni l’autre --event-time Ni --reference-core-file est spécifié.
Count Limits
Une limite de nombre de fichiers peut être définie à l’aide de -m/--max-traces et -k/--max-cores, respectivement pour les fichiers journaux et les fichiers noyaux. La limite est mesurée par composant.
Lorsque plus de fichiers que NUM se trouvent dans la période (ou sont disponibles, si aucune fenêtre n’est active), les fichiers NUM les plus proches de l’heure de référence sont collectés.
Lorsqu’une limite de comptage est utilisée sans --event-time ou --reference-core-file, tous les fichiers sont candidats (pas de période) et les fichiers NUM les plus récents sont sélectionnés.
Logique de filtrage
Le filtrage des fichiers applique d’abord la période, puis la limite de nombre :
- Établissez des candidats. Tous les fichiers journaux de produit et/ou fichiers de vidage mémoire d’un composant sont énumérés.
- Dériver la période de contenu. Le contenu des fichiers journaux du produit représente un point. On considère que la période de contenu commence à l’heure de la dernière modification de son prédécesseur (mtime), ou à l’époque UNIX, lorsqu’il n’existe pas de prédécesseur ; Il se termine au mtime du fichier. Les fichiers de vidage mémoire représentent un point dans le temps, au mtime du fichier.
- Fenêtre de temps d’application (si
-Eou-Cspécifié). Les fichiers dont le contenu se trouve entièrement en dehors de la fenêtre sont ignorés de la sélection. Pour les fichiers journaux de produit, si aucun fichier ne se trouve dans la fenêtre, le fichier unique le plus proche de la fenêtre est conservé afin que le lot ne soit jamais vide pour un composant. Pour les fichiers de vidage mémoire, ce type de retour arrière ne s’applique pas. - Appliquer la limite de comptage (si
-met/ou-kspécifié). Parmi les fichiers restants, au plus NUM sont sélectionnés, en privilégiant ceux qui se rapprochent le plus de l’heure de référence. Les fichiers antérieurs et postérieurs à l’heure de référence sont en concurrence égale pour la sélection.
AUTHENTIFICATION
L’utilitaire tente de se connecter au MDM local si un processus MDM principal est détecté à l’écoute sur le port attendu (par défaut : 6611).
Les options de connexion MDM sont transmises à la SCLI --login et sont traitées par elle.
Si la connexion échoue, l’utilitaire se termine avec une erreur.
Lorsque la connexion est ignorée, les commandes SCLI sont toujours utilisées (pour prendre en charge les scénarios dans lesquels l’utilisateur s’est connecté manuellement au préalable). Après 3 échecs SCLI, un avertissement s’affiche et toutes les autres commandes SCLI sont ignorées.
La connexion est ignorée dans les cas suivants :
- Aucun processus MDM principal n’a été trouvé sur l’hôte local.
- L’option --skip-mdm-login est spécifiée.
La connexion échoue dans les cas suivants :
- Le propriétaire du processus MDM ne figure pas dans la liste des utilisateurs autorisés (par défaut :
root) et la connexion sécurisée est activée. - Le SCLI
--loginrenvoie une erreur (par exemple, des informations d’identification incorrectes).
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, le bundle peut être diffusé en continu à partir d’un hôte distant à l’aide de la commande --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, get_info_run.log.
ÉTAT DE SORTIE
| 0 | Réussite |
| 1 | Erreur (arguments non valides, espace insuffisant, échec de la connexion, une autre instance est déjà en cours d’exécution, échec de génération de bundle, signal intercepté, etc.) |
FICHIERS
<WORK_DIR>/get_info_run.log |
Journal d’exécution (également inclus dans l’offre groupée) |
<WORK_DIR>/scaleio-getinfo-tmp/ |
Répertoire de travail temporaire (nettoyé en cas de succès) |
/tmp/scaleio-getinfo/getInfoDump.tgz |
Emplacement par défaut du bundle de sortie |
<WORK_DIR>/scaleio-getinfo-extra/
/tmp/scaleio-getinfo-extra/ |
Répertoires de données de diagnostic supplémentaires facultatifs |
/tmp/scaleio-getinfo-backup/ |
Sauvegardes temporaires des fichiers de configuration modifiés (créés automatiquement) |
/opt/emc/scaleio/ |
Répertoire d’installation de PowerFlex |
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 de composants, exécuter des commandes de diagnostic 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),gdb/gcore(pour--generate-cores).
Concurrence
Vous ne pouvez exécuter qu’une seule instance de get_info.sh à 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 (par exemple, les paramètres de génération de cœurs).
- 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 :
get_info.sh
Diffusez un bundle via une connexion SSH, sans créer de fichier de bundle sur l’hôte PowerFlex distant :
ssh <host> 'get_info.sh --output-file=-' > getInfoDump-<host>.tgz
Utilisez un autre répertoire de travail pour éviter de le remplir /tmp:
get_info.sh --work-dir=/var/tmp
Incluez des chemins personnalisés dans l’offre groupée :
get_info.sh --collect-path=/opt/custom/app/logs --collect-path='/var/log/app*'
Collectez le dernier vidage mémoire uniquement pour les composants SDS et MDM :
get_info.sh --collect-cores='mdm sds' --max-cores=1
Collectez des données centrées sur l’heure de modification d’un fichier mémoire, avec une fenêtre de temps personnalisée :
get_info.sh --reference-core-file=/opt/emc/scaleio/sds/bin/core.1000 \
--minutes-before-event=10 \
--minutes-after-event=2