PowerFlex: GET_INFO – Utilitário de coleta do pacote de suporte
Résumé: get_info.sh - colete informações de diagnóstico de um host do PowerFlex e embale-as em um pacote de suporte.
Instructions
get_info.sh [OPÇÕES]
DESCRIÇÃO
get_info.sh é um utilitário de diagnóstico que coleta informações de depuração de um host do PowerFlex (antigo ScaleIO) e as arquiva em um pacote compactado para análise pela equipe de suporte.
O utilitário coleta dados de várias fontes, incluindo:
- Arquivos de registros, configuração e rastreamento de componentes do PowerFlex
- Saídas de consulta MDM/SCLI e dump de depuração interno
- Diagnóstico interno de componentes do PowerFlex
- Configuração do sistema operacional, registros e estado de tempo de execução
- Inventário de hardware (controladores de armazenamento, dispositivos de rede, NVMe, NVDIMM e assim por diante.)
- Dumps de núcleo (existentes e gerados opcionalmente sob demanda)
- Coletor de dados de diagnóstico (
diag_coll) estatísticas
O pacote resultante é um único arquivamento compactado (tar/gz por padrão) que pode ser transferido para o suporte do PowerFlex para análise adicional.
Apenas uma instância de get_info.sh Pode ser executado em um host em um determinado momento. Se não houver espaço livre suficiente para sua saída, ela recusará a execução (a menos que a verificação de espaço seja explicitamente ignorada).
OPÇÕES
Opções gerais
-
-a, --allColete todos os dados. Isso equivale a especificar
--mdm-repository,--collect-cores,--max-cores=2,--valgrind-corese--analyse-diag-coll. -
-A, --analyse-diag-collAnalisar coletor de dados de diagnóstico (
diag coll) dados -
-b[COMPONENTS], --collect-cores[=COMPONENTS]Coletar core dumps existentes para a lista separada por espaço do espaço do usuário
COMPONENTS. Padrão (quandoCOMPONENTSé omitido): Todos os componentes do espaço do usuário
-b e COMPONENTES. Para o formato longo, separe com =
Exemplo
-b'mdm sds'
--collect-cores='mdm sds'
-
-d OUT_DIR, --output-dir=OUT_DIRArmazenar o pacote resultante no diretório
OUT_DIR. Default: <WORK_DIR>/scaleio-getinfo(consulte a--work-dir). -
-f, --skip-mdm-loginIgnore a consulta das credenciais de login do PowerFlex MDM. Útil quando o usuário já fez log-in manualmente.
-
-h, --helpExiba a mensagem de ajuda e saia. Quando combinado com
--tech, também exibe opções de técnico. -
-J, --xzUse
tar/xzformato para o pacote coletado em vez do padrãotar/gz.Ignorado se atar(1)não suporta--use-compress-programouxz(1)não foi encontrado. -
-k NUM, --max-cores=NUMColetar até
NUMArquivos principais de cada componente. Default: Todos os arquivos principais, implica--collect-cores -
-l, --lightGere um pacote leve. Somente a última geração de arquivos de log numerados é coletada, e os executáveis ou bibliotecas de componentes não são incluídos ao coletar núcleos. O uso dessa opção reduz a capacidade de suporte, e seu uso é desencorajado.
-
-m NUM, --max-traces=NUMColetar até
NUMArquivos de rastreamento do PowerFlex de cada componente. Default: Todos os arquivos -
-N, --skip-space-checkIgnore a verificação de espaço livre em disco antes da coleta de dados.
-
-P PATH, --collect-path=PATHColetar o caminho adicional
PATH.Somente caminhos absolutos são aceitos. Aceita curingas; Os caracteres curinga devem ser cotados. Essa opção pode ser especificada várias vezes para coletar vários caminhos. -
-q, --quiet, --silentSuprima mensagens na saída padrão.
-
-r, --mdm-repositoryColete arquivos do repositório MDM.
-
-s, --skip-sdbgIgnora a coleta da saída do SDBG (depurador de diagnóstico).
-
-S, --pause-core-generationPause a geração principal dos componentes do PowerFlex durante a coleta de dados. A configuração original é restaurada após a conclusão da coleta.
-
-w WORK_DIR, --work-dir=WORK_DIRUsar diretório
WORK_DIRpara arquivos temporários. Default:/tmp. -
-x FILE, --output-file=FILEArmazene o pacote coletado como um arquivo chamado
FILE. O sufixo do nome de arquivo apropriado (.tgz,.zip, e assim por diante) é adicionado automaticamente. Se a solicitação doFILEÉ-(traço), grave o pacote na saída padrão (implica--quiet). Quando um pacote é gravado na saída padrão, nenhum arquivo de pacote é criado no disco. Default:getInfoDump. -
-z, --zipUse
zipformato para o pacote coletado em vez do padrãotar/gz. Ignorado sezip(1)não encontrado no sistema. -
--mdm-port=PORTConecte-se ao MDM usando a porta
PORTpara comandos SCLI. Default:scli default behavior. -
--overwrite-output-fileSubstitua o arquivo de saída, se ele já existir. Quando um arquivo ou diretório de saída é especificado explicitamente (usando
-xou-d), o comportamento padrão é recusar-se a sobrescrever; essa opção substitui isso. -
--techInclua opções de técnico na saída da mensagem de ajuda.
Opções de login do MDM
As seguintes opções são passadas para a SCLI --login . Seu comportamento e valores padrão são regidos pela SCLI.
-
-n, --use-nonsecure-communicationConecte-se ao MDM no modo não seguro.
-
-p PASSWORD, --password=PASSWORDUse
PASSWORDpara login no PowerFlex MDM. Default: Comportamento padrão da SCLI -
-u USERNAME, --username=USERNAMEUse
USERNAMEpara login no PowerFlex MDM. Default: Comportamento padrão da SCLI -
--ldap-authenticationFaça log-in no PowerFlex MDM usando a autenticação baseada em LDAP.
-
--management-system-ip=ADDRESSConecte-se a
SSO/M&OatADDRESSpara login no PowerFlex. Default: Comportamento padrão da SCLI -
--p12-password=PASSWORDCriptografar o login do PowerFlex
PKCS#12usando o arquivoPASSWORD. Default: Comportamento padrão da SCLI -
--p12-path=FILEArmazenar o login do PowerFlex
PKCS#12arquivo comoFILE. Default: Comportamento padrão da SCLI
Opções de técnico
As opções a seguir são destinadas ao uso por técnicos de suporte e são mostradas na mensagem de ajuda apenas quando --tech é especificado.
-c[COMPONENTS], --generate-cores[=COMPONENTS]
Gere arquivos principais (usando gcore(1)) para os processos em execução da lista separada por espaço de user-land COMPONENTS. Padrão: todos os componentes do espaço do usuário, implica --collect-executables, e requer gdb e gcore.
-c e COMPONENTS. Para o formato longo, separe com =.
Exemplos:
-c'mdm sds'
--generate-cores='mdm sds'
-
-C CORE_FILE, --reference-core-file=CORE_FILEColete logs e núcleos do produto relacionados à hora da última modificação (
mtime) deCORE_FILE, em vez da hora de início da execução. Implica--collect-cores -
-E REF_TIME, --event-time=REF_TIMEColetar logs e núcleos de produtos relacionados a
REF_TIME, em vez da hora de início da execução. Aceita qualquer formato compreendido pordate(1). Implica--collect-cores. -g[COMPONENTS], --valgrind-cores[=COMPONENTS]
Coletar valgrind core dumps para o campo de usuário especificado COMPONENTS. Padrão: todos os componentes do espaço do usuário. Implica --collect-executables.
-b e COMPONENTS. Para o formato longo, separe com =
Exemplos:
-g'mdm sds'
--valgrind-cores='mdm sds'
-
-t MIN, --minutes-before-event=MINColetar registros e núcleos de produtos gerados até
MINminutos antes da hora de referência. Default: 15 -
-T MIN, --minutes-after-event=MINColetar registros e núcleos de produtos gerados até
MINminutos após a hora de referência. Default: 5 -
-X[COMPONENTS], --collect-executables[=COMPONENTS]Colete executáveis de componentes e suas bibliotecas compartilhadas para o espaço de usuário especificado
COMPONENTS. Default: Todos os componentes do espaço do usuário
-b e COMPONENTS. Para o formato longo, separe com =
Exemplos:
-X'mdm sds'
--collect-executables='mdm sds'
-
--keep-work-dirMantenha o diretório de trabalho temporário gerado após a criação do pacote (limpo automaticamente).
ESTRUTURA DO PACOTE
O pacote de saída é um único arquivo compactado.
- O diretório de nível superior do pacote é o nome do host do sistema coletado.
- As saídas do comando geral do host vão para um
server/Subdiretório.
O nome do arquivo é<command>+<arguments>+ sufixo (.txtpor padrão). Espaços substituídos por_, caracteres não alfanuméricos removidos
Exemplo:server/ip_-s_addr.txt – output of ip -s addr - As saídas de comando do produto vão para o subdiretório do componente.
mdm/Parascli,sdc/Paradrv_cfg, e assim por diante.
Nome do comando (scli,drv_cfg, e assim por diante) é despojado. O primeiro argumento significativo torna-se o nome do arquivo. Os arquivos são atribuídos como o sufixo relevante,.txtpor padrão.
Exemplos:
-
mdm/query_cluster.txt- saída descli --query_clustermdm/tgt_dump.txt- saída descli --debug_action --tgt_dumpsdc/query_mdms.txt- saída dedrv_cfg --query_mdmssds/sdbg.txt- saída de SDBGdumpallscreenspara SDS
- Arquivos de componentes do produto (em oposição a saídas de comando),
<component>/cfg,<component>/logse assim por diante
Copiado do diretório do componente com o prefixo fracionado.
Exemplos:
-
mdm/cfg/conf.txt- cópia de/opt/emc/scaleio/mdm/cfg/conf.txtsds/logs/trc.0- cópia de/opt/emc/scaleio/sds/logs/trc.0
- Os arquivos do file system do host são colocados no caminho do file system em relação à raiz do pacote.
Exemplos:
-
etc/os-release- cópia de/etc/os-releasevar/log/messages- cópia de/var/log/messagesproc/cpuinfo- cópia de/proc/cpuinfo
- Os arquivos do coletor de diagnóstico (diag_coll) são copiados com o
/optprefixo descascado, preservando a estrutura interna.
Exemplo:diag_coll/logs/sar.0- cópia de/opt/diag_coll/logs/sar.0 - Os arquivos ocultos (prefixados por ponto) são "desocultos" removendo o ponto inicial.
- Registro de execução do utilitário,
get_info_run.log, colocado diretamente sob o <hostname>/ root
Estrutura de árvore de diretórios do pacote:
<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)
LOG DO PRODUTO E FILTRAGEM DE ARQUIVOS PRINCIPAIS
As opções descritas nesta seção controlam como os arquivos de log do produto (também chamados de arquivos de rastreamento, por exemplo trc.0, trc.1, exp.0) e os arquivos core dump são selecionados para inclusão no pacote coletado. Eles fazem isso definindo um tempo de referência, uma janela de tempo em torno dele e limites de contagem.
Quando nenhuma opção de filtragem é especificada, todos os arquivos de log do produto e (se a coleta principal estiver habilitada) todos os arquivos de core dump são coletados. As opções de filtragem restringem progressivamente essa seleção, conforme descrito abaixo.
Hora de referência
Uma hora de referência pode ser definida usando: -E/--event-time ou -C/--reference-core-file.
Se nenhum dos dois --event-time Nem --reference-core-file é dada, nenhuma filtragem de janela de tempo é executada: a hora de referência é padrão para a hora atual e é usada apenas para ordenação baseada em proximidade quando um limite de contagem (-m ou -k) está em vigor (consulte Limites de contagem abaixo).
Se ambos -E e -C aparece, o último item da linha de comando entra em vigor.
Espaço de tempo
Quando uma hora de referência é definida (usando --event-time ou --reference-core-file), uma janela de tempo é estabelecida em torno dele. O escopo da janela de tempo pode ser definido usando: -t/--minutes-before-event e ou -T/--minutes-after-event, que assumem o padrão de 15 e 5 minutos, respectivamente. Somente os arquivos cujo conteúdo se sobrepõe a essa janela são elegíveis para coleta.
Por exemplo, -E "2020-03-20 14:30" -t 10 -T 3 Coleta arquivos que abrangem o período de 14:20:00 a 14:33:00.
--minutes-before-event e --minutes-after-event são ignorados quando nenhum dos dois --event-time Nem --reference-core-file é especificado.
Limites de contagem
Um limite de contagem de arquivos pode ser definido usando: -m/--max-traces e -k/--max-cores, para arquivos de log e arquivos de núcleo, respectivamente. O limite é medido por componente.
Quando mais arquivos do que o NUM estiverem dentro da janela de tempo (ou estiverem disponíveis, se nenhuma janela estiver ativa), os arquivos de NUM mais próximos da hora de referência serão coletados.
Quando um limite de contagem é usado sem --event-time ou --reference-core-file, todos os arquivos são candidatos (sem espaço de tempo) e os arquivos NUM mais recentes são selecionados.
Lógica de filtragem
A filtragem de arquivos se aplica primeiro à janela de tempo e, em seguida, ao limite de contagem:
- Estabeleça candidatos. Todos os arquivos de log do produto e/ou os principais dump files de um componente são enumerados.
- Derivar período de conteúdo. O conteúdo dos arquivos de log do produto representa um período. Considera-se que o período de conteúdo começa na hora da última modificação do seu antecessor (
mtime), ou a época do UNIX, quando não existe antecessor; ele termina no próprio arquivomtime. Os dump files principais representam um ponto no tempo, nomtime. - Aplique o espaço de tempo (se
-Eou-Cespecificado). Os arquivos cujo conteúdo fica totalmente fora da janela são descartados da seleção. Para arquivos de log do produto, se nenhum arquivo cair dentro da janela, o único arquivo mais próximo da janela será retido para que o pacote nunca fique vazio para um componente. Para arquivos core dump, esse fallback não se aplica. - Aplicar limite de contagem (se
-me ou-kespecificado). Entre os arquivos restantes, no máximoNUMsão selecionados, preferindo-se aqueles mais próximos do tempo de referência. Os arquivos antes e depois da hora de referência competem igualmente pela seleção.
AUTENTICAÇÃO
O utilitário tentará fazer log-in no MDM local se um processo de MDM primário for detectado escutando a porta esperada (padrão: 6611)
As opções de login do MDM são passadas para a SCLI --login e são processados por ele.
Se o login falhar, o utilitário será encerrado com um erro.
Quando o login é ignorado, os comandos SCLI ainda são tentados (para oferecer suporte a cenários em que o usuário fez login manualmente antes). Após três falhas de SCLI, uma advertência é exibida e todos os outros comandos SCLI são ignorados.
O login é ignorado quando:
- Nenhum processo de MDM primário encontrado no host local.
- A coluna
--skip-mdm-loginé especificada.
O login falha quando:
- O proprietário do processo MDM não está na lista de usuários autorizados (padrão:
root) e o login seguro está ativado. - A SCLI
--loginretorna um erro (por exemplo, credenciais incorretas).
ESPAÇO EM DISCO
Os requisitos de espaço em disco para arquivos temporários e o pacote resultante podem variar consideravelmente.
O utilitário tenta minimizar o uso temporário de espaço; Ele é limitado a saídas de comando e cópias do file system virtual coletado (/proc e /sys) arquivos.
O pacote pode ser transmitido de um host remoto com --output-file=- para minimizar o uso de espaço em disco no host do PowerFlex. O arquivo de pacote é gravado diretamente na saída padrão (stdout) ao fazer streaming; Ele não é criado no disco.
O utilitário estima o espaço em disco necessário para o diretório de trabalho temporário e o pacote de saída antes da coleta de dados.
Se o espaço necessário estimado exceder o espaço disponível nos file systems relevantes, o utilitário será encerrado com um erro. Essa verificação pode ser ignorada com --skip-space-check.
O diretório de trabalho e o diretório de saída podem residir em diferentes sistemas de arquivos; Cada um é verificado de forma independente.
Os requisitos de espaço estimados são gravados no arquivo de log do utilitário, get_info_run.log.
STATUS DE SAÍDA
| 0 | Conclusão bem-sucedida |
| 1 | Erro (argumentos inválidos, espaço insuficiente, falha de log-in, outra instância já em execução, falha de geração de pacote, sinal capturado e assim por diante) |
ARQUIVOS
<WORK_DIR>/get_info_run.log |
Log de execução (também no pacote) |
<WORK_DIR>/scaleio-getinfo-tmp/ |
Diretório de trabalho temporário (limpo em caso de sucesso) |
/tmp/scaleio-getinfo/getInfoDump.tgz |
Local padrão do pacote de saída |
<WORK_DIR>/scaleio-getinfo-extra/
/tmp/scaleio-getinfo-extra/ |
Diretórios de dados de diagnóstico adicionais opcionais |
/tmp/scaleio-getinfo-backup/ |
Backups temporários de arquivos de configuração modificados (criados automaticamente) |
/opt/emc/scaleio/ |
Diretório de instalação do PowerFlex |
AMBIENTE
Pré-requisitos
- O utilitário deve ser executado como
root(ou um usuário com privilégios suficientes para ler arquivos de componentes, executar comandos de diagnóstico e acessar/proc,/syse assim por diante). - Utilitários padrão:
tar,gzip,stat,find,awk,sed,getopt(1)(reforçado),nice. - Opcional:
zip(para--zip),xz(para--xz),gdb/gcore(para--generate-cores)
Simultaneidade
Apenas uma instância de get_info.sh pode ser executado de cada vez. O utilitário verifica se há uma instância em execução existente usando pidof(1) e termina se uma instância for encontrada.
Tratamento de sinais
As armadilhas do utilitário INT, EXITe TERM durante a coleta de dados. Ao receber um sinal, ele:
- Restaura todos os arquivos de configuração de backup (por exemplo, configurações de geração do núcleo).
- Limpeza de diretórios temporários
- Saídas com status 1
O log de execução é preservado e seu caminho é impresso com o erro padrão.
Exemplos
Colete um pacote de suporte padrão:
get_info.sh
Faça streaming de um pacote por meio de uma conexão SSH, sem criar um arquivo de pacote no host remoto do PowerFlex:
ssh <host> 'get_info.sh --output-file=-' > getInfoDump-<host>.tgz
Use um diretório de trabalho diferente para evitar o enchimento /tmp:
get_info.sh --work-dir=/var/tmp
Inclua caminhos personalizados no pacote:
get_info.sh --collect-path=/opt/custom/app/logs --collect-path='/var/log/app*'
Colete o dump de núcleo mais recente somente para os componentes do SDS e MDM:
get_info.sh --collect-cores='mdm sds' --max-cores=1
Colete dados centrados em torno do horário de modificação de um arquivo principal, com um espaço de tempo personalizado:
get_info.sh --reference-core-file=/opt/emc/scaleio/sds/bin/core.1000 \
--minutes-before-event=10 \
--minutes-after-event=2