status-go/metrics
Alex Kohler 365bc662a2 Enable gometalinter on tests and fix static analysis issues #631 (#644)
* Enable gometalinter on tests and fix static analysis issues

* Remove unneeded change

* Fix additional lint errors

* Add nolint directives and error checks

* Add error assertions instead of nolint directives

* Go back to using lint directive for loop.Run goroutine

* Add error check to loop.Run
2018-02-12 13:16:06 +02:00
..
node Enable gometalinter on tests and fix static analysis issues #631 (#644) 2018-02-12 13:16:06 +02: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.