Skip to main content
Blockchain Technology Background

Monitoramento do BESU

Grupo de Estudos Técnicos sobre Blockchain

Apresentação Técnica

2023

Blockchain Technology Background

Agenda

Tópicos

  • 1 Introdução ao BESU
  • 2 Arquitetura e Componentes
  • 3 Ferramentas de Monitoramento
  • 4 Métricas Importantes
  • 5 Implementação Prática

Pontos-chave

Configuração do ambiente
Dashboards e visualizações
Alertas e notificações
Troubleshooting comum
Melhores práticas
Blockchain Monitoring Dashboard
Blockchain Metrics Visualization

Introdução ao BESU

O que é BESU?

Hyperledger Besu é um cliente Ethereum de código aberto desenvolvido sob a licença Apache 2.0 e escrito em Java.

Pode ser executado em redes públicas ou privadas, oferecendo recursos avançados para empresas.

Características Principais

  • Compatibilidade com EVM (Ethereum Virtual Machine)
  • Suporte a múltiplos algoritmos de consenso
  • Permissionamento avançado
  • Monitoramento e métricas integradas
Comando de Inicialização
besu --network=dev \
  --miner-enabled=true \
  --miner-coinbase=0xfe3b557e8fb62b89f4916b721be55ceb828dbd73 \
  --rpc-http-enabled=true \
  --metrics-enabled=true
BESU Architecture Visualization

Arquitetura Básica

O BESU é composto por vários módulos que trabalham juntos para fornecer uma implementação completa do protocolo Ethereum.

Sua arquitetura modular permite fácil extensão e personalização para diferentes casos de uso.

Por que Monitorar?

  • Garantir disponibilidade da rede
  • Identificar problemas de desempenho
  • Otimizar recursos de infraestrutura
  • Detectar anomalias e ataques
Blockchain Monitoring Background

Arquitetura de Monitoramento

Componentes do Sistema

BESU Architecture Diagram

Arquitetura BESU

Fluxo de dados e monitoramento

Coleta de Métricas

  • Prometheus para coleta de métricas
  • Grafana para visualização
  • Alertmanager para notificações
  • Logs centralizados com ELK Stack

Configuração do Monitoramento

Para habilitar métricas no BESU, adicione os seguintes parâmetros:

Configuração BESU
besu --metrics-enabled=true \
  --metrics-host=0.0.0.0 \
  --metrics-port=9545 \
  --metrics-category=PROCESS \
  --metrics-push-enabled=true \
  --metrics-push-host=prometheus-server \
  --metrics-push-port=9091 \
  --metrics-push-interval=15

Configuração básica do Prometheus:

prometheus.yml
scrape_configs:
  - job_name: 'besu'
    scrape_interval: 15s
    static_configs:
      - targets: ['besu-node:9545']
    metrics_path: /metrics

Fluxo de Dados

Data Flow Diagram

1. Coleta

BESU expõe métricas

2. Armazenamento

Prometheus armazena

3. Visualização

Grafana exibe dashboards

Benefícios da Arquitetura

Escalabilidade horizontal
Alta disponibilidade
Fácil integração
Visualização customizável
Blockchain Monitoring Dashboard

Métricas Importantes

Métricas do Sistema

  • 1
    CPU e Memória

    Utilização de recursos do host

  • 2
    Disco I/O

    Operações de leitura/escrita

  • 3
    Rede

    Tráfego de entrada/saída

  • 4
    JVM

    Heap, garbage collection

Métricas da Blockchain

  • 1
    Altura do Bloco

    Número do bloco atual

  • 2
    Tempo de Bloco

    Intervalo entre blocos

  • 3
    Transações

    Taxa de transações por segundo

  • 4
    Peers

    Número de conexões P2P

Consulta Prometheus
rate(besu_blockchain_height[5m])
besu_peers
rate(besu_transaction_pool_transactions_added_total[1m])

Dashboard de Monitoramento

BESU Monitoring Dashboard

Exemplo de dashboard Grafana para monitoramento BESU

Regras de Alerta

Crítico

  • • Nó desconectado por > 5 minutos
  • • Utilização de CPU > 90% por 10 minutos
  • • Memória disponível < 10%

Alerta

  • • Peers < 3 por > 10 minutos
  • • Atraso de sincronização > 10 blocos
  • • Utilização de CPU > 75% por 15 minutos

Informativo

  • • Reinício do nó detectado
  • • Tempo de bloco > 2x média histórica
  • • Disco utilizado > 70%
Configuração AlertManager
groups:
- name: besu_alerts
  rules:
  - alert: BesuNodeDown
    expr: up{job="besu"} == 0
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "Besu node down"
      description: "Besu node has been down for more than 5 minutes"
Blockchain Monitoring Dashboard

Configuração Prometheus

Arquivo de Configuração

O arquivo prometheus.yml é o principal arquivo de configuração do Prometheus.

