Skip to content

Instantly share code, notes, and snippets.

@spireblockchain
Last active January 1, 2024 23:08
Show Gist options
  • Save spireblockchain/11c760ff7357ce20601837b9b9301b45 to your computer and use it in GitHub Desktop.
Save spireblockchain/11c760ff7357ce20601837b9b9301b45 to your computer and use it in GitHub Desktop.
Rosen Bridge Watcher - Prometheus Metrics Bash Script
#!/bin/bash
#============================================================================================
# Must have prometheus-node-exporter installed
# This script will add metrics to the host Prometheus endpoint by creating a file in /var/lib/prometheus/node-exporter
# Run this script periodically via cron, i.e. every 5 minutes
# Set watcher URL
watcherUrl='http://127.0.0.1:3030'
# Set prefix for Prometheus variables (also the file name to be written)
prometheusVariablePrefix='rosen_cardano_watcher'
#============================================================================================
getWatcherInfo=$(curl -s $watcherUrl/api/info)
RsnPerPermit=$(echo $getWatcherInfo | jq '.permitsPerEvent' | awk '{print $1/1000}')
ErgCurrentBalance=$(echo $getWatcherInfo | jq '.currentBalance' | awk '{print $1/1000000000}')
RsnAvailableInPermits=$(echo $getWatcherInfo | jq '.permitCount.active' | awk '{print $1/1000}')
RsnTotalInPermits=$(echo $getWatcherInfo | jq '.permitCount.total' | awk '{print $1/1000}')
WatcherHealth=$(echo $getWatcherInfo | jq '.health' | sed 's/"//g')
availablePermits=$((RsnAvailableInPermits/RsnPerPermit))
totalPermits=$((RsnTotalInPermits/RsnPerPermit))
case $WatcherHealth in
"Healthy")
IsHealthy=1
;;
"Unstable")
IsHealthy=0
;;
esac
echo "RSN Per Permit: $RsnPerPermit"
echo "ERG Current Balance: $ErgCurrentBalance"
echo "RSN Available In Permits: $RsnAvailableInPermits"
echo "RSN Total In Permits: $RsnTotalInPermits"
echo "Available Permit Count: $availablePermits"
echo "Available Permit Count: $totalPermits"
echo "Health: $WatcherHealth ($IsHealthy)"
printf "# TYPE %s_rsnperpermit gauge\n%s_rsnperpermit %d\n" $prometheusVariablePrefix $prometheusVariablePrefix $RsnPerPermit > /var/lib/prometheus/node-exporter/$prometheusVariablePrefix.prom
printf "# TYPE %s_ergcurrentbalance gauge\n%s_ergcurrentbalance %f\n" $prometheusVariablePrefix $prometheusVariablePrefix $ErgCurrentBalance >> /var/lib/prometheus/node-exporter/$prometheusVariablePrefix.prom
printf "# TYPE %s_rsnavailableinpermits gauge\n%s_rsnavailableinpermits %f\n" $prometheusVariablePrefix $prometheusVariablePrefix $RsnAvailableInPermits >> /var/lib/prometheus/node-exporter/$prometheusVariablePrefix.prom
printf "# TYPE %s_rsntotalinpermits gauge\n%s_rsntotalinpermits %f\n" $prometheusVariablePrefix $prometheusVariablePrefix $RsnTotalInPermits >> /var/lib/prometheus/node-exporter/$prometheusVariablePrefix.prom
printf "# TYPE %s_availablepermits gauge\n%s_availablepermits %d\n" $prometheusVariablePrefix $prometheusVariablePrefix $availablePermits >> /var/lib/prometheus/node-exporter/$prometheusVariablePrefix.prom
printf "# TYPE %s_totalpermits gauge\n%s_totalpermits %d\n" $prometheusVariablePrefix $prometheusVariablePrefix $totalPermits >> /var/lib/prometheus/node-exporter/$prometheusVariablePrefix.prom
printf "# TYPE %s_health gauge\n%s_health %d\n" $prometheusVariablePrefix $prometheusVariablePrefix $IsHealthy >> /var/lib/prometheus/node-exporter/$prometheusVariablePrefix.prom
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment