Installing & configuring Prometheus
Download and install Prometheus
Download the latest version of Prometheus and run the checksum verification process to ensure that the downloaded file has not been tampered with.
cd
curl -LO https://github.com/prometheus/prometheus/releases/download/v2.55.0/prometheus-2.55.0.linux-amd64.tar.gz
echo "7a6b6d5ea003e8d59def294392c64e28338da627bf760cf268e788d6a8832a23 prometheus-2.55.0.linux-amd64.tar.gz" | sha256sum --checkExpected output: Verify output of the checksum verification
prometheus-2.55.0.linux-amd64.tar.gz: OKIf checksum is verified, extract the files and move them into the /usr/local/bin and /etc/prometheus directories for neatness and best practice. Then, clean up the duplicated copies.
tar xvf prometheus-2.55.0.linux-amd64.tar.gz
sudo cp prometheus-2.55.0.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-2.55.0.linux-amd64/promtool /usr/local/bin/
sudo cp -r prometheus-2.55.0.linux-amd64/consoles /etc/prometheus
sudo cp -r prometheus-2.55.0.linux-amd64/console_libraries /etc/prometheus
sudo rm -r prometheus-2.55.0.linux-amd64 prometheus-2.55.0.linux-amd64.tar.gzConfigure Prometheus 
Create an account (prometheus) without server access for Prometheus to run as a background service. This restricts potential attackers to only the Prometheus service in the unlikely event that they manage to infiltrate via a compromised client update.
sudo useradd --no-create-home --shell /bin/false prometheusCreate a directory for Prometheus to store the monitoring data. Then set the owner of this and the /etc/prometheus directory to prometheus so that this user can read and write to the directories.
sudo mkdir -p /var/lib/prometheus
sudo chown -R prometheus:prometheus /var/lib/prometheus
sudo chown -R prometheus:prometheus /etc/prometheusCreate a configuration file so that Prometheus knows where to pull data from.
sudo nano /etc/prometheus/prometheus.ymlPaste the configuration parameters below into the file:
1) General + execution client parameters:
global:
  scrape_interval: 15s
scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets:
          - localhost:9090
  - job_name: node_exporter
    static_configs:
      - targets:
          - localhost:9100
  - job_name: nethermind
    static_configs:
      - targets:
          - localhost:6060global:
  scrape_interval: 15s
scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets:
          - localhost:9090
  - job_name: node_exporter
    static_configs:
      - targets:
          - localhost:9100
  - job_name: 'besu'
    scrape_interval: 15s
    scrape_timeout: 10s
    metrics_path: /metrics
    scheme: http
    static_configs:
      - targets:
          - localhost:9545 global:
  scrape_interval: 15s
scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets:
          - localhost:9090
  - job_name: node_exporter
    static_configs:
      - targets:
          - localhost:9100
  - job_name: 'geth'
    scrape_interval: 15s
    scrape_timeout: 10s
    metrics_path: /debug/metrics/prometheus
    scheme: http
    static_configs:
      - targets:
          - localhost:6060 global:
  scrape_interval: 15s
scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets:
          - localhost:9090
  - job_name: node_exporter
    static_configs:
      - targets:
          - localhost:9100
  - job_name: 'erigon'
    scrape_interval: 15s
    scrape_timeout: 10s
    metrics_path: /debug/metrics/prometheus
    scheme: http
    static_configs:
      - targets:
          - localhost:6060 global:
  scrape_interval: 15s
scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets:
          - localhost:9090
  - job_name: node_exporter
    static_configs:
      - targets:
          - localhost:9100
  - job_name: 'reth'
    scrape_interval: 15s
    scrape_timeout: 10s
    metrics_path: "/"
    scheme: http
    static_configs:
      - targets:
         - localhost:6060 2) Consensus client parameters:
According to your selected consensus client, append the following block to the general + execution client parameters above.
  - job_name: "teku_beacon" #for consensus client
    scrape_timeout: 10s
    metrics_path: /metrics
    scheme: http
    static_configs:
      - targets: ["localhost:8009"]
  - job_name: "teku_validator" #for validator client
    scrape_timeout: 10s
    metrics_path: /metrics
    scheme: http
    static_configs:
      - targets: ["localhost:8108"]
  - job_name: 'Nimbus_beacon' #for consensus client
    metrics_path: /metrics
    static_configs:
      - targets: ['localhost:8009']
  - job_name: 'Nimbus_validator' #for validator client
    metrics_path: /metrics
    static_configs:
      - targets: ['localhost:8108']  - job_name: 'lodestar_beacon' #for consensus client
    metrics_path: /metrics
    static_configs:
      - targets: ['localhost:8009']
  - job_name: 'lodestar_validator' #for validator client
    metrics_path: /metrics
    static_configs:
      - targets: ['localhost:5064']  - job_name: 'lighthouse_beacon' #for consensus client
    metrics_path: /metrics    
    static_configs:
      - targets: ['localhost:8009']
  - job_name: 'lighthouse_validator' #for validator client
    metrics_path: /metrics
    static_configs:
      - targets: ['localhost:8108']  - job_name: 'prysm_beacon' #for consensus client   
    metrics_path: /metrics
    static_configs:
      - targets: ['localhost:8009']
  - job_name: 'prysm_validator' #for validator client
    metrics_path: /metrics  
    static_configs:
      - targets: ['localhost:8108']Once you're done, save with Ctrl+O and Enter, then exit with Ctrl+X.
Next, create a systemd configuration file for the Prometheus service to run in the background.
sudo nano /etc/systemd/system/prometheus.servicePaste the configuration parameters below into the file:
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=prometheus
Group=prometheus
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/var/lib/prometheus \
  --web.console.templates=/etc/prometheus/consoles \
  --web.console.libraries=/etc/prometheus/console_libraries
[Install]
WantedBy=multi-user.targetOnce you're done, save with Ctrl+O and Enter, then exit with Ctrl+X.
Start the Prometheus service
Reload the systemd daemon to register the changes made, start Prometheus, and check its status to make sure its running.
sudo systemctl daemon-reload
sudo systemctl start prometheus.service
sudo systemctl status prometheus.serviceExpected output: The output should say Prometheus is “active (running)”. Press CTRL-C to exit and Prometheus will continue to run.

Use the following command to check the logs for any warnings or errors:
sudo journalctl -fu prometheus -o cat | ccze -AExpected output:

Press CTRL-C to exit.
If the Prometheus service is running smoothly, we can now enable it to fire up automatically when rebooting the system.
sudo systemctl enable prometheus.serviceLast updated