prometheus.yml
global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'besu'
    metrics_path: '/metrics'
    static_configs:
      - targets: ['besu-node:9545']
    
  - job_name: 'node-exporter'
    static_configs:
      - targets: ['node-exporter:9100']

Regras de Alerta

Configure regras de alerta para monitorar métricas críticas do BESU.

besu_rules.yml
groups:
- name: besu
  rules:
  - alert: BesuNodeDown
    expr: up{job="besu"} == 0
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "Besu node down"
      description: "Besu node has been down for more than 5 minutes"
      
  - alert: BesuHighCPU
    expr: rate(process_cpu_seconds_total{job="besu"}[5m]) > 0.8
    for: 10m
    labels:
      severity: warning
    annotations:
      summary: "High CPU usage"
      description: "Besu is using more than 80% CPU for over 10 minutes"

Docker Compose

Exemplo de configuração usando Docker Compose para Prometheus e Grafana.

docker-compose.yml
version: '3'
services:
  prometheus:
    image: prom/prometheus:latest
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - ./besu_rules.yml:/etc/prometheus/besu_rules.yml
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
    ports:
      - "9090:9090"
      
  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin
    volumes:
      - grafana-storage:/var/lib/grafana
      
volumes:
  grafana-storage:

Arquitetura de Monitoramento

Prometheus Architecture

Coleta

Prometheus scraper

Armazenamento

Time-series DB

Alertas

Alert Manager

Visualização

Grafana

Consultas PromQL

Exemplos de consultas PromQL para monitorar métricas do BESU.

Altura do Bloco

besu_blockchain_height

Taxa de Transações

rate(besu_transaction_pool_transactions_added_total[5m])

Uso de CPU

rate(process_cpu_seconds_total{job="besu"}[1m])

Uso de Memória

process_resident_memory_bytes{job="besu"} / 1024 / 1024

Dicas e Melhores Práticas

  • Ajuste o intervalo de coleta conforme a necessidade
  • Configure retenção de dados apropriada
  • Use service discovery para ambientes dinâmicos
  • Implemente alta disponibilidade para Prometheus
Blockchain Visualization Dashboard

Configuração Grafana

Configuração Inicial

Após instalar o Grafana, configure a fonte de dados do Prometheus:

  1. 1
    Acesse Grafana (http://localhost:3000)
  2. 2
    Login com admin/admin (padrão)
  3. 3
    Vá para Configuration > Data Sources
  4. 4
    Adicione Prometheus como fonte de dados

Configuração da Fonte de Dados

Configuração Prometheus
Name: Prometheus
Type: Prometheus
URL: http://prometheus:9090
Access: Server (default)
Scrape interval: 15s

Clique em "Save & Test" para verificar a conexão com o Prometheus.

Importar Dashboard

Você pode importar dashboards pré-configurados para o BESU:

Passos para Importar
  1. 1. Vá para Dashboards > Import
  2. 2. Cole o JSON do dashboard ou use o ID do Grafana.com
  3. 3. Selecione a fonte de dados Prometheus
  4. 4. Clique em "Import"

Dashboard BESU

Grafana Dashboard Example

Exemplo de dashboard Grafana para monitoramento BESU

Painéis Recomendados

Métricas de Nó

  • • Altura do bloco atual
  • • Peers conectados
  • • Tempo desde último bloco
  • • Status de sincronização

Métricas de Transações

  • • Taxa de transações/segundo
  • • Tamanho do pool de transações
  • • Tempo de confirmação
  • • Gás utilizado

Métricas de Sistema

  • • Uso de CPU/Memória
  • • Uso de disco
  • • Tráfego de rede
  • • Métricas JVM

Alertas

  • • Status de alertas ativos
  • • Histórico de alertas
  • • Tempo de resolução
  • • Frequência de alertas

Dicas e Melhores Práticas

  • Organize painéis por categorias lógicas
  • Use variáveis para dashboards dinâmicos
  • Configure alertas diretamente no Grafana
  • Exporte e versione seus dashboards
Blockchain Monitoring Dashboard

Exemplos de Código

Inicialização do BESU com Métricas

start-besu.sh
#!/bin/bash

besu --network=dev \
  --miner-enabled=true \
  --miner-coinbase=0xfe3b557e8fb62b89f4916b721be55ceb828dbd73 \
  --rpc-http-enabled=true \
  --rpc-http-api=ETH,NET,WEB3,ADMIN \
  --host-allowlist="*" \
  --rpc-http-cors-origins="*" \
  --metrics-enabled=true \
  --metrics-host=0.0.0.0 \
  --metrics-port=9545 \
  --metrics-category=PROCESS,PEERS,BLOCKCHAIN,SYNCHRONIZER,RPC,JVM \
  --data-path=/opt/besu/data

Configuração do Prometheus

prometheus.yml
global:
  scrape_interval: 15s
  evaluation_interval: 15s

alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - alertmanager:9093

rule_files:
  - "besu_rules.yml"

scrape_configs:
  - job_name: 'besu'
    metrics_path: '/metrics'
    static_configs:
      - targets: ['besu:9545']
    
  - job_name: 'node-exporter'
    static_configs:
      - targets: ['node-exporter:9100']

Regras de Alerta

besu_rules.yml
groups:
- name: besu_alerts
  rules:
  - alert: BesuNodeDown
    expr: up{job="besu"} == 0
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "Besu node down"
      description: "Besu node has been down for more than 5 minutes"
      
  - alert: BesuLowPeers
    expr: besu_peers < 3
    for: 10m
    labels:
      severity: warning
    annotations:
      summary: "Low peer count"
      description: "Besu has less than 3 peers for more than 10 minutes"

Docker Compose

docker-compose.yml
version: '3'
services:
  besu:
    image: hyperledger/besu:latest
    command:
      - --network=dev
      - --miner-enabled=true
      - --miner-coinbase=0xfe3b557e8fb62b89f4916b721be55ceb828dbd73
      - --rpc-http-enabled=true
      - --rpc-http-api=ETH,NET,WEB3,ADMIN
      - --host-allowlist=*
      - --rpc-http-cors-origins=*
      - --metrics-enabled=true
      - --metrics-host=0.0.0.0
      - --metrics-port=9545
    ports:
      - "8545:8545"
      - "9545:9545"
    volumes:
      - besu-data:/opt/besu/data
      
  prometheus:
    image: prom/prometheus:latest
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - ./besu_rules.yml:/etc/prometheus/besu_rules.yml
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
    ports:
      - "9090:9090"
      
  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin
    volumes:
      - grafana-storage:/var/lib/grafana
      
volumes:
  besu-data:
  grafana-storage:

Dashboard Exemplo

Grafana Dashboard Example

Visualização de métricas no Grafana

Consultas PromQL Úteis

Altura do Bloco

besu_blockchain_height

Taxa de Transações

rate(besu_transaction_pool_transactions_added_total[5m])

Uso de Memória

process_resident_memory_bytes{job="besu"} / 1024 / 1024
Blockchain Architecture Diagram

Casos de Uso

Redes Empresariais

Monitoramento de redes blockchain privadas em ambientes corporativos.

  • Garantia de SLAs para aplicações críticas
  • Auditoria de transações e conformidade
  • Detecção de anomalias em tempo real

Exemplo: Rede de Supply Chain

Monitoramento de nós BESU em uma rede de rastreamento de produtos, garantindo visibilidade e integridade dos dados em toda a cadeia.

Redes de Consórcio

Monitoramento de redes multi-organizacionais com múltiplos participantes.

  • Visibilidade compartilhada do estado da rede
  • Monitoramento de SLAs entre organizações
  • Identificação de gargalos de desempenho

Exemplo: Consórcio Financeiro

Monitoramento centralizado de uma rede BESU compartilhada entre instituições financeiras para liquidação de transações.

Arquitetura de Referência

BESU Monitoring Architecture

Arquitetura de monitoramento para redes BESU em produção

Benefícios do Monitoramento

Disponibilidade

Detecção proativa de falhas e problemas antes que afetem os usuários.

Desempenho

Otimização de recursos e identificação de gargalos para melhor throughput.

Segurança

Detecção de atividades suspeitas e tentativas de ataque à rede.

Auditoria

Registro histórico de eventos e métricas para análise e conformidade.

Métricas de ROI

  • Redução de 70% no tempo de resolução de incidentes
  • Aumento de 30% na disponibilidade da rede
  • Economia de 40% em custos operacionais
Blockchain Monitoring Dashboard

Conclusão

Principais Aprendizados

  • 1
    Monitoramento é Essencial

    O monitoramento adequado é crucial para garantir a confiabilidade, desempenho e segurança de redes BESU em produção.

  • 2
    Stack Tecnológico

    Prometheus e Grafana formam uma solução robusta e flexível para monitoramento de redes blockchain.

  • 3
    Métricas Críticas

    Identificar e monitorar as métricas certas permite detecção proativa de problemas e otimização contínua.

  • 4
    Automação de Alertas

    Alertas bem configurados reduzem o tempo de resposta a incidentes e minimizam o impacto de falhas.

Próximos Passos

  • Implementar monitoramento em ambiente de teste
  • Personalizar dashboards para casos de uso específicos
  • Explorar integração com sistemas de SIEM
  • Desenvolver estratégias de resposta a incidentes
  • Contribuir com a comunidade Hyperledger

Recursos Adicionais

  • Documentação Oficial

    hyperledger.org/use/besu

  • Repositório GitHub

    github.com/hyperledger/besu

  • Eventos e Webinars

    hyperledger.org/events

  • Comunidade

    chat.hyperledger.org

Contato

Tem dúvidas ou gostaria de discutir mais sobre monitoramento BESU?

grupo.estudos@blockchain.org
Discord: blockchain-estudos
blockchain-estudos.org

Obrigado!

Agradecemos sua participação neste estudo técnico sobre Monitoramento do BESU.

Próximo encontro: 15/06/2023 - "Smart Contracts Avançados"