Informativa sulla documentazione provvisoria in attesa della messa a disposizione alla generalità dei clienti: 26-02-2026

7 Monitorano le metriche Besu con Prometheus

Puoi utilizzare Prometheus e kube-prometheus-stack per recuperare le metriche dai nodi Besu in esecuzione nei cluster Kubernetes.

Per installare il monitoraggio, utilizzare Helm, kube-prometheus-stack e il file dei valori predefiniti (monitoring.yml) gestito nel repository Consensys/quorum-kubernetes. In questo scenario, Prometheus opera all'interno di una mesh di servizio Istio e scarta in modo sicuro le metriche tramite TLS reciproco. Il pacchetto kube-prometheus-stack installa il seguente software.
  • Prometheus
  • Prometheus Operatore
  • Grafana
  • Gestore avvisi
  • Esportatori Kubernetes standard

Nell'architettura kube-prometheus-stack, Prometheus scopre le destinazioni scrape utilizzando una risorsa personalizzata Kubernetes denominata ServiceMonitor. Questa risorsa definisce i servizi da scrape, le porte e i percorsi che espongono le metriche e la configurazione per TLS e TLS reciproco. Le risorse ServiceMonitor per componenti quali kube-state-metrics e node-exporter vengono create automaticamente quando si utilizza Helm per installare kube-prometheus-stack. Tuttavia, per analizzare le metriche di Oracle Blockchain Platform Enterprise Edition per Hyperledger Besu, è necessario creare e gestire le proprie risorse ServiceMonitor.

Installare i prerequisiti riportati di seguito.
  • Helm v3.x. È possibile verificare la versione di Helm eseguendo il comando seguente.
    helm version
  • kubectl
È inoltre necessario disporre dell'accesso dalla riga di comando al cluster Kubernetes. Per ulteriori informazioni, consulta Connettiti a Oracle Kubernetes Engine.
  1. Installare kube-prometheus-stack utilizzando il file monitoring.yml compatibile con Besu.
    1. Immettere il comando seguente per scaricare il file. Il file monitoring.yml viene gestito nel repository Consensys/quorum-kubernetes.
      curl -o monitoring.yml \ 
      https://raw.githubusercontent.com/Consensys/quorum-kubernetes/master/helm/values/monitoring.yml 
    2. Se necessario, aggiornare la password dell'amministratore Grafana e configurare i ricevitori di avviso (ad esempio, e-mail o Slack) nel file monitoring.yml prima della distribuzione.
    3. Se non è già presente, aggiungere il repository Helm della community Prometheus
      helm repo add prometheus-community https://prometheus-community.github.io/helm-charts 
      helm repo update 
    4. Installare lo stack di monitoraggio in uno spazio di nomi dedicato al monitoraggio. Nel comando seguente, lo spazio di nomi è denominato monitoring.
      helm install monitoring prometheus-community/kube-prometheus-stack \ 
        --version 34.10.0 \ 
        --namespace monitoring \ 
        --create-namespace \ 
        --values monitoring.yml 
    5. Eseguire il comando seguente per controllare lo stato della distribuzione.
      kubectl get pods -n monitoring -l release=monitoring
    Il processo di installazione distribuisce lo stack di monitoraggio nello spazio di nomi monitoring, applica le sostituzioni dal file monitoring.yml per la compatibilità Besu e crea le risorse ServiceMonitor Kubernets standard richieste dallo stack.
  2. Aggiungere annotazioni Istio al file monitoring.yml per abilitare l'iniezione Istio sidecar per Prometheus. Prometheus deve unirsi alla rete Istio per raschiare gli endpoint di Besu tramite TLS reciproco. Aprire il file monitoring.yml per la modifica e cercare la sezione seguente.
    prometheus: 
      prometheusSpec: 
        podMetadata:
    Aggiungere le seguenti annotazioni 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: "" 
    Queste annotazioni aggiungono Prometheus alla mesh Istio, configura Istio per scrivere certificati mTLS del carico di lavoro in un volume condiviso, impedisce a Envoy di intercettare il traffico in entrata Prometheus e rende disponibili i certificati generati da Istio al contenitore Prometheus.
  3. Aggiungere le informazioni sui volumi e sulle attivazioni dei volumi al file monitoring.yml per attivare i certificati Istio in Prometheus. Trovare il testo seguente nel file monitoring.yml.
    Trovare la sezione volumes, che inizialmente è vuota.
        volumes: []
    Aggiornare la sezione volumes come mostrato nel testo seguente.
        volumes: 
          - name: istio-certs 
            emptyDir: 
              medium: Memory 
     
    Trovare la sezione volumeMounts, che inizialmente è vuota.
        volumeMounts: []
    Aggiornare la sezione volumeMounts come mostrato nel testo seguente.
        volumeMounts: 
          - name: istio-certs 
            mountPath: /etc/prom-certs 
            readOnly: true
    I certificati generati da Istio sono ora disponibili all'interno di Prometheus su /etc/prom-certs/.
  4. Applicare la configurazione aggiornata.
    1. Aggiornare la release Helm esistente con il file di valori modificato.
      helm upgrade monitoring prometheus-community/kube-prometheus-stack \ 
        --namespace monitoring \ 
        --values monitoring.yml 
    2. Verificare che il pod Prometheus sia stato riavviato e sia in esecuzione con un sidecar Istio.
      kubectl get pods -n monitoring | grep prometheus 
  5. Creare una risorsa ServiceMonitor per le metriche Besu, utilizzando l'esempio seguente.
    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 
    I percorsi del certificato devono corrispondere alla posizione di attivazione (etc/prom-certs). L'etichetta release deve corrispondere al valore serviceMonitorSelector in Prometheus. L'esempio precedente scarta le metriche dai nodi RPC (besu-role: rpc). Per eseguire lo scrape delle metriche dai nodi di boot, dai nodi validator o dai nodi di archivio, creare risorse ServiceMonitor separate e modificare di conseguenza l'etichetta besu-role (bootnode, validator o archive).
  6. Verificare che le metriche vengano raccolte in Prometheus.
    1. Eseguire il comando seguente per inoltrare la porta del servizio Prometheus.
      kubectl port-forward -n <namespace> prometheus-monitoring-kube-prometheus-prometheus-
    2. Aprire http://localhost:9090, quindi selezionare Stato, quindi Destinazioni. Verificare che le destinazioni Besu si trovino nello stato UP.
    3. Eseguire un'interrogazione di esempio, come nell'esempio seguente.
      besu_blockchain_chain_head_transaction_count 
  7. Accedi a Grafana per confermare la raccolta delle metriche. Eseguire il comando seguente per inoltrare la porta del servizio Grafana.
    kubectl port-forward svc/monitoring-grafana -n <namespace> 3000:80 
    • URL: http://localhost:3000
    • Nome utente: admin
    • Eseguire il comando riportato di seguito per recuperare la password.
      kubectl get secret -n <namespace> monitoring-grafana \ 
      -o jsonpath="{.data.admin-password}" | base64 --decode ; echo