As ferramentas deste repositório apoiam a equipe da Rede Blockchain Brasil (RBB) no acompanhamento da operação da rede.
- Node.js 22.11
- NPM 10.9.0
- Python com pip no PATH
- Arquivo
config.json, criado a partir deconfig.json.example
copy config.json.example config.jsonOu no PowerShell:
Copy-Item config.json.example config.jsonDurante o npm install, o projeto tenta instalar automaticamente o pacote Python ethereum-etl via postinstall.
Campos obrigatorios:
GITHUB_RBB_TOKENPROXY_URLquando houver proxy
Campos do perfil Operacao:
INDICADORES_BASE_DIRDUMP_RBB_PRD_BASE_DIRDUMP_RBB_LAB_BASE_DIRVALIDATOR_RECOVERY_TIMEBLOCK_PRODUCTION_OLA_THRESHOLDSSSH.LABSSH.PROD
O token do GitHub deve ter os seguintes escopos para acesso aos repositorios privados:
repo
- Blocks/README.md - indicadores de producao de blocos.
- Issues/README.md - acompanhamento de incidentes em producao.
npm installPontos de entrada disponiveis:
node run.js- menu do gestor de operacaonode run-operacao.js- menu do gestor de operacaonpm run menunpm run menu:operacao
Use node run-operacao.js para acessar:
- Dump RBB (ethereum-etl) para pasta local
- Publica dump RBB para pasta de infra
- Proposicao de Blocos por Participe
- Estatisticas do Tempo de Producao de Blocos
- Tempo para Restauro de Validador Inoperante
- Votos de Consenso por extraData
- Issues em Producao
- Publicar indicadores na pasta final
- Gerar HTML Operacional
- Help
- 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 gravaresult/AAAA-MM/lab/Blocos_lab.csvpara Lab ouresult/AAAA-MM/prd/Blocos.csvpara Prd. - O dump local mensal e salvo em
result/dump/lab/AAAA-MMouresult/dump/prd/AAAA-MM, contendo os arquivosblocksAAAA-MM.csv,transactionsAAAA-MM.csv,receiptsAAAA-MM.csv,logsAAAA-MM.csv,contractsAAAA-MM.csv,tokensAAAA-MM.csvetoken_transfersAAAA-MM.csv. - A opcao 2 publica o dump bruto para as pastas de infra
DUMP_RBB_LAB_BASE_DIR/AAAA-MMeDUMP_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 padraotipoAAAA-MM.csv. - A opcao 4 agora permite Lab e Prd, procura primeiro
blocksAAAA-MM.csvemresult/dump/{lab|prd}/AAAA-MM, faz fallback paraDUMP_RBB_LAB_BASE_DIR/AAAA-MMouDUMP_RBB_PRD_BASE_DIR/AAAA-MMquando necessario, pede confirmacao da origem em ambos os casos e, se a origem for a rede, copia o arquivo pararesult/dump/{lab|prd}/AAAA-MMantes de gerarresult/AAAA-MM/{lab|prd}/Blocos-estat.txt. - A opcao 5 analisa
blocksAAAA-MM.csvdo ambiente escolhido, procura primeiro o dump local e faz fallback para a rede com a mesma logica da opcao 4, baixa apenasnodes_lab.jsonounodes_piloto.jsoncorrespondente ao ambiente emresult/AAAA-MM, usa o conjunto de validadores presente noextra_datapara 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 deferiados.csv, emite aviso quando faltar algum ano no calendario de feriados, desconsidera gaps globais acima de cinco minutos entre blocos consecutivos e gravaresult/AAAA-MM/{lab|prd}/validator_recovery_{lab|prd}.csvcom colunasorg,signal,initial_block,final_block,initial_timestamp,final_timestampno mesmo formato de timestamp do dump; no fim do periodo, validadores que permanecerem fora do consenso e estiverem comdeploymentStatus=retiredno nodes do ambiente sao ignorados. - A opcao 6 analisa
blocksAAAA-MM.csvdo ambiente escolhido, garante a presenca denodes_lab.jsonenodes_piloto.jsonemresult/AAAA-MM, decodifica oextra_datados blocos para procurar votos observados de inclusao ou exclusao de consenso e gravaresult/AAAA-MM/Votos-consenso-lab.csvouresult/AAAA-MM/Votos-consenso-prd.csvcom as datas em horario de Brasilia. - A opcao 7 consulta a API do GitHub no repositorio
RBBNet/incidentes, usaGITHUB_RBB_TOKENdoconfig.json, pede apenasMM/AAAAe gravaresult/AAAA-MM/Incidentes.csv. - A opcao 3 tambem baixa ou reutiliza
nodes_lab.jsonenodes_piloto.jsonemresult/AAAA-MM. - A opcao 8 publica para
INDICADORES_BASE_DIR/AAAA-MMos 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.jsonenodes_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 comBlocos.csv, outra para Lab comBlocos_lab.csv, duas tabelas de indisponibilidade de validadores a partir devalidator_recovery_prd.csvevalidator_recovery_lab.csvapenas do ultimo mes da faixa, usaIncidentes.csvdo ultimo mes da faixa quando existir, gravaIndicadores-operacao.htmlemresult/AAAA-MM-finale, se ja houver arquivo de mesmo nome emINDICADORES_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_THRESHOLDSdoconfig.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_TIMEnoconfig.json, em horas, separados por ambiente (labeprd). - As tabelas de restauro no HTML exibem
Organizacao,Inicio,FimeTempo fora, ordenadas alfabeticamente por organizacao, comInicioeFimformatados em horario de Brasilia e a linha inteira destacada conforme o sinal do evento (yellowoured). - 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.csvouBlocos-estat.txtem 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.
- 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.