38308d48f2
* feat_: log error and stacktrace when panic in goroutine * test_: add test TestSafeGo * chore_: rename logAndCall to call * chore_: rename SafeGo to Go * chore_: make lint-fix * chore_: use t.Cleanup * chore_: Revert "chore_: use t.Cleanup" This reverts commit 4eb420d179cc0e208e84c13cb941e6b3d1ed9819. * chore_: Revert "chore_: make lint-fix" This reverts commit fcc995f157e671a4229b47419c3a0e4004b5fdab. * chore_: Revert "chore_: rename SafeGo to Go" This reverts commit a6d73d6df583f313032d79aac62f66328039cb55. * chore_: Revert "chore_: rename logAndCall to call" This reverts commit 8fbe993bedb9fbba67349a44f151e2dd5e3bc4cc. * chore_: Revert "test_: add test TestSafeGo" This reverts commit a1fa91839f3960398980c6bf456e6462ec944819. * chore_: Revert "feat_: log error and stacktrace when panic in goroutine" This reverts commit f612dd828fa2ce410d0e806fe773ecbe3e86a68a. * feat_: log error and stacktrace when panic in goroutine * chore_: make lint-fix * chore_: rename logAndCall to call * chore_: renaming LogOnPanic * chore_: update rest goroutine function calls * chore_: make lint-fix |
||
---|---|---|
.. | ||
node | ||
README.md | ||
metrics.go |
README.md
Description
This package configures Prometheus metrics for the node.
Technical Details
We use a trick to combine our metrics with Geth ones.
The NewMetricsServer()
function in metrics.go
calls our own Handler()
function which in turn calls two handlers:
promhttp.HandlerFor()
- Our own custom metrics from this package.gethprom.Handler(reg)
- Geth metrics defined inmetrics
By calling both we can extend existing metrics.
Metrics
We add a few extra metrics on top of the normal Geth ones in node/metrics.go
:
p2p_peers_count
- Current numbers of peers split by name.p2p_peers_absolute
- Absolute number of connected peers.p2p_peers_max
- Maximum number of peers that can connect.
The p2p_peers_count
metrics includes 3 labels:
type
- Set toStatusIM
for mobile andStatusd
for daemon.version
- Version ofstatus-go
, always with thev
prefix.platform
- Host platform, likeandroid-arm64
ordarwin-arm64
The way this data is acquired is using node names, which look like this:
StatusIM/vrelease-0.30.1-beta.2/android-arm/go1.11.5
Statusd/v0.34.0-beta.3/linux-amd64/go1.13.1
Geth/v1.9.9-stable-5aa131ca/linux-amd64/go1.13.3
This 4 segment format is standard for Ethereum as you can see on https://ethstats.net/.
We parse the names using labelsFromNodeName()
from node/metrics.go
.