From 98c88d293c0d4a215c6dd731baafa81a6f32e6c3 Mon Sep 17 00:00:00 2001 From: pablo Date: Tue, 26 Apr 2022 19:35:01 +0200 Subject: [PATCH 1/9] implement load keys on the fly fix typo implement changes remove double load envs implement auth-token for vc api use of auth-token fix token typo edit token implement load keys in web3signer start with nimbus pubkey files remove unused spaces fix typos --- build/Dockerfile | 39 ++--------- build/auth-token | 1 + build/entrypoint.sh | 157 +++++++++++++----------------------------- build/get-keys-cron | 2 - build/get-keys.sh | 97 -------------------------- dappnode_package.json | 9 +-- docker-compose.yml | 16 ++--- setup-wizard.yml | 40 +++++++++++ 8 files changed, 106 insertions(+), 255 deletions(-) create mode 100644 build/auth-token delete mode 100644 build/get-keys-cron delete mode 100755 build/get-keys.sh diff --git a/build/Dockerfile b/build/Dockerfile index 17d7a61..eda0e20 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -1,42 +1,11 @@ ARG UPSTREAM_VERSION -########### -# BUILDER # -########### -# Get jq binaries (curl is already in the consensys image) -FROM debian:bullseye-slim as builder -RUN apt update && apt install cron jq curl --yes +FROM statusim/nimbus-eth2:multiarch-${UPSTREAM_VERSION} -FROM statusim/nimbus-eth2:multiarch-v1.7.0 - -# Copy curl binary -COPY --from=builder /usr/bin/curl /usr/bin/curl -COPY --from=builder /usr/lib/x86_64-linux-gnu/libcurl* /usr/lib/x86_64-linux-gnu/ -COPY --from=builder /usr/lib/x86_64-linux-gnu/libng* /usr/lib/x86_64-linux-gnu/ -COPY --from=builder /usr/lib/x86_64-linux-gnu/librtmp* /usr/lib/x86_64-linux-gnu/ -COPY --from=builder /usr/lib/x86_64-linux-gnu/libssh2* /usr/lib/x86_64-linux-gnu/ -COPY --from=builder /usr/lib/x86_64-linux-gnu/libpsl* /usr/lib/x86_64-linux-gnu/ -COPY --from=builder /usr/lib/x86_64-linux-gnu/libldap* /usr/lib/x86_64-linux-gnu/ -COPY --from=builder /usr/lib/x86_64-linux-gnu/liblber* /usr/lib/x86_64-linux-gnu/ -COPY --from=builder /usr/lib/x86_64-linux-gnu/libbrotlidec* /usr/lib/x86_64-linux-gnu/ -COPY --from=builder /usr/lib/x86_64-linux-gnu/libsasl2* /usr/lib/x86_64-linux-gnu/ -COPY --from=builder /usr/lib/x86_64-linux-gnu/libbrotlicommon* /usr/lib/x86_64-linux-gnu/ -# Copy jq binary -COPY --from=builder /usr/bin/jq /usr/bin/jq -COPY --from=builder /usr/lib/x86_64-linux-gnu/libjq* /usr/lib/x86_64-linux-gnu/ -COPY --from=builder /usr/lib/x86_64-linux-gnu/libonig* /usr/lib/x86_64-linux-gnu/ -# Copy crontab and cron binary -COPY --from=builder /usr/sbin/cron /usr/sbin/cron -COPY --from=builder /usr/bin/crontab /usr/bin/crontab -COPY --from=builder /var/spool/cron /var/spool/cron - -# Setup cronjob -COPY get-keys-cron /etc/cron.d/ -COPY get-keys.sh /usr/local/bin/get-keys.sh - -# Apply cron job -RUN crontab /etc/cron.d/get-keys-cron +USER root +RUN apt update && apt install curl jq -y COPY entrypoint.sh /usr/bin/entrypoint.sh +COPY auth-token /home/user/nimbus-eth2/build/data/auth-token ENTRYPOINT [ "entrypoint.sh" ] \ No newline at end of file diff --git a/build/auth-token b/build/auth-token new file mode 100644 index 0000000..5cffb27 --- /dev/null +++ b/build/auth-token @@ -0,0 +1 @@ +eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.MxwOozSH-TLbW_XKepjyYDHm2IT8Ki0tD3AHuajfNMg \ No newline at end of file diff --git a/build/entrypoint.sh b/build/entrypoint.sh index f7e8f48..0485be1 100755 --- a/build/entrypoint.sh +++ b/build/entrypoint.sh @@ -1,119 +1,60 @@ #!/bin/bash -# -# 1. Fetches the public keys from the web3signer API -# 2. Checks if the public keys are valid -# 3. CUSTOM: create string with public keys comma separated -# 4. Starts the validator -ERROR="[ ERROR ]" -WARN="[ WARN ]" -INFO="[ INFO ]" - -# Var used to start the teku validator: pubkeys must be comma separated -PUBLIC_KEYS_COMMA_SEPARATED="" - -# Checks the following vars exist or exits: -# - BEACON_API_PORT -# - HTTP_WEB3PROVIDER -# - HTTP_WEB3SIGNER -# - PUBLIC_KEYS_FILE -function ensure_envs_exist() { - [ -z "${BEACON_API_PORT}" ] && echo "${ERROR} BEACON_API_PORT is not set" && exit 1 - [ -z "${HTTP_WEB3PROVIDER}" ] && echo "${ERROR} HTTP_WEB3PROVIDER is not set" && exit 1 - [ -z "${HTTP_WEB3SIGNER}" ] && echo "${ERROR} HTTP_WEB3SIGNER is not set" && exit 1 - [ -z "${PUBLIC_KEYS_FILE}" ] && echo "${ERROR} PUBLIC_KEYS_FILE is not set" && exit 1 -} - -# Get public keys from API keymanager: BASH ARRAY OF STRINGS -# - Endpoint: http://web3signer.web3signer-prater.dappnode:9000/eth/v1/keystores -# - Returns: -# { "data": [{ -# "validating_pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a", -# "derivation_path": "m/12381/3600/0/0/0", -# "readonly": true -# }] -# } -function get_public_keys() { - if PUBLIC_KEYS_API=$(curl -s -X GET \ - -H "Content-Type: application/json" \ - --max-time 10 \ - --retry 2 \ - --retry-delay 2 \ - --retry-max-time 40 \ - "${HTTP_WEB3SIGNER}/eth/v1/keystores"); then - if PUBLIC_KEYS_API=($(echo ${PUBLIC_KEYS_API} | jq -r '.data[].validating_pubkey')); then - if [ ! -z "$PUBLIC_KEYS_API" ]; then - echo "${INFO} found public keys: $PUBLIC_KEYS_API" - else - echo "${WARN} no public keys found" - fi - else - echo "${WARN} something wrong happened parsing the public keys" - fi - else - echo "${WARN} web3signer not available" +CLIENT="nimbus" +NETWORK="prater" +VALIDATOR_PORT=3500 +WEB3SIGNER_API="http://web3signer.web3signer-${NETWORK}.dappnode:9000" + +WEB3SIGNER_RESPONSE=$(curl -s -w "%{http_code}" -X GET -H "Content-Type: application/json" -H "Host: beacon-validator.${CLIENT}-${NETWORK}.dappnode" "${WEB3SIGNER_API}/eth/v1/keystores") +HTTP_CODE=${WEB3SIGNER_RESPONSE: -3} +CONTENT=$(echo "${WEB3SIGNER_RESPONSE}" | head -c-4) +if [ "$HTTP_CODE" != "200" ]; then + echo "Failed to get keystores from web3signer, HTTP code: ${HTTP_CODE}, content: ${CONTENT}" +else + PUBLIC_KEYS_WEB3SIGNER=($(echo "${CONTENT}" | jq -r 'try .data[].validating_pubkey')) + if [ ${#PUBLIC_KEYS_WEB3SIGNER[@]} -gt 0 ]; then + echo "found validators in web3signer, starting vc with pubkeys: ${PUBLIC_KEIES_WEB3SIGNER[*]}" + for PUBLIC_KEY in "${PUBLIC_KEYS_WEB3SIGNER[@]}"; do + # Docs: https://github.com/status-im/nimbus-eth2/pull/3077#issue-1049195359 + # create a keystore file with the following format + # { + # "version": "1", + # "description": "This is simple remote keystore file", + # "type": "web3signer", + # "pubkey": "0x8107ff6a5cfd1993f0dc19a6a9ec7dc742a528dd6f2e3e10189a4a6fc489ae6c7ba9070ea4e2e328f0d20b91cc129733", + # "remote": "http://127.0.0.1:15052", + # "ignore_ssl_verification": true + # } + + echo "creating keystore for pubkey: ${PUBLIC_KEY}" + mkdir -p validators/${PUBLIC_KEY} + echo "{\"version\":\"1\",\"description\":\"This is simple remote keystore file\",\"type\":\"web3signer\",\"pubkey\":\"${PUBLIC_KEY}\",\"remote\":\"${WEB3SIGNER_API}\",\"ignore_ssl_verification\":true}" > validators/${PUBLIC_KEY}/remote_keystore.json + done fi -} - -# Clean old file and writes new public keys file -# - by new line separated -# - creates file if it does not exist -function write_public_keys() { - # Clean file - rm -rf ${PUBLIC_KEYS_FILE} - touch ${PUBLIC_KEYS_FILE} - - echo "${INFO} writing public keys to file" - for PUBLIC_KEY in ${PUBLIC_KEYS_API}; do - if [ ! -z "${PUBLIC_KEY}" ]; then - echo "${INFO} adding public key: $PUBLIC_KEY" - echo "${PUBLIC_KEY}" >> ${PUBLIC_KEYS_FILE} - else - echo "${WARN} empty public key" - fi - done -} - -######## -# MAIN # -######## - -# Check if the envs exist -ensure_envs_exist - -# Get public keys from API keymanager -get_public_keys - -if [ ! -z "${PUBLIC_KEYS_API}" ]; then - # Write public keys to file - echo "${INFO} writing public keys file" - write_public_keys fi -echo "${INFO} starting cronjob" -cron - -# Concatenate EXTRA_OPTS string -[ ! -z "$INITIAL_STATE" ] && EXTRA_OPTS="${EXTRA_OPTS} --initial-state=${INITIAL_STATE}" - -exec /home/user/nimbus-eth2/build/nimbus_beacon_node \ - --network=prater \ - --data-dir=/home/user/nimbus-eth2/build/data/shared_prater_0 \ - --web3-url=wss://goerli.infura.io/ws/v3/3731cbfad17c4afcbc56ab89d5316f82 \ - --nat=extip:88.4.184.189 \ +# Run checkpoint sync script if provided +[[ -n $CHECKPOINT_SYNC_URL ]] && + /home/user/nimbus-eth2/build/nimbus_beacon_node trustedNodeSync \ + --network=${NETWORK} \ + --trusted-node-url=${CHECKPOINT_SYNC_URL} \ + --backfill=false \ + --data-dir=//home/user/nimbus-eth2/build/data +[[ -n $WEB3_BACKUP_URL ]] && EXTRA_OPTS="--web3-url=${WEB3_BACKUP_URL} ${EXTRA_OPTS}" + +exec -c /home/user/nimbus-eth2/build/nimbus_beacon_node \ + --network=${NETWORK} \ + --data-dir=/home/user/nimbus-eth2/build/data \ --log-level=info \ - --tcp-port=9000 \ - --udp-port=9000 \ - --rpc \ - --rpc-address=0.0.0.0 \ - --rpc-port=9190 \ + --rest \ + --rest-port=4500 \ + --rest-address=0.0.0.0 \ --metrics \ --metrics-address=0.0.0.0 \ --metrics-port=8008 \ - --rest \ - --rest-port=5052 \ - --rest-address=0.0.0.0 \ --keymanager \ - --keymanager-port=5052 \ + --keymanager-port=${VALIDATOR_PORT} \ --keymanager-address=0.0.0.0 \ - --keymanager-token-file=/home/user/nimbus-eth2/build/data/api_token \ \ No newline at end of file + --keymanager-token-file=/home/user/nimbus-eth2/build/data/auth-token \ + --graffiti=\"$GRAFFITI\" \ + $EXTRA_OPTS diff --git a/build/get-keys-cron b/build/get-keys-cron deleted file mode 100644 index 0e25098..0000000 --- a/build/get-keys-cron +++ /dev/null @@ -1,2 +0,0 @@ -# Run cron job to fetch public keys and redirect output to stdout. This file has permissions 0644. This file must have empty line at the end -* * * * * root /usr/local/bin/get-keys.sh > /proc/1/fd/1 2>&1 diff --git a/build/get-keys.sh b/build/get-keys.sh deleted file mode 100755 index 3c6f2f9..0000000 --- a/build/get-keys.sh +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/bash -# -# This script must fetch and compare the public keys returned from the web3signer api -# with the public keys in the public_keys.txt file used to start the validator -# if the public keys are different, the script will kill the process 1 to restart the process -# if the public keys are the same, the script will do nothing - -ERROR="[ ERROR-cronjob ]" -WARN="[ WARN-cronjob ]" -INFO="[ INFO-cronjob ]" -DEBUG="[ DEBUG-cronjob ]" - -# This var must be set here and must be equal to the var defined in the compose file -PUBLIC_KEYS_FILE="/home/usr/nimbus-eth2/build/public-keys/public_keys.txt" -HTTP_WEB3SIGNER="http://web3signer.web3signer-prater.dappnode:9000" - -# Get public keys in format: string[] -function get_public_keys() { - if PUBLIC_KEYS_API=$(curl -s -X GET \ - -H "Content-Type: application/json" \ - --max-time 10 \ - --retry 5 \ - --retry-delay 2 \ - --retry-max-time 40 \ - "${HTTP_WEB3SIGNER}/eth/v1/keystores"); then - if PUBLIC_KEYS_API=($(echo ${PUBLIC_KEYS} | jq -r '.data[].validating_pubkey')); then - if [ ! -z "$PUBLIC_KEYS_API" ]; then - echo "${INFO} found public keys: $PUBLIC_KEYS_API" - else - echo "${WARN} no public keys found" - PUBLIC_KEYS_API=() - fi - else - { echo "${ERROR} something wrong happened parsing the public keys"; exit 1; } - fi - else - { echo "${ERROR} web3signer not available"; exit 1; } - fi -} - -# Reads public keys from file by new line separated and converts to string array -function read_old_public_keys() { - if [ -f ${PUBLIC_KEYS_FILE} ]; then - echo "${INFO} reading public keys from file" - PUBLIC_KEYS_OLD=($(cat ${PUBLIC_KEYS_FILE} | tr '\n' ' ')) - else - echo "${WARN} file ${PUBLIC_KEYS_FILE} not found" - PUBLIC_KEYS_OLD=() - fi -} - -# Compares the public keys from the file with the public keys from the api -# - kill main process if public keys from web3signer api does not contain the public keys from the file -# - kill main process if public keys from file does not contain the public keys from the web3signer api -# - kill main process if bash array length different -function compare_public_keys() { - echo "${DEBUG} comparing public keys" - echo "${DEBUG} public keys from file: $PUBLIC_KEYS_OLD" - echo "${DEBUG} public keys from api: $PUBLIC_KEYS_API" - echo "${DEBUG} public keys length from file: ${#PUBLIC_KEYS_OLD[@]}" - echo "${DEBUG} public keys length from api: ${#PUBLIC_KEYS_API[@]}" - - # compare array lentghs - if [ ${#PUBLIC_KEYS_OLD[@]} -ne ${#PUBLIC_KEYS_API[@]} ]; then - echo "${WARN} public keys from file and api are different. Killing process to restart" - kill 1 - exit 0 - else - if [ ${#PUBLIC_KEYS_API[@]} -eq 0 ]; then - echo "${INFO} public keys from file and api are empty. Not comparision needed" - exit 0 - else - echo "${INFO} same number of public keys, comparing" - # Compare public keys - for i in "${PUBLIC_KEYS_OLD[@]}"; do - if [[ "${PUBLIC_KEYS_API[@]}" =~ "${i}" ]]; then - echo "${INFO} public key ${i} found in api" - else - echo "${WARN} public key ${i} from file not found in api. Killing process to restart" - kill 1 - exit 0 - fi - done - fi - fi -} - -######## -# MAIN # -######## - -echo "${INFO} starting cronjob" -get_public_keys -read_old_public_keys -compare_public_keys -echo "${INFO} finished cronjob" -exit 0 \ No newline at end of file diff --git a/dappnode_package.json b/dappnode_package.json index 83d4ec4..89a3346 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "nimbus-prater.dnp.dappnode.eth", "version": "0.1.0", - "upstreamVersion": "v1.7.0", + "upstreamVersion": "v22.4.0", "upstreamRepo": "status-im/nimbus-eth2", "upstreamArg": "UPSTREAM_VERSION", "architectures": ["linux/amd64"], @@ -31,9 +31,10 @@ "readme": "https://github.com/dappnode/DAppNodePackage-nimbus-prater", "docs": "https://www.nimbusproject.org/docs" }, - "license": "GLP-3.0", - "requirements": { - "minimumDappnodeVersion": "0.2.52" + "chain": { + "driver": "ethereum-beacon-chain", + "serviceName": "beacon-validator", + "portNumber": 4500 }, "dependencies": { "web3signer-prater.dnp.dappnode.eth": "latest", diff --git a/docker-compose.yml b/docker-compose.yml index 14fe345..ab9865f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,26 +1,24 @@ version: "3.6" services: - nimbus_beacon_node: + beacon-validator: build: context: ./build args: - UPSTREAM_VERSION: v1.7.0 + UPSTREAM_VERSION: v22.4.0 restart: unless-stopped stop_grace_period: 1m environment: - BEACON_API_PORT: 3500 + LOG_TYPE: INFO HTTP_WEB3PROVIDER: "http://goerli-geth.dappnode:8545" - HTTP_WEB3SIGNER: "http://web3signer.web3signer-prater.dappnode:9000" - PUBLIC_KEYS_FILE: /home/usr/nimbus-eth2/build/public-keys/public_keys.txt - INITIAL_STATE: "" + GRAFFITI: validating_from_DAppNode + WEB3_BACKUP: "" + CHECKPOINT_SYNC_URL: "" EXTRA_OPTS: "" ports: - 9000/tcp - 9000/udp volumes: - "nimbus-prater-data:/home/user/nimbus-eth2/build/data" - - "nimbus-prater-keys:/home/usr/nimbus-eth2/build/public-keys" - image: "nimbus_beacon_node.nimbus-prater.dnp.dappnode.eth:0.1.0" + image: "beacon-validator.nimbus-prater.dnp.dappnode.eth:0.1.0" volumes: nimbus-prater-data: {} - nimbus-prater-keys: {} diff --git a/setup-wizard.yml b/setup-wizard.yml index 8b13789..6b8e3ee 100644 --- a/setup-wizard.yml +++ b/setup-wizard.yml @@ -1 +1,41 @@ +version: "2" +fields: + - id: GRAFFITI + target: + type: environment + name: GRAFFITI + service: beacon-validator + title: Graffiti + maxLength: 32 + description: >- + Add a string to your proposed blocks, which will be seen on the block explorer + - id: HTTP_WEB3PROVIDER + target: + type: environment + name: HTTP_WEB3PROVIDER + service: beacon-validator + title: Eth1.x node URL + description: >- + URL to the Eth1.x node need for the Beacon chain. + - id: checkpointSyncUrl + target: + type: environment + name: CHECKPOINT_SYNC_URL + service: beacon-validator + title: Checkpoint for fast sync + description: >- + To get Teku up and running in only a few minutes, you can start Teku from a recent finalized checkpoint state rather than syncing from genesis. This is substantially **faster** and consumes **less resources** than syncing from genesis, while still providing all the same features. Be sure you are using a trusted node for the fast sync. Check [Teku docs](https://docs.teku.consensys.net/en/latest/HowTo/Get-Started/Checkpoint-Start/) + Get your checkpoint sync from [infura](https://infura.io/) (i.e https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@eth2-beacon-prater.infura.io) + required: false + - id: web3Backup + target: + type: environment + name: WEB3_BACKUP + service: beacon-validator + title: Add a backup web3 provider + description: >- + It's a good idea to add a backup web3 provider in case your main one goes down. For example, if your primary EL client is a local Geth, but you want to use Infura as a backup. + Get your web3 backup from [infura](https://infura.io/) (i.e https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@eth.mainnet.infura.io) + required: false + \ No newline at end of file From d04e31e7ae7861714a97aef48504ba9d67a0dd24 Mon Sep 17 00:00:00 2001 From: Pablo Date: Wed, 11 May 2022 00:24:05 +0200 Subject: [PATCH 2/9] fix typosadd gha --- .github/workflows/auto_check.yml | 20 ++++++++++++++++++++ .github/workflows/main.yml | 31 +++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 .github/workflows/auto_check.yml create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/auto_check.yml b/.github/workflows/auto_check.yml new file mode 100644 index 0000000..08ea40e --- /dev/null +++ b/.github/workflows/auto_check.yml @@ -0,0 +1,20 @@ +name: Bump upstream version + +on: + schedule: + - cron: "00 */4 * * *" + push: + branches: + - "master" + - "main" + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - run: npx @dappnode/dappnodesdk github-action bump-upstream + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PINATA_API_KEY: ${{ secrets.PINATA_API_KEY }} + PINATA_SECRET_API_KEY: ${{ secrets.PINATA_SECRET_API_KEY }} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..9a585db --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,31 @@ +name: "Main" +on: + pull_request: + push: + branches: + - "master" + - "main" + - "v[0-9]+.[0-9]+.[0-9]+" + paths-ignore: + - "README.md" + +jobs: + build-test: + runs-on: ubuntu-latest + name: Build test + if: github.event_name != 'push' + steps: + - uses: actions/checkout@v2 + - run: npx @dappnode/dappnodesdk build --skip_save + + release: + name: Release + runs-on: ubuntu-latest + if: github.event_name == 'push' + steps: + - uses: actions/checkout@v2 + - name: Publish + run: npx @dappnode/dappnodesdk publish patch --dappnode_team_preset + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DEVELOPER_ADDRESS: "0xf35960302a07022aba880dffaec2fdd64d5bf1c1" From e8fe2fc9d74103ad91fa5561df1b63a667c95575 Mon Sep 17 00:00:00 2001 From: Pablo Date: Wed, 11 May 2022 09:58:02 +0200 Subject: [PATCH 3/9] typo --- build/entrypoint.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/entrypoint.sh b/build/entrypoint.sh index 0485be1..283118b 100755 --- a/build/entrypoint.sh +++ b/build/entrypoint.sh @@ -13,7 +13,7 @@ if [ "$HTTP_CODE" != "200" ]; then else PUBLIC_KEYS_WEB3SIGNER=($(echo "${CONTENT}" | jq -r 'try .data[].validating_pubkey')) if [ ${#PUBLIC_KEYS_WEB3SIGNER[@]} -gt 0 ]; then - echo "found validators in web3signer, starting vc with pubkeys: ${PUBLIC_KEIES_WEB3SIGNER[*]}" + echo "found validators in web3signer, starting vc with pubkeys: ${PUBLIC_KEYS_WEB3SIGNER[*]}" for PUBLIC_KEY in "${PUBLIC_KEYS_WEB3SIGNER[@]}"; do # Docs: https://github.com/status-im/nimbus-eth2/pull/3077#issue-1049195359 # create a keystore file with the following format @@ -28,7 +28,7 @@ else echo "creating keystore for pubkey: ${PUBLIC_KEY}" mkdir -p validators/${PUBLIC_KEY} - echo "{\"version\":\"1\",\"description\":\"This is simple remote keystore file\",\"type\":\"web3signer\",\"pubkey\":\"${PUBLIC_KEY}\",\"remote\":\"${WEB3SIGNER_API}\",\"ignore_ssl_verification\":true}" > validators/${PUBLIC_KEY}/remote_keystore.json + echo "{\"version\":\"1\",\"description\":\"This is simple remote keystore file\",\"type\":\"web3signer\",\"pubkey\":\"${PUBLIC_KEY}\",\"remote\":\"${WEB3SIGNER_API}\",\"ignore_ssl_verification\":true}" >validators/${PUBLIC_KEY}/remote_keystore.json done fi fi From 47fd6b648fa992242b9e2673d3164bef3ea7ee19 Mon Sep 17 00:00:00 2001 From: Pablo Date: Wed, 11 May 2022 11:19:23 +0200 Subject: [PATCH 4/9] better message is host not authorized --- build/entrypoint.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build/entrypoint.sh b/build/entrypoint.sh index 283118b..ec8491c 100755 --- a/build/entrypoint.sh +++ b/build/entrypoint.sh @@ -8,7 +8,9 @@ WEB3SIGNER_API="http://web3signer.web3signer-${NETWORK}.dappnode:9000" WEB3SIGNER_RESPONSE=$(curl -s -w "%{http_code}" -X GET -H "Content-Type: application/json" -H "Host: beacon-validator.${CLIENT}-${NETWORK}.dappnode" "${WEB3SIGNER_API}/eth/v1/keystores") HTTP_CODE=${WEB3SIGNER_RESPONSE: -3} CONTENT=$(echo "${WEB3SIGNER_RESPONSE}" | head -c-4) -if [ "$HTTP_CODE" != "200" ]; then +if [ "${HTTP_CODE}" == "403" ] && [ "${CONTENT}" == "*Host not authorized*" ]; then + echo "${CLIENT} is not authorized to access the Web3Signer API. Start without pubkeys" +elif [ "$HTTP_CODE" != "200" ]; then echo "Failed to get keystores from web3signer, HTTP code: ${HTTP_CODE}, content: ${CONTENT}" else PUBLIC_KEYS_WEB3SIGNER=($(echo "${CONTENT}" | jq -r 'try .data[].validating_pubkey')) From 124aa0eeaa494c6e0927111a1af19bb8c15698ed Mon Sep 17 00:00:00 2001 From: pablomendez_95 Date: Wed, 11 May 2022 10:17:52 +0000 Subject: [PATCH 5/9] fix validators path --- build/entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/entrypoint.sh b/build/entrypoint.sh index ec8491c..a8b4cc5 100755 --- a/build/entrypoint.sh +++ b/build/entrypoint.sh @@ -30,7 +30,7 @@ else echo "creating keystore for pubkey: ${PUBLIC_KEY}" mkdir -p validators/${PUBLIC_KEY} - echo "{\"version\":\"1\",\"description\":\"This is simple remote keystore file\",\"type\":\"web3signer\",\"pubkey\":\"${PUBLIC_KEY}\",\"remote\":\"${WEB3SIGNER_API}\",\"ignore_ssl_verification\":true}" >validators/${PUBLIC_KEY}/remote_keystore.json + echo "{\"version\":\"1\",\"description\":\"This is simple remote keystore file\",\"type\":\"web3signer\",\"pubkey\":\"${PUBLIC_KEY}\",\"remote\":\"${WEB3SIGNER_API}\",\"ignore_ssl_verification\":true}" >/home/user/nimbus-eth2/build/data/validators/${PUBLIC_KEY}/remote_keystore.json done fi fi From 28044ae7b78d319065c10fd4ec3bb0d55a08ea94 Mon Sep 17 00:00:00 2001 From: pablomendez_95 Date: Wed, 11 May 2022 10:26:26 +0000 Subject: [PATCH 6/9] setup metrics --- nimbus-grafana-dashboard.json | 3924 +++++++++++++++++++++++++++++++++ prometheus-targets.json | 11 + 2 files changed, 3935 insertions(+) create mode 100644 nimbus-grafana-dashboard.json create mode 100644 prometheus-targets.json diff --git a/nimbus-grafana-dashboard.json b/nimbus-grafana-dashboard.json new file mode 100644 index 0000000..99bf846 --- /dev/null +++ b/nimbus-grafana-dashboard.json @@ -0,0 +1,3924 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": 16, + "links": [], + "panels": [ + { + "cacheTimeout": null, + "colorBackground": true, + "colorValue": false, + "colors": [ + "#37872D", + "#37872D", + "#37872D" + ], + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 1, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 95, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "20%", + "prefix": "", + "prefixFontSize": "20%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false, + "ymax": null, + "ymin": null + }, + "tableColumn": "", + "targets": [ + { + "expr": "1", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": "0,0", + "timeFrom": null, + "timeShift": null, + "title": "Validator Earnings", + "type": "singlestat", + "valueFontSize": "20%", + "valueMaps": [ + { + "op": "=", + "text": "", + "value": "null" + }, + { + "op": "=", + "text": "", + "value": "1" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": true, + "colorValue": false, + "colors": [ + "#F2495C", + "#F2495C", + "#F2495C" + ], + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 1, + "w": 6, + "x": 12, + "y": 0 + }, + "id": 109, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "20%", + "prefix": "", + "prefixFontSize": "20%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false, + "ymax": null, + "ymin": null + }, + "tableColumn": "", + "targets": [ + { + "expr": "1", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": "", + "timeFrom": null, + "timeShift": null, + "title": "Nimbus Client Status", + "type": "singlestat", + "valueFontSize": "20%", + "valueMaps": [ + { + "op": "=", + "text": "", + "value": "null" + }, + { + "op": "=", + "text": "", + "value": "1" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": true, + "colorValue": false, + "colors": [ + "#1F60C4", + "#1F60C4", + "#1F60C4" + ], + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 1, + "w": 6, + "x": 18, + "y": 0 + }, + "id": 56, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "20%", + "prefix": "", + "prefixFontSize": "20%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false, + "ymax": null, + "ymin": null + }, + "tableColumn": "", + "targets": [ + { + "expr": "1", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": "", + "timeFrom": null, + "timeShift": null, + "title": "Network Status", + "type": "singlestat", + "valueFontSize": "20%", + "valueMaps": [ + { + "op": "=", + "text": "", + "value": "null" + }, + { + "op": "=", + "text": "", + "value": "1" + } + ], + "valueName": "current" + }, + { + "datasource": null, + "description": "Sum of all validator balances.", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 4, + "mappings": [], + "min": 0, + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "ETH" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 1 + }, + "id": 94, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "values": false + } + }, + "pluginVersion": "7.0.0", + "targets": [ + { + "expr": "attached_validator_balance_total{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}/1000000000", + "instant": true, + "interval": "", + "legendFormat": "vbal", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Total Validator Balance (ETH)", + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": null, + "description": "Total ETH return on the initial effective stake of active local validators.", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 4, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "nullValueMode": "connected", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "#F2495C", + "value": null + }, + { + "color": "#F2CC0C", + "value": 0 + }, + { + "color": "#73BF69", + "value": 0.0001 + } + ] + }, + "unit": "ETH" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 1 + }, + "id": 52, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "fieldOptions": { + "calcs": [ + "lastNotNull" + ] + }, + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "values": false + } + }, + "pluginVersion": "7.0.0", + "targets": [ + { + "expr": "sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"})/1000000000-(count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)*32)", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Total Earnings (ETH)", + "type": "stat" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorPostfix": true, + "colorValue": true, + "colors": [ + "#F2495C", + "#FADE2A", + "#73BF69" + ], + "datasource": null, + "decimals": 4, + "description": "Total percentage return on the initial effective stake of active local validators. Excess deposits will be reflected as earnings.", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "percentunit", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 1 + }, + "id": 70, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "pluginVersion": "6.7.2", + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true, + "ymax": null, + "ymin": null + }, + "tableColumn": "", + "targets": [ + { + "expr": "(sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"})/1000000000-(count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)*32))/(count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)*32) ", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": "-0, 0.0001", + "timeFrom": null, + "timeShift": null, + "title": "Total Return", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "columns": [], + "datasource": null, + "description": "Validator balances by public key. ", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fontSize": "100%", + "gridPos": { + "h": 6, + "w": 3, + "x": 9, + "y": 1 + }, + "id": 54, + "interval": "", + "links": [], + "pageSize": null, + "pluginVersion": "6.5.1", + "showHeader": true, + "sort": { + "col": 4, + "desc": true + }, + "styles": [ + { + "alias": "Time", + "align": "auto", + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "pattern": "Time", + "type": "hidden" + }, + { + "alias": "", + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "job", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "public key", + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "decimals": 2, + "link": false, + "linkTargetBlank": false, + "linkTooltip": "", + "linkUrl": "", + "pattern": "pubkey", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "instance", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "", + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "mappingType": 1, + "pattern": "__name__", + "thresholds": [], + "type": "hidden", + "unit": "short" + }, + { + "alias": "attested", + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 0, + "mappingType": 1, + "pattern": "Value #A", + "thresholds": [], + "type": "number", + "unit": "short" + }, + { + "alias": "aggregated", + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 0, + "mappingType": 1, + "pattern": "Value #C", + "thresholds": [], + "type": "number", + "unit": "short" + }, + { + "alias": "proposed", + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 0, + "mappingType": 1, + "pattern": "Value #E", + "thresholds": [], + "type": "number", + "unit": "short" + }, + { + "alias": "failed attestations", + "align": "auto", + "colorMode": "value", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 0, + "mappingType": 1, + "pattern": "Value #B", + "thresholds": [], + "type": "number", + "unit": "short" + }, + { + "alias": "failed aggregations", + "align": "auto", + "colorMode": "value", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 0, + "mappingType": 1, + "pattern": "Value #D", + "thresholds": [], + "type": "number", + "unit": "short" + }, + { + "alias": "balance", + "align": "auto", + "colorMode": "value", + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 4, + "link": false, + "linkTargetBlank": false, + "linkTooltip": "", + "linkUrl": "", + "mappingType": 1, + "pattern": "Value #F", + "thresholds": [ + "24", + "32" + ], + "type": "number", + "unit": "short" + }, + { + "alias": "pubkey", + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 2, + "link": false, + "linkTargetBlank": true, + "linkTooltip": "", + "linkUrl": "", + "mappingType": 1, + "pattern": "pubkey_short", + "thresholds": [], + "type": "string", + "unit": "short" + }, + { + "alias": "last inclusion distance", + "align": "auto", + "colorMode": null, + "colors": [ + "#F2495C", + "#FF9830", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 0, + "mappingType": 1, + "pattern": "Value #H", + "thresholds": [ + "" + ], + "type": "number", + "unit": "short" + }, + { + "alias": "status", + "align": "auto", + "colorMode": null, + "colors": [ + "rgba(245, 54, 54, 0.9)", + "rgba(237, 129, 40, 0.89)", + "rgba(50, 172, 45, 0.97)" + ], + "dateFormat": "YYYY-MM-DD HH:mm:ss", + "decimals": 0, + "mappingType": 1, + "pattern": "Value #J", + "thresholds": [], + "type": "string", + "unit": "none", + "valueMaps": [ + { + "text": "unknown", + "value": "0" + }, + { + "text": "deposited", + "value": "1" + }, + { + "text": "pending", + "value": "2" + }, + { + "text": "active", + "value": "3" + }, + { + "text": "exiting", + "value": "4" + }, + { + "text": "slashing", + "value": "5" + }, + { + "text": "exited", + "value": "6" + } + ] + } + ], + "targets": [ + { + "expr": "label_replace(max by(pubkey) (attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}/1000000000), \"pubkey_short\", \"$1\", \"pubkey\", \"(.{8}).*\") ", + "format": "table", + "instant": true, + "interval": "", + "legendFormat": "balance", + "refId": "F" + }, + { + "expr": "label_replace(max by(pubkey) (validator_balance{job=\"validator\"}), \"pubkey\", \"$1\", \"pubkey_short\", \"(.{8}).*\") ", + "interval": "", + "legendFormat": "", + "refId": "G" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Validator Balances", + "transform": "table", + "type": "table-old" + }, + { + "datasource": null, + "description": "Number of beacon nodes to which this node is connected.", + "fieldConfig": { + "defaults": { + "custom": {}, + "mappings": [], + "min": 0, + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "orange", + "value": 10 + }, + { + "color": "yellow", + "value": 20 + }, + { + "color": "green", + "value": 30 + } + ] + }, + "unit": "peers" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 1 + }, + "id": 98, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "values": false + } + }, + "pluginVersion": "7.0.0", + "targets": [ + { + "expr": "libp2p_peers{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Peer Count", + "type": "stat" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorPostfix": true, + "colorPrefix": false, + "colorValue": true, + "colors": [ + "#F2495C", + "rgba(237, 129, 40, 0.89)", + "#299c46" + ], + "datasource": null, + "decimals": 1, + "description": "The length of time the beacon chain process has been running", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "h", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 1 + }, + "id": 45, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "pluginVersion": "6.7.2", + "postfix": "(s)", + "postfixFontSize": "80%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false, + "ymax": null, + "ymin": null + }, + "tableColumn": "{instance=\"127.0.0.1:8008\", job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "targets": [ + { + "expr": "(time()-process_start_time_seconds{job=\"beacon-validator.nimbus-prater.dappnode:8008\"})/3600", + "instant": true, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": "48,96", + "timeFrom": null, + "timeShift": null, + "title": "Beacon Uptime", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "datasource": null, + "description": "Count of active validators.", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 0, + "displayName": "", + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 1 + }, + "id": 71, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "center", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + } + }, + "pluginVersion": "7.0.0", + "targets": [ + { + "expr": "beacon_active_validators{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} ", + "instant": true, + "interval": "", + "legendFormat": "active", + "refId": "C" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Total Validator Count", + "type": "stat" + }, + { + "datasource": null, + "description": "A metric expressing the distance between the current finalized epoch and the expected finalized epoch based on the genesis time. 100% means the expected and current finalized epochs are the same. The metric reaches 0% when the finalized epoch is 25 epochs behind the expected epoch.", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 0, + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "orange", + "value": 0.88 + }, + { + "color": "#EAB839", + "value": 0.92 + }, + { + "color": "green", + "value": 0.96 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 1 + }, + "id": 73, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "pluginVersion": "7.0.0", + "targets": [ + { + "expr": "clamp_min((1-(4*((finalization_delay{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}-2)/100))),0)", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Network Liveness", + "type": "stat" + }, + { + "datasource": "Prometheus", + "description": "Sum of all validator balances multiplied by the price of ETH in USD.", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 2, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "currencyUSD" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 4 + }, + "id": 100, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "values": false + } + }, + "pluginVersion": "7.0.0", + "targets": [ + { + "expr": "ethusd ", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "ethusd", + "refId": "A" + }, + { + "expr": "attached_validator_balance_total{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}/1000000000", + "hide": false, + "instant": true, + "interval": "", + "legendFormat": "balance", + "refId": "B" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Total Validator Balance (USD)", + "transformations": [ + { + "id": "calculateField", + "options": { + "alias": "total_validator_value", + "binary": { + "left": "ethusd", + "operator": "*", + "reducer": "sum", + "right": "balance" + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + }, + "replaceFields": true + } + } + ], + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": null, + "description": "Total earnings in USD.", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 2, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "min": 0, + "nullValueMode": "connected", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "currencyUSD" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 4 + }, + "id": 101, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "fieldOptions": { + "calcs": [ + "lastNotNull" + ] + }, + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "values": false + } + }, + "pluginVersion": "7.0.0", + "targets": [ + { + "expr": "sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"})/1000000000-(count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)*32)", + "instant": true, + "interval": "", + "legendFormat": "total_balance", + "refId": "A" + }, + { + "expr": "ethusd", + "instant": true, + "interval": "", + "legendFormat": "ethusd", + "refId": "B" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Total Earnings (USD)", + "transformations": [ + { + "id": "calculateField", + "options": { + "alias": "Total Earnings (USD)", + "binary": { + "left": "total_balance", + "operator": "*", + "reducer": "sum", + "right": "ethusd" + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + }, + "replaceFields": true + } + } + ], + "type": "stat" + }, + { + "cacheTimeout": null, + "datasource": null, + "description": "Price of ETH in USD.", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 2, + "mappings": [ + { + "id": 0, + "op": "=", + "text": "N/A", + "type": 1, + "value": "null" + } + ], + "min": 0, + "nullValueMode": "connected", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "currencyUSD" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 4 + }, + "id": 102, + "interval": null, + "links": [], + "maxDataPoints": 100, + "options": { + "colorMode": "value", + "fieldOptions": { + "calcs": [ + "lastNotNull" + ] + }, + "graphMode": "area", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "values": false + } + }, + "pluginVersion": "7.0.0", + "targets": [ + { + "expr": "ethusd", + "instant": true, + "interval": "", + "legendFormat": "ethusd", + "refId": "B" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "ETH Price (USD)", + "transformations": [ + { + "id": "calculateField", + "options": { + "alias": "Total Earnings (USD)", + "binary": { + "left": "total_balance", + "operator": "*", + "reducer": "sum", + "right": "ethusd" + }, + "mode": "binary", + "reduce": { + "reducer": "sum" + }, + "replaceFields": true + } + } + ], + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "The number of peers to which the beacon chain is connected", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 4, + "gridPos": { + "h": 6, + "w": 6, + "x": 12, + "y": 4 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "avg": true, + "current": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "libp2p_peers{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "interval": "", + "legendFormat": "peers", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Peers", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "Peers", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "datasource": null, + "description": "Justified, and finalized epochs. In this order, these two values should be sequentially decreasing.", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 0, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(135, 135, 135)", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 4 + }, + "id": 27, + "links": [], + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "pluginVersion": "7.0.0", + "targets": [ + { + "expr": "beacon_current_justified_epoch{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "instant": true, + "interval": "", + "legendFormat": "justified", + "refId": "C" + }, + { + "expr": "beacon_finalized_epoch {job=\"beacon-validator.nimbus-prater.dappnode:8008\"} ", + "format": "time_series", + "instant": true, + "interval": "", + "legendFormat": "finalized", + "refId": "D" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Epochs", + "type": "stat" + }, + { + "datasource": null, + "description": "Current slot and head slot", + "fieldConfig": { + "defaults": { + "custom": {}, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "rgb(135, 135, 135)", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 4 + }, + "id": 29, + "links": [], + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "center", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + } + }, + "pluginVersion": "7.0.0", + "targets": [ + { + "expr": "beacon_slot{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "instant": true, + "interval": "", + "legendFormat": "current slot", + "refId": "A" + }, + { + "expr": "beacon_head_slot{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "instant": true, + "interval": "", + "legendFormat": "head slot", + "refId": "B" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Slots", + "type": "stat" + }, + { + "cacheTimeout": null, + "colorBackground": true, + "colorValue": false, + "colors": [ + "#8F3BB8", + "#8F3BB8", + "#8F3BB8" + ], + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 1, + "w": 12, + "x": 0, + "y": 7 + }, + "id": 57, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "20%", + "prefix": "", + "prefixFontSize": "20%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false, + "ymax": null, + "ymin": null + }, + "tableColumn": "", + "targets": [ + { + "expr": "1", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": "0,0", + "timeFrom": null, + "timeShift": null, + "title": "Earnings Rates", + "type": "singlestat", + "valueFontSize": "20%", + "valueMaps": [ + { + "op": "=", + "text": "", + "value": "null" + }, + { + "op": "=", + "text": "", + "value": "1" + } + ], + "valueName": "current" + }, + { + "aliasColors": { + "active validators": "rgba(239, 132, 60, 0.57)" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "Number of pending and existing validators over time. Pending validators are shown as positive values, while exiting validators are shown as negative values.", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 6, + "x": 18, + "y": 7 + }, + "hiddenSeries": false, + "id": 64, + "interval": "", + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "6.7.2", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "exiting", + "transform": "negative-Y" + }, + { + "alias": "active validators", + "yaxis": 2 + }, + { + "alias": "slashing", + "transform": "negative-Y" + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "beacon_pending_deposits{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "interval": "", + "legendFormat": "pending", + "refId": "B" + }, + { + "expr": "beacon_active_validators{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "interval": "", + "legendFormat": "active validators", + "refId": "D" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Validators", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": null, + "format": "short", + "label": "validators", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "decimals": null, + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorPostfix": true, + "colorValue": true, + "colors": [ + "#F2495C", + "#FADE2A", + "#73BF69" + ], + "datasource": null, + "decimals": 4, + "description": "Increase in all local validator balances over the last hour", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "ETH", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 8 + }, + "id": 77, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "pluginVersion": "6.7.2", + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "#5794F2", + "show": true, + "ymax": null, + "ymin": 0 + }, + "tableColumn": "", + "targets": [ + { + "expr": "sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"})/1000000000 - sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 1h != 0)/1000000000 - (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)) + (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 1h > 16))", + "instant": false, + "interval": "", + "intervalFactor": 3, + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": "-0, 0.0001", + "timeFrom": null, + "timeShift": null, + "title": "Hourly Earnings", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorPostfix": true, + "colorValue": true, + "colors": [ + "#d44a3a", + "#FADE2A", + "#73BF69" + ], + "datasource": null, + "decimals": 4, + "description": "Increase in all local validator balances over the last day", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "ETH", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 8 + }, + "id": 48, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "pluginVersion": "6.7.2", + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true, + "ymax": null, + "ymin": 0 + }, + "tableColumn": "", + "targets": [ + { + "expr": "sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"})/1000000000 - sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 1d != 0)/1000000000 - (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)) + (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 1d > 16))", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": "-0, 0.0001", + "timeFrom": null, + "timeShift": null, + "title": "Daily Earnings", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorPostfix": true, + "colorValue": true, + "colors": [ + "#F2495C", + "#FADE2A", + "#73BF69" + ], + "datasource": null, + "decimals": 4, + "description": "Increase in all local validator balances over the last week", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "ETH", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 8 + }, + "id": 49, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "pluginVersion": "6.7.3", + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true, + "ymax": null, + "ymin": 0 + }, + "tableColumn": "", + "targets": [ + { + "expr": "sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"})/1000000000 - sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 7d != 0)/1000000000 - (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)) + (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 7d > 16))", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": "-0, 0.0001", + "timeFrom": null, + "timeShift": null, + "title": "Weekly Earnings", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorPostfix": true, + "colorValue": true, + "colors": [ + "#F2495C", + "#FADE2A", + "#299c46" + ], + "datasource": null, + "decimals": 4, + "description": "Increase in all local validator balances over the last month", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "ETH", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 8 + }, + "id": 50, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "pluginVersion": "6.7.2", + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true, + "ymax": null, + "ymin": 0 + }, + "tableColumn": "", + "targets": [ + { + "expr": "sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"})/1000000000 - sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 30d != 0)/1000000000 - (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)) + (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 30d > 16))", + "instant": false, + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": "-0, 0.0001", + "timeFrom": null, + "timeShift": null, + "title": "Monthly Earnings", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "datasource": null, + "description": "Total number of block proposals and attestations made by local validators since the last restart of the beacon chain.", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 10 + }, + "id": 103, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "pluginVersion": "7.0.0", + "targets": [ + { + "expr": "beacon_blocks_proposed_total{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "instant": true, + "interval": "", + "legendFormat": "proposals", + "refId": "B" + }, + { + "expr": "beacon_attestations_sent_total{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "interval": "", + "legendFormat": "attestations", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Validator Activity", + "type": "stat" + }, + { + "datasource": null, + "description": "Number of proposer and attester slashings received by the local beacon chain since the last restart of the beacon chain.", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 10 + }, + "id": 107, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "pluginVersion": "7.0.0", + "targets": [ + { + "expr": "beacon_proposer_slashings_received_total{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "interval": "", + "legendFormat": "proposer", + "refId": "A" + }, + { + "expr": "beacon_attester_slashings_received_total{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "instant": true, + "interval": "", + "legendFormat": "attester", + "refId": "B" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Slashings Received", + "type": "stat" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorPostfix": true, + "colorValue": true, + "colors": [ + "#F2495C", + "#FADE2A", + "#73BF69" + ], + "datasource": null, + "decimals": 4, + "description": "Percentage increase in all local validator balances over the last hour", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "percentunit", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 0, + "y": 11 + }, + "id": 82, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "pluginVersion": "6.7.2", + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true, + "ymax": null, + "ymin": 0 + }, + "tableColumn": "annualized hourly return", + "targets": [ + { + "expr": "((sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}) - sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 1h != 0) - (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)) + (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 1h > 16)))/(32 * avg_over_time(count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)[1h:])))/1000000000 * 365 * 24", + "hide": false, + "interval": "", + "legendFormat": "annualized hourly return", + "refId": "B" + } + ], + "thresholds": "-0, 0.0001", + "timeFrom": null, + "timeShift": null, + "title": "Hourly Return, Annualized", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorPostfix": true, + "colorValue": true, + "colors": [ + "#F2495C", + "#FADE2A", + "#73BF69" + ], + "datasource": null, + "decimals": 4, + "description": "Percentage increase in all local validator balances over the last day", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "percentunit", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 3, + "y": 11 + }, + "id": 69, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "pluginVersion": "6.7.2", + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true, + "ymax": null, + "ymin": 0 + }, + "tableColumn": "annualized daily return", + "targets": [ + { + "expr": "((sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}) - sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 1d != 0) - (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)) + (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 1d > 16)))/(32 * avg_over_time(count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)[1d:])))/1000000000 * 365", + "hide": false, + "interval": "", + "legendFormat": "annualized daily return", + "refId": "B" + } + ], + "thresholds": "-0, 0.0001", + "timeFrom": null, + "timeShift": null, + "title": "Daily Return, Annualized", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorPostfix": true, + "colorValue": true, + "colors": [ + "#F2495C", + "#FADE2A", + "#73BF69" + ], + "datasource": null, + "decimals": 4, + "description": "Percentage increase in all local validator balances over the last week", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "percentunit", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 6, + "y": 11 + }, + "id": 83, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "pluginVersion": "6.7.2", + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true, + "ymax": null, + "ymin": 0 + }, + "tableColumn": "annualized weekly return", + "targets": [ + { + "expr": "((sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}) - sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 7d != 0) - (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)) + (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 7d > 16)))/(32 * avg_over_time(count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)[7d:])))/1000000000 * (365/7)", + "hide": false, + "interval": "", + "legendFormat": "annualized weekly return", + "refId": "B" + } + ], + "thresholds": "-0, 0.0001", + "timeFrom": null, + "timeShift": null, + "title": "Weekly Return, Annualized", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "cacheTimeout": null, + "colorBackground": false, + "colorPostfix": true, + "colorValue": true, + "colors": [ + "#F2495C", + "#FADE2A", + "#73BF69" + ], + "datasource": null, + "decimals": 4, + "description": "Percentage increase in all local validator balances over the last month", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "percentunit", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 9, + "y": 11 + }, + "id": 84, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "pluginVersion": "6.7.2", + "postfix": "", + "postfixFontSize": "50%", + "prefix": "", + "prefixFontSize": "50%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": true, + "lineColor": "rgb(31, 120, 193)", + "show": true, + "ymax": null, + "ymin": 0 + }, + "tableColumn": "", + "targets": [ + { + "expr": "((sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}) - sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 30d != 0) - (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)) + (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 30d > 16)))/(32 * avg_over_time(count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)[30d:])))/1000000000 * (365/30)", + "hide": false, + "interval": "", + "legendFormat": "annualized monthly return", + "refId": "B" + } + ], + "thresholds": "-0, 0.0001", + "timeFrom": null, + "timeShift": null, + "title": "Monthly Return, Annualized", + "type": "singlestat", + "valueFontSize": "80%", + "valueMaps": [ + { + "op": "=", + "text": "N/A", + "value": "null" + } + ], + "valueName": "current" + }, + { + "datasource": null, + "description": "Number of voluntary exits received by the local beacon chain since the last restart of the beacon chain.", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 12, + "y": 13 + }, + "id": 106, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "pluginVersion": "7.0.0", + "targets": [ + { + "expr": "beacon_voluntary_exits_received_total{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "instant": true, + "interval": "", + "legendFormat": "voluntary exits received", + "refId": "B" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Voluntary Exits Received", + "type": "stat" + }, + { + "datasource": null, + "description": "Number of failed web3 requests since the last restart of the beacon chain.", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 0, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 0.0001 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 15, + "y": 13 + }, + "id": 108, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "pluginVersion": "7.0.0", + "targets": [ + { + "expr": "failed_web3_requests_total{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "instant": true, + "interval": "", + "legendFormat": "failed requests", + "refId": "B" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Failed web3 Requests", + "type": "stat" + }, + { + "datasource": null, + "description": "Current number of pending validators", + "fieldConfig": { + "defaults": { + "custom": {}, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 18, + "y": 13 + }, + "id": 88, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "pluginVersion": "7.0.0", + "targets": [ + { + "expr": "beacon_pending_deposits{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "instant": true, + "interval": "", + "legendFormat": "pending", + "refId": "B" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Pending Validator Queue", + "type": "stat" + }, + { + "datasource": null, + "description": "Estimated length of time until all pending validators have cleared the queue.", + "fieldConfig": { + "defaults": { + "custom": {}, + "decimals": 2, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "m" + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 3, + "x": 21, + "y": 13 + }, + "id": 87, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "center", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + } + }, + "pluginVersion": "7.0.0", + "targets": [ + { + "expr": "((beacon_pending_deposits{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}/4)*6.4)", + "instant": true, + "interval": "", + "legendFormat": "pending", + "refId": "B" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Pending Queue Length", + "type": "stat" + }, + { + "cacheTimeout": null, + "colorBackground": true, + "colorValue": false, + "colors": [ + "rgb(105, 70, 0)", + "rgb(105, 70, 0)", + "rgb(105, 70, 0)" + ], + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "format": "none", + "gauge": { + "maxValue": 100, + "minValue": 0, + "show": false, + "thresholdLabels": false, + "thresholdMarkers": true + }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 16 + }, + "id": 58, + "interval": null, + "links": [], + "mappingType": 1, + "mappingTypes": [ + { + "name": "value to text", + "value": 1 + }, + { + "name": "range to text", + "value": 2 + } + ], + "maxDataPoints": 100, + "nullPointMode": "connected", + "nullText": null, + "postfix": "", + "postfixFontSize": "20%", + "prefix": "", + "prefixFontSize": "20%", + "rangeMaps": [ + { + "from": "null", + "text": "N/A", + "to": "null" + } + ], + "sparkline": { + "fillColor": "rgba(31, 118, 189, 0.18)", + "full": false, + "lineColor": "rgb(31, 120, 193)", + "show": false, + "ymax": null, + "ymin": null + }, + "tableColumn": "", + "targets": [ + { + "expr": "1", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "thresholds": "0,0", + "timeFrom": null, + "timeShift": null, + "title": "Server", + "type": "singlestat", + "valueFontSize": "20%", + "valueMaps": [ + { + "op": "=", + "text": "", + "value": "null" + }, + { + "op": "=", + "text": "", + "value": "1" + } + ], + "valueName": "current" + }, + { + "aliasColors": { + "Free": "rgb(51, 51, 51)" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 2, + "description": "Beacon chain and validator memory usage on the server.", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 6, + "x": 0, + "y": 17 + }, + "hiddenSeries": false, + "id": 99, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "connected", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "beacon memory", + "fill": 0, + "fillGradient": 0, + "stack": false + }, + { + "alias": "validator memory", + "fill": 0, + "fillGradient": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "nim_gc_mem_occupied_bytes{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "interval": "", + "intervalFactor": 1, + "legendFormat": "beacon memory", + "refId": "F" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Client Memory Usage", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "GB", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "idle": "rgb(51, 51, 51)" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 2, + "description": "Processor usage on the server", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 8, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 6, + "x": 6, + "y": 17 + }, + "hiddenSeries": false, + "id": 20, + "interval": "", + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 0, + "nullPointMode": "connected", + "options": { + "dataLinks": [] + }, + "percentage": true, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "sum(irate(node_cpu_seconds_total{mode=\"system\",job=\"node_exporter\"}[5m])) or sum(irate(node_cpu{mode=\"system\",job=\"node_exporter\"}[5m]))", + "interval": "", + "intervalFactor": 10, + "legendFormat": "system", + "refId": "A" + }, + { + "expr": "sum(irate(node_cpu_seconds_total{mode=\"user\",job=\"node_exporter\"}[5m])) or sum(irate(node_cpu{mode=\"user\",job=\"node_exporter\"}[5m]))", + "interval": "", + "intervalFactor": 10, + "legendFormat": "user", + "refId": "B" + }, + { + "expr": "sum(irate(node_cpu_seconds_total{mode=\"nice\",job=\"node_exporter\"}[5m])) or sum(irate(node_cpu{mode=\"nice\",job=\"node_exporter\"}[5m]))", + "interval": "", + "intervalFactor": 10, + "legendFormat": "nice", + "refId": "C" + }, + { + "expr": "sum(irate(node_cpu_seconds_total{mode=\"iowait\",job=\"node_exporter\"}[5m])) or sum(irate(node_cpu{mode=\"iowait\",job=\"node_exporter\"}[5m]))", + "interval": "", + "intervalFactor": 10, + "legendFormat": "iowait", + "refId": "D" + }, + { + "expr": "sum(irate(node_cpu_seconds_total{mode=\"steal\",job=\"node_exporter\"}[5m])) or sum(irate(node_cpu{mode=\"steal\",job=\"node_exporter\"}[5m]))", + "interval": "", + "intervalFactor": 10, + "legendFormat": "steal", + "refId": "E" + }, + { + "expr": "sum(irate(node_cpu_seconds_total{mode=\"idle\",job=\"node_exporter\"}[5m])) or sum(irate(node_cpu{mode=\"idle\",job=\"node_exporter\"}[5m]))", + "interval": "", + "intervalFactor": 10, + "legendFormat": "idle", + "refId": "F" + }, + { + "expr": "sum(irate(node_cpu_seconds_total{mode=\"irq\",job=\"node_exporter\"}[5m])) or sum(irate(node_cpu{mode=\"irq\",job=\"node_exporter\"}[5m]))", + "interval": "", + "intervalFactor": 10, + "legendFormat": "irq", + "refId": "G" + }, + { + "expr": "sum(irate(node_cpu_seconds_total{mode=\"softirq\",job=\"node_exporter\"}[5m])) or sum(irate(node_cpu{mode=\"softirq\",job=\"node_exporter\"}[5m]))", + "interval": "", + "intervalFactor": 10, + "legendFormat": "softirq", + "refId": "H" + }, + { + "expr": "sum(irate(node_cpu_seconds_total{mode=\"guest\",job=\"node_exporter\"}[5m])) or sum(irate(node_cpu{mode=\"guest\",job=\"node_exporter\"}[5m]))", + "interval": "", + "intervalFactor": 10, + "legendFormat": "guest", + "refId": "I" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": null, + "format": "short", + "label": "%", + "logBase": 1, + "max": "100", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "Network transmission (tx) and reception (rx) rates", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 4, + "gridPos": { + "h": 6, + "w": 6, + "x": 12, + "y": 17 + }, + "hiddenSeries": false, + "id": 14, + "legend": { + "avg": true, + "current": true, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "irate(node_network_transmit_bytes_total{job=\"node_exporter\",device='enp1s0'}[5m])*8 or irate(node_network_transmit_bytes{job=\"node_exporter\",device='enp1s0'}[5m])*8 or irate(node_network_transmit_bytes_total{job=\"node_exporter\",device='eno1'}[5m])*8 or irate(node_network_transmit_bytes{job=\"node_exporter\",device='eno1'}[5m])*8", + "interval": "", + "intervalFactor": 5, + "legendFormat": "tx", + "refId": "A" + }, + { + "expr": "irate(node_network_receive_bytes_total{job=\"node_exporter\",device='enp1s0'}[5m])*8 or irate(node_network_receive_bytes{job=\"node_exporter\",device='enp1s0'}[5m])*8 or irate(node_network_receive_bytes_total{job=\"node_exporter\",device='eno1'}[5m])*8 or irate(node_network_receive_bytes{job=\"node_exporter\",device='eno1'}[5m])*8", + "interval": "", + "intervalFactor": 5, + "legendFormat": "rx", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Network Traffic", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "bps", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "description": "", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 6, + "x": 18, + "y": 17 + }, + "hiddenSeries": false, + "id": 92, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "(sum(node_filesystem_size_bytes{job=\"node_exporter\"})-sum(node_filesystem_avail_bytes{job=\"node_exporter\"}))/sum(node_filesystem_size_bytes{job=\"node_exporter\"})", + "interval": "", + "legendFormat": "disk usage", + "refId": "A" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Disk Usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "decimals": 1, + "format": "percentunit", + "label": "", + "logBase": 1, + "max": "1", + "min": "0", + "show": true + }, + { + "format": "decbytes", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": { + "Free": "rgb(51, 51, 51)" + }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "decimals": 2, + "description": "Memory usage on the server", + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 4, + "gridPos": { + "h": 6, + "w": 6, + "x": 0, + "y": 23 + }, + "hiddenSeries": false, + "id": 17, + "legend": { + "avg": false, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "connected", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [ + { + "alias": "beacon memory", + "fill": 0, + "fillGradient": 0, + "stack": false + }, + { + "alias": "validator memory", + "fill": 0, + "fillGradient": 0, + "stack": false + } + ], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "targets": [ + { + "expr": "( node_memory_MemTotal_bytes{job=\"node_exporter\"} - node_memory_MemFree_bytes{job=\"node_exporter\"} - node_memory_Buffers_bytes{job=\"node_exporter\"} - node_memory_Cached_bytes{job=\"node_exporter\"} - node_memory_SwapCached_bytes{job=\"node_exporter\"} - node_memory_Slab_bytes{job=\"node_exporter\"} - node_memory_PageTables_bytes{job=\"node_exporter\"} - node_memory_VmallocUsed_bytes{job=\"node_exporter\"} ) or ( node_memory_MemTotal{job=\"node_exporter\"} - node_memory_MemFree{job=\"node_exporter\"} - node_memory_Buffers{job=\"node_exporter\"} - node_memory_Cached{job=\"node_exporter\"} - node_memory_SwapCached{job=\"node_exporter\"} - node_memory_Slab{job=\"node_exporter\"} - node_memory_PageTables{job=\"node_exporter\"} - node_memory_VmallocUsed{job=\"node_exporter\"} )", + "interval": "", + "intervalFactor": 2, + "legendFormat": "apps", + "refId": "A" + }, + { + "expr": "node_memory_Buffers_bytes{job=\"node_exporter\"} or node_memory_Buffers{job=\"node_exporter\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "buffers", + "refId": "B" + }, + { + "expr": "node_memory_Cached_bytes{job=\"node_exporter\"} or node_memory_Cached{job=\"node_exporter\"}", + "interval": "", + "intervalFactor": 2, + "legendFormat": "cached", + "refId": "C" + }, + { + "expr": "node_memory_MemFree_bytes{job=\"node_exporter\"} or node_memory_MemFree{job=\"node_exporter\"}", + "interval": "", + "legendFormat": "free", + "refId": "D" + }, + { + "expr": "node_memory_Slab_bytes{job=\"node_exporter\"} or node_memory_Slab{job=\"node_exporter\"}", + "interval": "", + "legendFormat": "slab", + "refId": "E" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Server Memory Usage", + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "decbytes", + "label": "GB", + "logBase": 1, + "max": "16000000000", + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 6, + "w": 6, + "x": 6, + "y": 23 + }, + "hiddenSeries": false, + "id": 90, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "node_hwmon_temp_celsius{chip=\"platform_coretemp_0\",job=\"node_exporter\",sensor=\"temp1\"}", + "interval": "", + "intervalFactor": 1, + "legendFormat": "cpu temp", + "refId": "A" + } + ], + "thresholds": [ + { + "colorMode": "critical", + "fill": true, + "line": true, + "op": "gt", + "yaxis": "left" + } + ], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Temp", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {} + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 4, + "gridPos": { + "h": 6, + "w": 6, + "x": 12, + "y": 23 + }, + "hiddenSeries": false, + "id": 81, + "legend": { + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "probe_duration_seconds{job=\"ping_google\"}", + "interval": "", + "intervalFactor": 10, + "legendFormat": "google", + "refId": "A" + }, + { + "expr": "probe_duration_seconds{job=\"ping_cloudflare\"}", + "interval": "", + "intervalFactor": 10, + "legendFormat": "cloudflare", + "refId": "B" + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Ping", + "tooltip": { + "shared": true, + "sort": 1, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": "1m", + "schemaVersion": 25, + "style": "dark", + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-2d", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "", + "title": "Ethereum 2", + "version": 1 +} \ No newline at end of file diff --git a/prometheus-targets.json b/prometheus-targets.json new file mode 100644 index 0000000..c64d340 --- /dev/null +++ b/prometheus-targets.json @@ -0,0 +1,11 @@ +[ + { + "labels": { + "package": "nimbus-prater.dnp.dappnode.eth", + "service": "beacon-validator.nimbus-prater.dappnode" + }, + "targets": [ + "beacon-validator.nimbus-prater.dappnode:8008" + ] + } +] \ No newline at end of file From 0df5ecf277b7f28ef1419fff341a2d1338e03f82 Mon Sep 17 00:00:00 2001 From: pablomendez_95 Date: Wed, 11 May 2022 12:09:21 +0000 Subject: [PATCH 7/9] fix dashboards --- nimbus-grafana-dashboard.json | 70 +++++++++++++++++------------------ 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/nimbus-grafana-dashboard.json b/nimbus-grafana-dashboard.json index 99bf846..ac63276 100644 --- a/nimbus-grafana-dashboard.json +++ b/nimbus-grafana-dashboard.json @@ -351,7 +351,7 @@ "pluginVersion": "7.0.0", "targets": [ { - "expr": "attached_validator_balance_total{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}/1000000000", + "expr": "attached_validator_balance_total{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}/1000000000", "instant": true, "interval": "", "legendFormat": "vbal", @@ -432,7 +432,7 @@ "pluginVersion": "7.0.0", "targets": [ { - "expr": "sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"})/1000000000-(count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)*32)", + "expr": "sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"})/1000000000-(count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} > 16)*32)", "instant": true, "interval": "", "legendFormat": "", @@ -517,7 +517,7 @@ "tableColumn": "", "targets": [ { - "expr": "(sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"})/1000000000-(count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)*32))/(count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)*32) ", + "expr": "(sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"})/1000000000-(count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} > 16)*32))/(count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} > 16)*32) ", "instant": true, "interval": "", "legendFormat": "", @@ -843,7 +843,7 @@ ], "targets": [ { - "expr": "label_replace(max by(pubkey) (attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}/1000000000), \"pubkey_short\", \"$1\", \"pubkey\", \"(.{8}).*\") ", + "expr": "label_replace(max by(pubkey) (attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}/1000000000), \"pubkey_short\", \"$1\", \"pubkey\", \"(.{8}).*\") ", "format": "table", "instant": true, "interval": "", @@ -919,7 +919,7 @@ "pluginVersion": "7.0.0", "targets": [ { - "expr": "libp2p_peers{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "expr": "libp2p_peers{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}", "instant": true, "interval": "", "legendFormat": "", @@ -1002,10 +1002,10 @@ "ymax": null, "ymin": null }, - "tableColumn": "{instance=\"127.0.0.1:8008\", job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "tableColumn": "{instance=\"127.0.0.1:8008\", instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}", "targets": [ { - "expr": "(time()-process_start_time_seconds{job=\"beacon-validator.nimbus-prater.dappnode:8008\"})/3600", + "expr": "(time()-process_start_time_seconds{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"})/3600", "instant": true, "interval": "", "legendFormat": "", @@ -1073,7 +1073,7 @@ "pluginVersion": "7.0.0", "targets": [ { - "expr": "beacon_active_validators{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} ", + "expr": "beacon_active_validators{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} ", "instant": true, "interval": "", "legendFormat": "active", @@ -1143,7 +1143,7 @@ "pluginVersion": "7.0.0", "targets": [ { - "expr": "clamp_min((1-(4*((finalization_delay{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}-2)/100))),0)", + "expr": "clamp_min((1-(4*((finalization_delay{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}-2)/100))),0)", "interval": "", "legendFormat": "", "refId": "A" @@ -1206,7 +1206,7 @@ "refId": "A" }, { - "expr": "attached_validator_balance_total{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}/1000000000", + "expr": "attached_validator_balance_total{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}/1000000000", "hide": false, "instant": true, "interval": "", @@ -1300,7 +1300,7 @@ "pluginVersion": "7.0.0", "targets": [ { - "expr": "sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"})/1000000000-(count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)*32)", + "expr": "sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"})/1000000000-(count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} > 16)*32)", "instant": true, "interval": "", "legendFormat": "total_balance", @@ -1479,7 +1479,7 @@ "steppedLine": false, "targets": [ { - "expr": "libp2p_peers{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "expr": "libp2p_peers{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}", "interval": "", "legendFormat": "peers", "refId": "A" @@ -1571,14 +1571,14 @@ "pluginVersion": "7.0.0", "targets": [ { - "expr": "beacon_current_justified_epoch{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "expr": "beacon_current_justified_epoch{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}", "instant": true, "interval": "", "legendFormat": "justified", "refId": "C" }, { - "expr": "beacon_finalized_epoch {job=\"beacon-validator.nimbus-prater.dappnode:8008\"} ", + "expr": "beacon_finalized_epoch {instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} ", "format": "time_series", "instant": true, "interval": "", @@ -1634,14 +1634,14 @@ "pluginVersion": "7.0.0", "targets": [ { - "expr": "beacon_slot{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "expr": "beacon_slot{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}", "instant": true, "interval": "", "legendFormat": "current slot", "refId": "A" }, { - "expr": "beacon_head_slot{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "expr": "beacon_head_slot{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}", "instant": true, "interval": "", "legendFormat": "head slot", @@ -1815,13 +1815,13 @@ "steppedLine": false, "targets": [ { - "expr": "beacon_pending_deposits{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "expr": "beacon_pending_deposits{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}", "interval": "", "legendFormat": "pending", "refId": "B" }, { - "expr": "beacon_active_validators{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "expr": "beacon_active_validators{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}", "interval": "", "legendFormat": "active validators", "refId": "D" @@ -1943,7 +1943,7 @@ "tableColumn": "", "targets": [ { - "expr": "sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"})/1000000000 - sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 1h != 0)/1000000000 - (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)) + (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 1h > 16))", + "expr": "sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"})/1000000000 - sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} offset 1h != 0)/1000000000 - (32 * count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} > 16)) + (32 * count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} offset 1h > 16))", "instant": false, "interval": "", "intervalFactor": 3, @@ -2039,7 +2039,7 @@ "tableColumn": "", "targets": [ { - "expr": "sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"})/1000000000 - sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 1d != 0)/1000000000 - (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)) + (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 1d > 16))", + "expr": "sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"})/1000000000 - sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} offset 1d != 0)/1000000000 - (32 * count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} > 16)) + (32 * count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} offset 1d > 16))", "instant": false, "interval": "", "legendFormat": "", @@ -2134,7 +2134,7 @@ "tableColumn": "", "targets": [ { - "expr": "sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"})/1000000000 - sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 7d != 0)/1000000000 - (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)) + (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 7d > 16))", + "expr": "sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"})/1000000000 - sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} offset 7d != 0)/1000000000 - (32 * count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} > 16)) + (32 * count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} offset 7d > 16))", "instant": false, "interval": "", "legendFormat": "", @@ -2229,7 +2229,7 @@ "tableColumn": "", "targets": [ { - "expr": "sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"})/1000000000 - sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 30d != 0)/1000000000 - (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)) + (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 30d > 16))", + "expr": "sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"})/1000000000 - sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} offset 30d != 0)/1000000000 - (32 * count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} > 16)) + (32 * count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} offset 30d > 16))", "instant": false, "interval": "", "legendFormat": "", @@ -2294,14 +2294,14 @@ "pluginVersion": "7.0.0", "targets": [ { - "expr": "beacon_blocks_proposed_total{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "expr": "beacon_blocks_proposed_total{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}", "instant": true, "interval": "", "legendFormat": "proposals", "refId": "B" }, { - "expr": "beacon_attestations_sent_total{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "expr": "beacon_attestations_sent_total{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}", "interval": "", "legendFormat": "attestations", "refId": "A" @@ -2355,13 +2355,13 @@ "pluginVersion": "7.0.0", "targets": [ { - "expr": "beacon_proposer_slashings_received_total{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "expr": "beacon_proposer_slashings_received_total{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}", "interval": "", "legendFormat": "proposer", "refId": "A" }, { - "expr": "beacon_attester_slashings_received_total{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "expr": "beacon_attester_slashings_received_total{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}", "instant": true, "interval": "", "legendFormat": "attester", @@ -2446,7 +2446,7 @@ "tableColumn": "annualized hourly return", "targets": [ { - "expr": "((sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}) - sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 1h != 0) - (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)) + (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 1h > 16)))/(32 * avg_over_time(count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)[1h:])))/1000000000 * 365 * 24", + "expr": "((sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}) - sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} offset 1h != 0) - (32 * count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} > 16)) + (32 * count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} offset 1h > 16)))/(32 * avg_over_time(count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} > 16)[1h:])))/1000000000 * 365 * 24", "hide": false, "interval": "", "legendFormat": "annualized hourly return", @@ -2541,7 +2541,7 @@ "tableColumn": "annualized daily return", "targets": [ { - "expr": "((sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}) - sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 1d != 0) - (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)) + (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 1d > 16)))/(32 * avg_over_time(count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)[1d:])))/1000000000 * 365", + "expr": "((sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}) - sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} offset 1d != 0) - (32 * count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} > 16)) + (32 * count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} offset 1d > 16)))/(32 * avg_over_time(count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} > 16)[1d:])))/1000000000 * 365", "hide": false, "interval": "", "legendFormat": "annualized daily return", @@ -2636,7 +2636,7 @@ "tableColumn": "annualized weekly return", "targets": [ { - "expr": "((sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}) - sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 7d != 0) - (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)) + (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 7d > 16)))/(32 * avg_over_time(count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)[7d:])))/1000000000 * (365/7)", + "expr": "((sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}) - sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} offset 7d != 0) - (32 * count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} > 16)) + (32 * count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} offset 7d > 16)))/(32 * avg_over_time(count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} > 16)[7d:])))/1000000000 * (365/7)", "hide": false, "interval": "", "legendFormat": "annualized weekly return", @@ -2731,7 +2731,7 @@ "tableColumn": "", "targets": [ { - "expr": "((sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}) - sum(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 30d != 0) - (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)) + (32 * count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} offset 30d > 16)))/(32 * avg_over_time(count(attached_validator_balance{job=\"beacon-validator.nimbus-prater.dappnode:8008\"} > 16)[30d:])))/1000000000 * (365/30)", + "expr": "((sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}) - sum(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} offset 30d != 0) - (32 * count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} > 16)) + (32 * count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} offset 30d > 16)))/(32 * avg_over_time(count(attached_validator_balance{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"} > 16)[30d:])))/1000000000 * (365/30)", "hide": false, "interval": "", "legendFormat": "annualized monthly return", @@ -2796,7 +2796,7 @@ "pluginVersion": "7.0.0", "targets": [ { - "expr": "beacon_voluntary_exits_received_total{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "expr": "beacon_voluntary_exits_received_total{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}", "instant": true, "interval": "", "legendFormat": "voluntary exits received", @@ -2855,7 +2855,7 @@ "pluginVersion": "7.0.0", "targets": [ { - "expr": "failed_web3_requests_total{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "expr": "failed_web3_requests_total{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}", "instant": true, "interval": "", "legendFormat": "failed requests", @@ -2909,7 +2909,7 @@ "pluginVersion": "7.0.0", "targets": [ { - "expr": "beacon_pending_deposits{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "expr": "beacon_pending_deposits{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}", "instant": true, "interval": "", "legendFormat": "pending", @@ -2965,7 +2965,7 @@ "pluginVersion": "7.0.0", "targets": [ { - "expr": "((beacon_pending_deposits{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}/4)*6.4)", + "expr": "((beacon_pending_deposits{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}/4)*6.4)", "instant": true, "interval": "", "legendFormat": "pending", @@ -3138,7 +3138,7 @@ "steppedLine": false, "targets": [ { - "expr": "nim_gc_mem_occupied_bytes{job=\"beacon-validator.nimbus-prater.dappnode:8008\"}", + "expr": "nim_gc_mem_occupied_bytes{instance=\"beacon-validator.nimbus-prater.dappnode:8008\", job=\"manager_sd\", package=\"nimbus-prater.dnp.dappnode.eth\", service=\"beacon-validator.nimbus-prater.dappnode\"}", "interval": "", "intervalFactor": 1, "legendFormat": "beacon memory", From 9276ee6b30c416d80366733cd1f72af49cea2195 Mon Sep 17 00:00:00 2001 From: pablomendezroyo <41727368+pablomendezroyo@users.noreply.github.com> Date: Thu, 19 May 2022 14:42:08 +0000 Subject: [PATCH 8/9] bump version --- dappnode_package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dappnode_package.json b/dappnode_package.json index 89a3346..70eb7ea 100644 --- a/dappnode_package.json +++ b/dappnode_package.json @@ -1,7 +1,7 @@ { "name": "nimbus-prater.dnp.dappnode.eth", "version": "0.1.0", - "upstreamVersion": "v22.4.0", + "upstreamVersion": "v22.5.0", "upstreamRepo": "status-im/nimbus-eth2", "upstreamArg": "UPSTREAM_VERSION", "architectures": ["linux/amd64"], From 9fca6fd993e4de893f0741335dd7be49ebffef01 Mon Sep 17 00:00:00 2001 From: pablomendezroyo <41727368+pablomendezroyo@users.noreply.github.com> Date: Thu, 19 May 2022 14:42:34 +0000 Subject: [PATCH 9/9] Update docker-compose.yml --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index ab9865f..cb67626 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,7 +4,7 @@ services: build: context: ./build args: - UPSTREAM_VERSION: v22.4.0 + UPSTREAM_VERSION: v22.5.0 restart: unless-stopped stop_grace_period: 1m environment: