Skip to main content

Use metrics to monitor performance

Enable the Prometheus monitoring and alerting service for Web3Signer metrics using the --metrics-enabled option.

Web3Signer provides metrics for secp256k1 and BLS12-381 key types.

Install Prometheus

To use Prometheus with Web3Signer, install the Prometheus main component. On MacOS, install with Homebrew:

brew install prometheus

Setting up and running Prometheus with Web3Signer

To configure Prometheus and run with Web3Signer:

  1. Configure Prometheus to poll Web3Signer. For example, add the following YAML fragment to the scrape_configs block of the prometheus.yml file:

    Example configuration
    global:
    scrape_interval: 15s
    scrape_configs:
    - job_name: "prometheus"
    static_configs:
    - targets: ["localhost:9090"]
    - job_name: "web3signer-dev"
    scrape_timeout: 10s
    metrics_path: /metrics
    scheme: http
    static_configs:
    - targets: ["localhost:9001"]
  2. Start Teku by specifying the Web3Signer details.

  3. Start Web3Signer with the --metrics-enabled option.

    web3signer --key-store-path=/Users/me/keyFiles/ --metrics-enabled

    The HTTP, SIGNING, JVM, and PROCESS metrics categories are enabled by default. Use the --metrics-category command line option to update the available categories.

  4. In another terminal, run Prometheus specifying the prometheus.yml file:

    prometheus --config.file=prometheus.yml
  5. View the Prometheus graphical interface.

View Prometheus graphical interface

  1. Open a web browser to http://localhost:9090 to view the Prometheus graphical interface.

  2. Choose Graph from the menu bar and click the Console tab below.

  3. From the Insert metric at cursor drop-down, select a metric and click Execute. The values display.

The following Web3Signer metrics are available.

Filecoin JSON RPC metrics:

NameDefinition
<keytype>_signing_request_countNumber of signing requests made for the key type.
wallet_list_countNumber of Filecoin.WalletList API requests received.
wallet_has_countNumber of Filecoin.WalletHas API requests received.
wallet_sign_message_countNumber of Filecoin.WalletSignMessage API requests received.
wallet_sign_durationThe duration of signing operations.
total_request_countTotal number of Filecoin requests received.

HTTP API metrics:

NameDefinition
<keytype>_malformed_request_countNumber of requests received which had illegally formatted body.
<keytype>_signing_durationDuration of a signing event.
<keytype>_missing_identifier_countNumber of signing requests for which no keys were available.
signers_loaded_countTotal number of SECP256k1 and BLS12-381 keys loaded.
signing_private_key_retrieval_timeTime taken to retrieve BLS signing keys.

Eth2 Slashing protection metrics:

NameDefinition
permitted_signingsThe number of slashing checks which have reported 'safe to sign'.
prevented_signingsThe number of prevented signings due to violation of slashing conditions.

Process metrics:

NameDefinition
process_releaseThe number of the release version running.

Visualize collected data

Use Grafana to visualize the collected data. See the sample Web3Signer Grafana dashboard.