From 420794a0fb30e3dbc73c62112f7d3b80afcdbe46 Mon Sep 17 00:00:00 2001 From: bowtiedbot Date: Sat, 26 Oct 2024 16:19:10 +0300 Subject: [PATCH] add: prometheus metrics endpoint for node and signer add command to run the environment with signer on README.md --- README.md | 8 +++++++- compose-files/common.yaml | 1 + compose-files/extra-services/signer.yaml | 2 ++ conf/mainnet/Config.toml.sample | 1 + conf/mainnet/Signer.toml.sample | 1 + conf/mocknet/Config.toml.sample | 1 + conf/mocknet/Signer.toml.sample | 1 + conf/testnet/Config.toml.sample | 1 + conf/testnet/Signer.toml.sample | 1 + docs/config.md | 2 ++ manage.sh | 2 ++ sample.env | 2 ++ 12 files changed, 22 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 189644b..0d37e5d 100644 --- a/README.md +++ b/README.md @@ -16,12 +16,18 @@ git clone https://github.com/stacks-network/stacks-blockchain-docker && cd stack cp sample.env .env ``` -### Sync from genesis +### Sync from genesis (no signer) ```bash ./manage.sh -n mainnet -a start ``` +### Sync from genesis (with signer) + +```bash +./manage.sh -n mainnet -a start -f signer +``` + ### Seed chainstate from Hiro Archiver Using data from the [Hiro Archiver](https://docs.hiro.so/hiro-archive) service, this script will download the latest files, extract them and restore the postgres data. \ diff --git a/compose-files/common.yaml b/compose-files/common.yaml index 2d7c86c..d16b9fa 100644 --- a/compose-files/common.yaml +++ b/compose-files/common.yaml @@ -24,6 +24,7 @@ services: ports: - ${STACKS_CORE_RPC_PORT:-20443}:${STACKS_CORE_RPC_PORT:-20443} - ${STACKS_CORE_P2P_PORT:-20444}:${STACKS_CORE_P2P_PORT:-20444} + - ${NODE_METRICS_PORT:-9153}:${NODE_METRICS_PORT:-9153} env_file: - ${SCRIPTPATH}/.env networks: diff --git a/compose-files/extra-services/signer.yaml b/compose-files/extra-services/signer.yaml index 044a978..d9629f2 100644 --- a/compose-files/extra-services/signer.yaml +++ b/compose-files/extra-services/signer.yaml @@ -7,6 +7,8 @@ services: volumes: - ${SCRIPTPATH}/conf/${NETWORK}:/src/stacks-signer - ${SCRIPTPATH}/persistent-data/${NETWORK}/stacks-signer:/root/stacks-signer/data + ports: + - ${SIGNER_METRICS_PORT:-9154}:${SIGNER_METRICS_PORT:-9154} env_file: - ${SCRIPTPATH}/.env networks: diff --git a/conf/mainnet/Config.toml.sample b/conf/mainnet/Config.toml.sample index 7a575a2..96f086d 100644 --- a/conf/mainnet/Config.toml.sample +++ b/conf/mainnet/Config.toml.sample @@ -3,6 +3,7 @@ working_dir = "/root/stacks-blockchain/data" rpc_bind = "0.0.0.0:20443" p2p_bind = "0.0.0.0:20444" bootstrap_node = "02196f005965cebe6ddc3901b7b1cc1aa7a88f305bb8c5893456b8f9a605923893@seed.mainnet.hiro.so:20444" +prometheus_bind = "0.0.0.0:9153" stacker = true [burnchain] diff --git a/conf/mainnet/Signer.toml.sample b/conf/mainnet/Signer.toml.sample index fbc2756..1cdd98b 100644 --- a/conf/mainnet/Signer.toml.sample +++ b/conf/mainnet/Signer.toml.sample @@ -1,5 +1,6 @@ node_host = "stacks-blockchain:20443" endpoint = "0.0.0.0:30000" +metrics_endpoint = "0.0.0.0:9154" network = "mainnet" db_path = "/root/stacks-signer/data/signer.sqlite" auth_password = "" diff --git a/conf/mocknet/Config.toml.sample b/conf/mocknet/Config.toml.sample index bc2d3b2..4d292f2 100644 --- a/conf/mocknet/Config.toml.sample +++ b/conf/mocknet/Config.toml.sample @@ -3,6 +3,7 @@ rpc_bind = "0.0.0.0:20443" p2p_bind = "0.0.0.0:20444" wait_time_for_microblocks = 10000 use_test_genesis_chainstate = true +prometheus_bind = "0.0.0.0:9153" stacker = true [burnchain] diff --git a/conf/mocknet/Signer.toml.sample b/conf/mocknet/Signer.toml.sample index cd3946e..802c5d6 100644 --- a/conf/mocknet/Signer.toml.sample +++ b/conf/mocknet/Signer.toml.sample @@ -1,5 +1,6 @@ node_host = "stacks-blockchain:20443" endpoint = "0.0.0.0:30000" +metrics_endpoint = "0.0.0.0:9154" network = "testnet" db_path = "/root/stacks-signer/data/signer.sqlite" auth_password = "" diff --git a/conf/testnet/Config.toml.sample b/conf/testnet/Config.toml.sample index ba08e23..a036f30 100644 --- a/conf/testnet/Config.toml.sample +++ b/conf/testnet/Config.toml.sample @@ -6,6 +6,7 @@ bootstrap_node = "029266faff4c8e0ca4f934f34996a96af481df94a89b0c9bd515f3536a9568 always_use_affirmation_maps = true require_affirmed_anchor_blocks = true pox_sync_sample_secs = 30 +prometheus_bind = "0.0.0.0:9153" stacker = true [burnchain] diff --git a/conf/testnet/Signer.toml.sample b/conf/testnet/Signer.toml.sample index cd3946e..802c5d6 100644 --- a/conf/testnet/Signer.toml.sample +++ b/conf/testnet/Signer.toml.sample @@ -1,5 +1,6 @@ node_host = "stacks-blockchain:20443" endpoint = "0.0.0.0:30000" +metrics_endpoint = "0.0.0.0:9154" network = "testnet" db_path = "/root/stacks-signer/data/signer.sqlite" auth_password = "" diff --git a/docs/config.md b/docs/config.md index 38f09e8..464ab1d 100644 --- a/docs/config.md +++ b/docs/config.md @@ -36,6 +36,7 @@ Most variables in `.env` shouldn't be modified, but there are a few you may wish | `SIGNER_PRIVATE_KEY` | The private key of the signer, on mainnet. | | | `TESTNET_SIGNER_PRIVATE_KEY` | The private key of the signer, on testnet. | | | `STACKS_SIGNER_PORT` | The port where the signer will expose an RPC endpoint for receiving events from your Stacks node | `30000` | +| `SIGNER_METRICS_PORT` | The port where the signer will expose an endpoint for reading metrics | `9154` | ### API Settings @@ -78,6 +79,7 @@ Most variables in `.env` shouldn't be modified, but there are a few you may wish | `STACKS_LOG_DEBUG` | Verbose output logs | `0` | | `STACKS_LOG_JSON` | Output logs in json format | `0` | | `STACKS_SHUTDOWN_TIMEOUT` | Time to wait for Stacks Blockchain to shutdown properly.
_recommended to leave this at the default_ | `1200` | +| `NODE_METRICS_PORT` | The port where the node will expose an endpoint for reading metrics | `9153` | ### Burnchain Settings diff --git a/manage.sh b/manage.sh index 5d73318..4f97967 100644 --- a/manage.sh +++ b/manage.sh @@ -482,6 +482,7 @@ update_configs(){ $(sed -i.tmp " /^node_host/s/.*/node_host = \"${STACKS_CORE_RPC_HOST}:${STACKS_CORE_RPC_PORT}\"/; /^endpoint/s/.*/endpoint = \"0.0.0.0:${STACKS_SIGNER_PORT}\"/; + /^metrics_endpoint/s/.*/metrics_endpoint = \"0.0.0.0:${SIGNER_METRICS_PORT}\"/; /^auth_password/s/.*/auth_password = \"${AUTH_TOKEN}\"/; /^stacks_private_key/s/.*/stacks_private_key = \"${SIGNER_PRIVATE_KEY}\"/; " "${SIGNER_TOML}" 2>&1) || { @@ -504,6 +505,7 @@ update_configs(){ /^peer_port/s/.*/peer_port = ${BTC_P2P_PORT}/; /^auth_token/s/.*/auth_token = \"${AUTH_TOKEN}\"/; /^endpoint = \"stacks-signer/s/.*/endpoint = \"stacks-signer:${STACKS_SIGNER_PORT}\"/; + /^prometheus_bind/s/.*/prometheus_bind = \"0.0.0.0:${NODE_METRICS_PORT}\"/; " "${CONFIG_TOML}" 2>&1) || { log_exit "Unable to update values in Config.toml file: ${COLCYAN}${CONFIG_TOML}${COLRESET}" } diff --git a/sample.env b/sample.env index 8513be9..68baec8 100644 --- a/sample.env +++ b/sample.env @@ -10,6 +10,7 @@ AUTH_TOKEN=1234 SIGNER_PRIVATE_KEY= TESTNET_SIGNER_PRIVATE_KEY= STACKS_SIGNER_PORT=30000 +SIGNER_METRICS_PORT=9154 ############################### ## Stacks Blockchain API @@ -46,6 +47,7 @@ STACKS_EXPORT_EVENTS_FILE=/tmp/event-replay/stacks-node-events.tsv RUST_BACKTRACE=full STACKS_LOG_DEBUG=0 STACKS_LOG_JSON=0 +NODE_METRICS_PORT=9153 # STACKS_EVENT_OBSERVER=stacks-blockchain-api:3700 ## ## How long to wait for stacks-blockchain event loop to stop (default is 20 minutes)