status-go/metrics
Adam Babik 89d89681a3
Add support for metrics (#558)
It adds support for metrics (expvar and Prometheus) along with docker-compose files to run a Whisper test cluster.
2018-01-30 12:51:48 +01:00
..
node Add support for metrics (#558) 2018-01-30 12:51:48 +01:00
whisper Add support for metrics (#558) 2018-01-30 12:51:48 +01:00
README.md Add support for metrics (#558) 2018-01-30 12:51:48 +01:00
metrics_expvar.go Add support for metrics (#558) 2018-01-30 12:51:48 +01:00
metrics_noop.go Add support for metrics (#558) 2018-01-30 12:51:48 +01:00
metrics_prometheus.go Add support for metrics (#558) 2018-01-30 12:51:48 +01:00

README.md

metrics

Currently, we aim to provide three options to two ways of collecting metrics:

Enable metrics

Metrics can be enabled with -stats flag when running it from command line. -stats.addr can be used to change metrics server address and port.

TBD: how to enable them when running status-go as a library?

Build tags

To select how metrics are collected, status-go must be compiled with proper build tags.

To enable expvar metrics, compile it with metrics build tag:

make statusgo BUILD_TAGS='metrics'

To enable Prometheus metrics, compile it with metrics and prometheus tags:

make statusgo BUILD_TAGS='metrics prometheus'

If no metrics tag is provided, metrics won't be collected or will be printed as DEBUG logs depending on implementation.

Current metrics

Currently, we have defined the following metrics.

Whisper

expvar

  • envelope_counter -- number of envelopes,
  • envelope_new_counter -- number of new envelopes (arrived for the first time, not cached before),
  • envelope_topic_counter -- a map with envelopes counted per topic,
  • envelope_peer_counter -- a map with envelopes counted by peer,
  • envelope_volume -- volume of all envelopes (sum of each envelope's size).

Prometheus

  • envelope_counter -- count envelopes with labels: topic, source (values are peer or p2p), is_new, peer,
  • envelope_volume -- incremental sum of envelopes volume with labels: topic, source (values are peer or p2p), is_new, peer.

Node and peers

expvar

  • node_info -- ID of the current node,
  • node_peers -- marshaled list of all peers remote addresses.

Prometheus

Not available.