Skip to content

RBBNet/indicadores-operacao

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

179 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RBB Indicadores

As ferramentas deste repositório apoiam a equipe da Rede Blockchain Brasil (RBB) no acompanhamento da operação da rede.

Requisitos

  • Node.js 22.11
  • NPM 10.9.0
  • Python com pip no PATH
  • Arquivo config.json, criado a partir de config.json.example
copy config.json.example config.json

Ou no PowerShell:

Copy-Item config.json.example config.json

Durante o npm install, o projeto tenta instalar automaticamente o pacote Python ethereum-etl via postinstall.

Configuracao

Campos obrigatorios:

  • GITHUB_RBB_TOKEN
  • PROXY_URL quando houver proxy

Campos do perfil Operacao:

  • INDICADORES_BASE_DIR
  • DUMP_RBB_PRD_BASE_DIR
  • DUMP_RBB_LAB_BASE_DIR
  • VALIDATOR_RECOVERY_TIME
  • BLOCK_PRODUCTION_OLA_THRESHOLDS
  • SSH.LAB
  • SSH.PROD

O token do GitHub deve ter os seguintes escopos para acesso aos repositorios privados:

  • repo

Ferramentas

Instalacao

npm install

Execucao

Pontos de entrada disponiveis:

  • node run.js - menu do gestor de operacao
  • node run-operacao.js - menu do gestor de operacao
  • npm run menu
  • npm run menu:operacao

Perfil Operacao

Use node run-operacao.js para acessar:

  1. Dump RBB (ethereum-etl) para pasta local
  2. Publica dump RBB para pasta de infra
  3. Proposicao de Blocos por Participe
  4. Estatisticas do Tempo de Producao de Blocos
  5. Tempo para Restauro de Validador Inoperante
  6. Votos de Consenso por extraData
  7. Issues em Producao
  8. Publicar indicadores na pasta final
  9. Gerar HTML Operacional
  10. Help
  11. Sair

