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:
-
Configure Prometheus to poll Web3Signer. For example, add the following YAML fragment to the
scrape_configs
block of theprometheus.yml
file:Example configurationglobal:
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"] -
Start Teku by specifying the Web3Signer details.
-
Start Web3Signer with the
--metrics-enabled
option.web3signer --key-store-path=/Users/me/keyFiles/ --metrics-enabled
The
HTTP
,SIGNING
,JVM
, andPROCESS
metrics categories are enabled by default. Use the--metrics-category
command line option to update the available categories. -
In another terminal, run Prometheus specifying the
prometheus.yml
file:prometheus --config.file=prometheus.yml
-
View the Prometheus graphical interface.
Run Prometheus with Web3Signer in push mode
The --metrics-enabled
option enables Prometheus polling of Besu, but sometimes metrics are hard to poll (for example, when running inside Docker containers with varying IP addresses). To enable Besu to push metrics to a Prometheus push gateway, use the --metrics-push-enabled
option.
To configure Prometheus and run with Web3Signer pushing to a push gateway:
-
Configure Prometheus to read from a push gateway. For example, add the following YAML fragment to the
scrape_configs
block of theprometheus.yml
file:- job_name: push-gateway
metrics_path: /metrics
scheme: http
static_configs:
- targets:
- localhost:9091 -
Start the push gateway. You can deploy the push gateway using the Docker image:
docker pull prom/pushgateway
docker run -d -p 9091:9091 prom/pushgateway -
Start Web3Signer specifying options:
-
In another terminal, run Prometheus specifying the
prometheus.yml
file:prometheus --config.file=prometheus.yml
-
View the Prometheus graphical interface.
View Prometheus graphical interface
-
Open a web browser to
http://localhost:9090
to view the Prometheus graphical interface. -
Choose Graph from the menu bar and click the Console tab below.
-
From the Insert metric at cursor drop-down, select a metric and click Execute. The values display.
The following Web3Signer metrics are available.
HTTP API metrics:
Name | Definition |
---|---|
<keytype>_malformed_request_count | Number of requests received which had illegally formatted body. |
<keytype>_signing_duration | Duration of a signing event. |
<keytype>_missing_identifier_count | Number of signing requests for which no keys were available. |
signers_loaded_count | Total number of SECP256k1 and BLS12-381 keys loaded. |
signing_private_key_retrieval_time | Time taken to retrieve BLS signing keys. |
Eth2 Slashing protection metrics:
Name | Definition |
---|---|
permitted_signings | The number of slashing checks which have reported 'safe to sign'. |
prevented_signings | The number of prevented signings due to violation of slashing conditions. |
Process metrics:
Name | Definition |
---|---|
process_release | The number of the release version running. |
Visualize collected data
Use Grafana to visualize the collected data. See the sample Web3Signer Grafana dashboard.