mirror of
https://github.com/waku-org/nwaku.git
synced 2025-01-28 15:46:33 +00:00
deploy: 9a6a7334ef419882e9c2dacaa1640fe35a9495a4
This commit is contained in:
parent
179f38fcc7
commit
8e3ae9c2a7
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# libtool - Provide generalized library-building support services.
|
# libtool - Provide generalized library-building support services.
|
||||||
# Generated automatically by config.status (libbacktrace) version-unused
|
# Generated automatically by config.status (libbacktrace) version-unused
|
||||||
# Libtool was configured on host fv-az82-539:
|
# Libtool was configured on host fv-az243-417:
|
||||||
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
|
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
|
||||||
#
|
#
|
||||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
|
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
|
||||||
|
@ -14,7 +14,9 @@ import
|
|||||||
../protocol/waku_store,
|
../protocol/waku_store,
|
||||||
../protocol/waku_lightpush,
|
../protocol/waku_lightpush,
|
||||||
../protocol/waku_swap/waku_swap,
|
../protocol/waku_swap/waku_swap,
|
||||||
../protocol/waku_peer_exchange
|
../protocol/waku_peer_exchange,
|
||||||
|
../protocol/waku_rln_relay/waku_rln_relay_metrics,
|
||||||
|
../utils/collector
|
||||||
|
|
||||||
logScope:
|
logScope:
|
||||||
topics = "wakunode.setup.metrics"
|
topics = "wakunode.setup.metrics"
|
||||||
@ -30,14 +32,7 @@ proc startMetricsServer*(serverIp: ValidIpAddress, serverPort: Port) =
|
|||||||
|
|
||||||
info "Metrics HTTP server started", serverIp, serverPort
|
info "Metrics HTTP server started", serverIp, serverPort
|
||||||
|
|
||||||
proc parseCollectorIntoF64(collector: Collector): float64 =
|
|
||||||
var total = 0.float64
|
|
||||||
for key in collector.metrics.keys():
|
|
||||||
try:
|
|
||||||
total = total + collector.value(key)
|
|
||||||
except KeyError:
|
|
||||||
discard
|
|
||||||
return total
|
|
||||||
|
|
||||||
proc startMetricsLog*() =
|
proc startMetricsLog*() =
|
||||||
# https://github.com/nim-lang/Nim/issues/17369
|
# https://github.com/nim-lang/Nim/issues/17369
|
||||||
@ -46,20 +41,18 @@ proc startMetricsLog*() =
|
|||||||
var cumulativeErrors = 0.float64
|
var cumulativeErrors = 0.float64
|
||||||
var cumulativeConns = 0.float64
|
var cumulativeConns = 0.float64
|
||||||
|
|
||||||
|
when defined(rln) or defined(rlnzerokit):
|
||||||
|
let logRlnMetrics = getRlnMetricsLogger()
|
||||||
|
|
||||||
logMetrics = proc(udata: pointer) =
|
logMetrics = proc(udata: pointer) =
|
||||||
{.gcsafe.}:
|
{.gcsafe.}:
|
||||||
# TODO: libp2p_pubsub_peers is not public, so we need to make this either
|
# TODO: libp2p_pubsub_peers is not public, so we need to make this either
|
||||||
# public in libp2p or do our own peer counting after all.
|
# public in libp2p or do our own peer counting after all.
|
||||||
|
|
||||||
let totalErrors = parseCollectorIntoF64(waku_node_errors)
|
# track cumulative values
|
||||||
let totalConnections = parseCollectorIntoF64(waku_node_conns_initiated)
|
let freshErrorCount = parseAndAccumulate(waku_node_errors, cumulativeErrors)
|
||||||
|
let freshConnCount = parseAndAccumulate(waku_node_conns_initiated, cumulativeConns)
|
||||||
# track cumulative, and then max.
|
|
||||||
let freshErrorCount = max(totalErrors - cumulativeErrors, 0)
|
|
||||||
let freshConnCount = max(totalConnections - cumulativeConns, 0)
|
|
||||||
|
|
||||||
cumulativeErrors = totalErrors
|
|
||||||
cumulativeConns = totalConnections
|
|
||||||
info "Total connections initiated", count = freshConnCount
|
info "Total connections initiated", count = freshConnCount
|
||||||
info "Total messages", count = parseCollectorIntoF64(waku_node_messages)
|
info "Total messages", count = parseCollectorIntoF64(waku_node_messages)
|
||||||
info "Total swap peers", count = parseCollectorIntoF64(waku_swap_peers_count)
|
info "Total swap peers", count = parseCollectorIntoF64(waku_swap_peers_count)
|
||||||
@ -70,7 +63,12 @@ proc startMetricsLog*() =
|
|||||||
info "Total errors", count = freshErrorCount
|
info "Total errors", count = freshErrorCount
|
||||||
info "Total active filter subscriptions", count = parseCollectorIntoF64(waku_filter_subscribers)
|
info "Total active filter subscriptions", count = parseCollectorIntoF64(waku_filter_subscribers)
|
||||||
|
|
||||||
|
# Start protocol specific metrics logging
|
||||||
|
when defined(rln) or defined(rlnzerokit):
|
||||||
|
logRlnMetrics()
|
||||||
|
|
||||||
discard setTimer(Moment.fromNow(30.seconds), logMetrics)
|
discard setTimer(Moment.fromNow(30.seconds), logMetrics)
|
||||||
|
|
||||||
discard setTimer(Moment.fromNow(30.seconds), logMetrics)
|
discard setTimer(Moment.fromNow(30.seconds), logMetrics)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,9 +1,18 @@
|
|||||||
|
{.push raises: [Defect].}
|
||||||
|
|
||||||
import
|
import
|
||||||
|
chronicles,
|
||||||
|
chronos,
|
||||||
metrics,
|
metrics,
|
||||||
waku_rln_relay_constants
|
metrics/chronos_httpserver,
|
||||||
|
waku_rln_relay_constants,
|
||||||
|
../../utils/collector
|
||||||
|
|
||||||
export metrics
|
export metrics
|
||||||
|
|
||||||
|
logScope:
|
||||||
|
topics = "waku-rln-relay.metrics"
|
||||||
|
|
||||||
func generateBucketsForHistogram*(length: int): seq[float64] =
|
func generateBucketsForHistogram*(length: int): seq[float64] =
|
||||||
## Generate a custom set of 5 buckets for a given length
|
## Generate a custom set of 5 buckets for a given length
|
||||||
let numberOfBuckets = 5
|
let numberOfBuckets = 5
|
||||||
@ -31,3 +40,39 @@ declarePublicGauge(waku_rln_registration_duration_seconds, "time taken to regist
|
|||||||
declarePublicGauge(waku_rln_instance_creation_duration_seconds, "time taken to create an rln instance")
|
declarePublicGauge(waku_rln_instance_creation_duration_seconds, "time taken to create an rln instance")
|
||||||
declarePublicGauge(waku_rln_membership_insertion_duration_seconds, "time taken to insert a new member into the local merkle tree")
|
declarePublicGauge(waku_rln_membership_insertion_duration_seconds, "time taken to insert a new member into the local merkle tree")
|
||||||
declarePublicGauge(waku_rln_membership_credentials_import_duration_seconds, "time taken to import membership credentials")
|
declarePublicGauge(waku_rln_membership_credentials_import_duration_seconds, "time taken to import membership credentials")
|
||||||
|
|
||||||
|
proc getRlnMetricsLogger*(): proc() =
|
||||||
|
var logMetrics: proc() {.gcsafe, raises: [Defect].}
|
||||||
|
|
||||||
|
var cumulativeErrors = 0.float64
|
||||||
|
var cumulativeMessages = 0.float64
|
||||||
|
var cumulativeSpamMessages = 0.float64
|
||||||
|
var cumulativeInvalidMessages = 0.float64
|
||||||
|
var cumulativeValidMessages = 0.float64
|
||||||
|
var cumulativeProofs = 0.float64
|
||||||
|
|
||||||
|
logMetrics = proc() =
|
||||||
|
{.gcsafe.}:
|
||||||
|
|
||||||
|
let freshErrorCount = parseAndAccumulate(waku_rln_errors_total,
|
||||||
|
cumulativeErrors)
|
||||||
|
let freshMsgCount = parseAndAccumulate(waku_rln_messages_total,
|
||||||
|
cumulativeMessages)
|
||||||
|
let freshSpamCount = parseAndAccumulate(waku_rln_spam_messages_total,
|
||||||
|
cumulativeSpamMessages)
|
||||||
|
let freshInvalidMsgCount = parseAndAccumulate(waku_rln_invalid_messages_total,
|
||||||
|
cumulativeInvalidMessages)
|
||||||
|
let freshValidMsgCount = parseAndAccumulate(waku_rln_valid_messages_total,
|
||||||
|
cumulativeValidMessages)
|
||||||
|
let freshProofCount = parseAndAccumulate(waku_rln_proof_verification_total,
|
||||||
|
cumulativeProofs)
|
||||||
|
|
||||||
|
|
||||||
|
info "Total messages", count = freshMsgCount
|
||||||
|
info "Total spam messages", count = freshSpamCount
|
||||||
|
info "Total invalid messages", count = freshInvalidMsgCount
|
||||||
|
info "Total valid messages", count = freshValidMsgCount
|
||||||
|
info "Total errors", count = freshErrorCount
|
||||||
|
info "Total proofs verified", count = freshProofCount
|
||||||
|
return logMetrics
|
||||||
|
|
||||||
|
19
waku/v2/utils/collector.nim
Normal file
19
waku/v2/utils/collector.nim
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import
|
||||||
|
metrics
|
||||||
|
|
||||||
|
proc parseCollectorIntoF64*(collector: Collector): float64 =
|
||||||
|
var total = 0.float64
|
||||||
|
for key in collector.metrics.keys():
|
||||||
|
try:
|
||||||
|
total = total + collector.value(key)
|
||||||
|
except KeyError:
|
||||||
|
discard
|
||||||
|
return total
|
||||||
|
|
||||||
|
template parseAndAccumulate*(collector: Collector, cumulativeValue: float64): float64 =
|
||||||
|
## This template is used to get metrics in a window
|
||||||
|
## according to a cumulative value passed in
|
||||||
|
let total = parseCollectorIntoF64(collector)
|
||||||
|
let freshCount = total - cumulativeValue
|
||||||
|
cumulativeValue = total
|
||||||
|
freshCount
|
Loading…
x
Reference in New Issue
Block a user