Observacoes:

  • O dump local e as metricas de blocos usam tunel SSH com ambiente Lab ou Prd configurado no config.json.
  • A opcao 3 pede apenas o mes de referencia em MM/AAAA, usa internamente o primeiro e o ultimo dia do mes e grava result/AAAA-MM/lab/Blocos_lab.csv para Lab ou result/AAAA-MM/prd/Blocos.csv para Prd.
  • O dump local mensal e salvo em result/dump/lab/AAAA-MM ou result/dump/prd/AAAA-MM, contendo os arquivos blocksAAAA-MM.csv, transactionsAAAA-MM.csv, receiptsAAAA-MM.csv, logsAAAA-MM.csv, contractsAAAA-MM.csv, tokensAAAA-MM.csv e token_transfersAAAA-MM.csv.
  • A opcao 2 publica o dump bruto para as pastas de infra DUMP_RBB_LAB_BASE_DIR/AAAA-MM e DUMP_RBB_PRD_BASE_DIR/AAAA-MM, varrendo recursivamente o dump local do mes, copiando os arquivos encontrados para a raiz do destino e renomeando arquivos legados para o padrao tipoAAAA-MM.csv.
  • A opcao 4 agora permite Lab e Prd, procura primeiro blocksAAAA-MM.csv em result/dump/{lab|prd}/AAAA-MM, faz fallback para DUMP_RBB_LAB_BASE_DIR/AAAA-MM ou DUMP_RBB_PRD_BASE_DIR/AAAA-MM quando necessario, pede confirmacao da origem em ambos os casos e, se a origem for a rede, copia o arquivo para result/dump/{lab|prd}/AAAA-MM antes de gerar result/AAAA-MM/{lab|prd}/Blocos-estat.txt.
  • A opcao 5 analisa blocksAAAA-MM.csv do ambiente escolhido, procura primeiro o dump local e faz fallback para a rede com a mesma logica da opcao 4, baixa apenas nodes_lab.json ou nodes_piloto.json correspondente ao ambiente em result/AAAA-MM, usa o conjunto de validadores presente no extra_data para detectar entradas e saidas do consenso, acumula o tempo de inoperancia mesmo quando o validador sai do consenso (desde que ele ja tenha entrado no consenso no periodo), conta downtime apenas em service hours de Brasilia (09h00-18h59, segunda a sexta), desconsidera fins de semana e feriados de feriados.csv, emite aviso quando faltar algum ano no calendario de feriados, desconsidera gaps globais acima de cinco minutos entre blocos consecutivos e grava result/AAAA-MM/{lab|prd}/validator_recovery_{lab|prd}.csv com colunas org,signal,initial_block,final_block,initial_timestamp,final_timestamp no mesmo formato de timestamp do dump; no fim do periodo, validadores que permanecerem fora do consenso e estiverem com deploymentStatus=retired no nodes do ambiente sao ignorados.
  • A opcao 6 analisa blocksAAAA-MM.csv do ambiente escolhido, garante a presenca de nodes_lab.json e nodes_piloto.json em result/AAAA-MM, decodifica o extra_data dos blocos para procurar votos observados de inclusao ou exclusao de consenso e grava result/AAAA-MM/Votos-consenso-lab.csv ou result/AAAA-MM/Votos-consenso-prd.csv com as datas em horario de Brasilia.
  • A opcao 7 consulta a API do GitHub no repositorio RBBNet/incidentes, usa GITHUB_RBB_TOKEN do config.json, pede apenas MM/AAAA e grava result/AAAA-MM/Incidentes.csv.
  • A opcao 3 tambem baixa ou reutiliza nodes_lab.json e nodes_piloto.json em result/AAAA-MM.
  • A opcao 8 publica para INDICADORES_BASE_DIR/AAAA-MM os arquivos do escopo operacional: lab/Blocos_lab.csv, lab/validator_recovery_lab.csv, prd/Blocos.csv, prd/Blocos-estat.txt, prd/validator_recovery_prd.csv, Incidentes.csv, Comentarios.csv, nodes_lab.json e nodes_piloto.json, depois de mostrar ao usuario as listas local e de destino.
  • A opcao 9 gera o HTML operacional a partir dos arquivos em INDICADORES_BASE_DIR/AAAA-MM, monta uma tabela de producao para Prd com Blocos.csv, outra para Lab com Blocos_lab.csv, duas tabelas de indisponibilidade de validadores a partir de validator_recovery_prd.csv e validator_recovery_lab.csv apenas do ultimo mes da faixa, usa Incidentes.csv do ultimo mes da faixa quando existir, grava Indicadores-operacao.html em result/AAAA-MM-final e, se ja houver arquivo de mesmo nome em INDICADORES_BASE_DIR/AAAA-MM, pede confirmacao antes de sobrescrever a copia final.
  • As celulas de percentagem de producao no HTML sao coloridas conforme BLOCK_PRODUCTION_OLA_THRESHOLDS do config.json, usando a quantidade de partícipes/validadores presente no CSV do ambiente para escolher os limiares de alerta amarelo e vermelho.
  • Os limiares da opcao 5 sao lidos de VALIDATOR_RECOVERY_TIME no config.json, em horas, separados por ambiente (lab e prd).
  • As tabelas de restauro no HTML exibem Organizacao, Inicio, Fim e Tempo fora, ordenadas alfabeticamente por organizacao, com Inicio e Fim formatados em horario de Brasilia e a linha inteira destacada conforme o sinal do evento (yellow ou red).
  • Se nao houver OLA configurado para a quantidade de partícipes encontrada em um mes, o HTML continua sendo gerado sem coloracao para aquele caso e com aviso no terminal.
  • Se faltar Blocos.csv ou Blocos-estat.txt em algum mes do periodo, esse mes e ignorado na consolidacao do HTML operacional.

node run.js e npm run menu encaminham diretamente para o menu de operacao.

Valores Padrao

  • Datas: primeiro e ultimo dia do mes anterior
  • Periodos mensais: mes anterior
  • Username SSH: usuario logado no sistema
  • Caminhos de arquivo: sugestoes baseadas na estrutura atual do projeto

Para aceitar um valor padrao, basta pressionar ENTER sem digitar nada.

About

Scripts para geração de indicadores de operação da RBB

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors