Skip to main content

Export nano_node stats for prometheus

Project description

nano-prom

A simple metrics exporter for a nano-node daemon

Requirements

Installation

  • pip3 install nano-prom-exporter

Usage

nano-prom [-h] [--rpchost RPCHOST] [--rpc_port rpc_port] [--datapath DATAPATH] [--push_gateway push_gateway] [--hostname JOBNAME] [--interval SEC] [--username USERNAME] [--password PASSWORD] [--config_path PATH/TO/config.ini]

Optional Arguments
-h, --help show this help message and exit
--rpchost RPCHOST "[::1]" default host string
--rpc_port rpc_port "7076" default rpc port
--datapath DATAPATH "~/Nano/" as default
--push_gateway push_gateway "http://localhost:9091" prometheus push gateway, for multiple use config.ini and --config_path
--hostname JOBNAME socket.gethostname() jobname to pass to gateway
--interval SEC "10" seconds between pushing
--username USERNAME "" http_basic_auth username, for multiple use config.ini and --config_path
--password PASSWORD "" http_basic_auth password, for multiple use config.ini and --config_path
--config_path PATH/TO/config.ini "" path to config.ini for multiple push gateway and basic_auth support

Sample config.ini

[DEFAULT]
rpcIP = localhost ; ip for rpc
rpcPort = 7076 ; port for rpc
nodeDataPath = ~/Nano/ ; path to Nano Directory
hostname = testing ; hostname will default to socket.gethostname if not configured
interval = 10 ; default 10 seconds

;example showing push gateway with no auth
[http://127.0.0.1:9091] ; push gateway full url and port

;example showing push gateway with basic_auth
[http://127.0.0.1:9092] ; push gateway full url and port
username = test ; username for basic auth
password = testing ; password for basic auth 

Stats exposed:

Source Prometheus Series{tag} Info
rpc nano_rpc_response histogram of rpc response by action
nano_active_difficulty Active Difficulty Multiplier
nano_active_difficulty_receive Active Difficulty Receive Multiplier
nano_block_count{type} Block Count Statistics
nano_confirmation_history{count} Block Confirmation Average{count sample size}
nano_node_frontier_count Frontier Count
nano_node_quorum_delta Quorum Delta From Confirmation Quorum
nano_node_online_stake_total Online Stake Total
nano_node_peers_stake_total Peered Stake Total
nan_node_trended_stake_total Trended Stake Total
nano_node_peer_count raw peer count
nano_uptime node uptime(sec)
nano_version version string
nano_stats_counters{type, detail, dir} stats counter entries by type detail and direction
nano_stats_objects_count{l1,l2,l3} stats object count {l1,l2,l3}
nano_stats_objects_size{l1,l2,l3} stats object size {l1,l2,l3}
telemetry_raw_blocks raw telemetry block count by endpoint
telemetry_raw_cemented raw telemetry cemented count by endpoint
telemetry_raw_unchecked raw telemetry unchecked count by endpoint
telemetry_raw_accounts raw telemetry account count by endpoint
telemetry_raw_bandwidth raw telemetry bandwidth cap by endpoint
telemetry_raw_peer raw telemetry peer count by endpoint
telemetry_raw_protocol raw telemetry protocol version by endpoint
telemetry_raw_major raw telemetry major version by endpoint
telemetry_raw_minor raw telemetry minor version by endpoint
telemetry_raw_patch raw telemetry patch version by endpoint
telemetry_raw_pre raw telemetry pre-release version by endpoint
telemetry_raw_uptime raw telemetry uptime by endpoint
telemetry_raw_maker raw telemetry maker by endpoint
telemetry_raw_timestamp raw telemetry received timestamp by endpoint

|system|nano_node_memory_rss{pid}|allocated and in ram| | |nano_node_cpu_usage{pid}|percentage CPU usage| | |nano_node_threads{pid,tid}|percentage of total CPU per thread id | | |nano_node_database|size of database(bytes)| | |nano_node_volume_free|size of volume hosting DATAPATH free| | |nano_node_volume_used|size of volume hosting DATAPATH used| | |nano_node_volume_total|size of volume hosting DATAPATH total| | |nano_node_memory_vms{pid}|all memory used| | |nano_node_memory_paged_pool{pid}| |

Development Requirements:

  • prometheus-client pip3 install prometheus-client
  • requests pip3 install requests
  • psutil pip3 install psutil

Development Installation using venv:

  • python3 -m venv venv
  • . /venv/bin/activate
  • pip install -r requirements.txt
  • pip3 install -e . from repo root

DEBUGGING

Setting NANO_PROM_DEBUG to 1 will print exceptions, useful for debugging

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nano_prom_exporter-0.1.12.tar.gz (10.1 kB view hashes)

Uploaded Source

Built Distributions

nano_prom_exporter-0.1.12-py3.9.egg (9.3 kB view hashes)

Uploaded Source

nano_prom_exporter-0.1.12-py3.8.egg (19.0 kB view hashes)

Uploaded Source

nano_prom_exporter-0.1.12-py3.7.egg (18.9 kB view hashes)

Uploaded Source

nano_prom_exporter-0.1.12-py3-none-any.whl (10.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page