Pré-Disponibilidade Geral (Pré-GA): 26-02-2026

7 Monitorar Métricas do Besu com o Prometheus

Você pode usar Prometheus e kube-prometheus-stack para recuperar métricas dos nós do Besu em execução nos clusters do Kubernetes.

Para instalar o monitoramento, use o Helm, o kube-prometheus-stack e o arquivo de valores predefinidos (monitoring.yml) que é mantido no repositório Consensys/quorum-kubernetes. Nesse cenário, a Prometheus opera dentro de uma malha de serviços Istio e elimina métricas com segurança por meio de TLS mútuo. O pacote kube-prometheus-stack instala o software a seguir.
  • Prometheus
  • Operador Prometheus
  • Grafana
  • Alertmanager
  • Exportadores padrão do Kubernetes

Na arquitetura kube-prometheus-stack, a Prometheus descobre destinos de raspagem usando um recurso personalizado do Kubernetes chamado ServiceMonitor. Este recurso define os serviços a serem raspados, as portas e os caminhos que expõem métricas e a configuração para TLS e TLS mútuo. Os recursos do ServiceMonitor para componentes como kube-state-metrics e node-exporter são criados automaticamente quando você usa o Helm para instalar o kube-prometheus-stack. No entanto, para raspar as métricas do Oracle Blockchain Platform Enterprise Edition para Hyperledger Besu, você deve criar e gerenciar seus próprios recursos do ServiceMonitor.

Instale os pré-requisitos a seguir.
  • Helm v3.x. Você pode verificar sua versão do Helm executando o comando a seguir.
    helm version
  • kubectl
Você também deve ter acesso de linha de comando ao seu cluster do Kubernetes. Para obter mais informações, consulte Estabelecer Conexão com o Oracle Kubernetes Engine.
  1. Instale o kube-prometheus-stack usando o arquivo monitoring.yml compatível com o Besu.
    1. Digite o comando a seguir para fazer download do arquivo. O arquivo monitoring.yml é mantido no repositório Consensys/quorum-kubernetes.
      curl -o monitoring.yml \ 
      https://raw.githubusercontent.com/Consensys/quorum-kubernetes/master/helm/values/monitoring.yml 
    2. Se necessário, atualize a senha do administrador do Grafana e configure os receptores de alerta (por exemplo, e-mail ou Slack) no monitoring.yml antes da implantação.
    3. Se ainda não estiver presente, adicione o repositório Helm da comunidade Prometheus
      helm repo add prometheus-community https://prometheus-community.github.io/helm-charts 
      helm repo update 
    4. Instale a pilha de monitoramento em um namespace dedicado ao monitoramento. No comando a seguir, o namespace é chamado de monitoramento.
      helm install monitoring prometheus-community/kube-prometheus-stack \ 
        --version 34.10.0 \ 
        --namespace monitoring \ 
        --create-namespace \ 
        --values monitoring.yml 
    5. Execute o seguinte comando para verificar o status da implantação.
      kubectl get pods -n monitoring -l release=monitoring
    O processo de instalação implanta a pilha de monitoramento no namespace monitoring, aplica substituições do arquivo monitoring.yml para compatibilidade com o Besu e cria os recursos Kubernets ServiceMonitor padrão exigidos pela pilha.
  2. Adicione anotações Istio ao arquivo monitoring.yml para ativar a injeção sidecar Istio para Prometheus. Prometheus deve se juntar à malha Istio para raspar endpoints Besu através de TLS mútuo. Abra o arquivo monitoring.yml para edição e localize a seção a seguir.
    prometheus: 
      prometheusSpec: 
        podMetadata:
    Adicione as seguintes anotações Istio.
    prometheus: 
      prometheusSpec: 
        podMetadata: 
          annotations: 
            sidecar.istio.io/inject: "true" 
            sidecar.istio.io/userVolumeMount: | 
              [{"name": "istio-certs", "mountPath": "/etc/istio-certs", "readOnly": true}] 
            proxy.istio.io/config: | 
              proxyMetadata: 
                OUTPUT_CERTS: /etc/istio-certs 
              proxyMetadata.INBOUND_CAPTURE_PORTS: "" 
    Essas anotações adicionam o Prometheus à malha do Istio, configuram o Istio para gravar certificados mTLS de carga de trabalho em um volume compartilhado, impedem que o Envoy intercepte o tráfego de entrada do Prometheus e tornam os certificados gerados pelo Istio disponíveis para o contêiner do Prometheus.
  3. Adicione volumes e informações de montagens de volume ao arquivo monitoring.yml para montar certificados Istio no Prometheus. Localize o texto a seguir no arquivo monitoring.yml.
    Localize a seção volumes, que está inicialmente vazia.
        volumes: []
    Atualize a seção volumes conforme mostrado no texto a seguir.
        volumes: 
          - name: istio-certs 
            emptyDir: 
              medium: Memory 
     
    Localize a seção volumeMounts, que está inicialmente vazia.
        volumeMounts: []
    Atualize a seção volumeMounts conforme mostrado no texto a seguir.
        volumeMounts: 
          - name: istio-certs 
            mountPath: /etc/prom-certs 
            readOnly: true
    Os certificados gerados pelo Istio agora estão disponíveis no Prometheus em /etc/prom-certs/.
  4. Aplique a configuração atualizada.
    1. Atualize a versão existente do Helm com o arquivo de valores modificados.
      helm upgrade monitoring prometheus-community/kube-prometheus-stack \ 
        --namespace monitoring \ 
        --values monitoring.yml 
    2. Verifique se o pod Prometheus foi reiniciado e está sendo executado com um sidecar Istio.
      kubectl get pods -n monitoring | grep prometheus 
  5. Crie um recurso ServiceMonitor para métricas do Besu, usando o exemplo a seguir.
    apiVersion: monitoring.coreos.com/v1 
    kind: ServiceMonitor 
    metadata: 
      name: obp-besu-rpc-metrics 
      namespace: <besu-namespace> 
      labels: 
        release: monitoring   # Must match Prometheus serviceMonitorSelector 
    spec: 
      selector: 
        matchLabels: 
          app: besu 
          besu-role: rpc 
      namespaceSelector: 
        matchNames: 
          - <besu-namespace> 
      endpoints: 
        - port: metrics 
          path: /metrics 
          interval: 30s 
          scheme: https 
          tlsConfig: 
            caFile: /etc/prom-certs/root-cert.pem 
            certFile: /etc/prom-certs/cert-chain.pem 
            keyFile: /etc/prom-certs/key.pem 
            insecureSkipVerify: true 
    Os caminhos do certificado devem corresponder ao local montado (etc/prom-certs). O label release deve corresponder ao valor serviceMonitorSelector no Prometheus. O exemplo anterior raspa métricas de nós RPC (besu-role: rpc). Para raspar métricas de nós de inicialização, nós do validador ou nós de arquivamento, crie recursos ServiceMonitor separados e edite o label besu-role adequadamente (bootnode, validator ou archive).
  6. Verifique se as métricas estão sendo coletadas no Prometheus.
    1. Execute o comando a seguir para encaminhar a porta do serviço Prometheus.
      kubectl port-forward -n <namespace> prometheus-monitoring-kube-prometheus-prometheus-
    2. Abra http://localhost:9090 e selecione Status e, em seguida, Destinos. Confirme se os destinos Besu estão no estado UP.
    3. Execute um exemplo de consulta, como o exemplo a seguir.
      besu_blockchain_chain_head_transaction_count 
  7. Acesse o Grafana para confirmar se as métricas estão sendo coletadas. Execute o comando a seguir para encaminhar a porta do serviço Grafana.
    kubectl port-forward svc/monitoring-grafana -n <namespace> 3000:80 
    • URL: http://localhost:3000
    • Nome de usuário: admin
    • Execute o seguinte comando para recuperar a senha:
      kubectl get secret -n <namespace> monitoring-grafana \ 
      -o jsonpath="{.data.admin-password}" | base64 --decode ; echo