mirror of https://github.com/nucypher/nucypher.git
Convert node discovery metrics from enum to gauge
Actually, the two possible states for learning_status metric are `stopped` and `running`. So a enum type metric can be considered an overkill that introduces confusion to exported metrics.pull/3405/head
parent
933a28697d
commit
9512d7b286
|
@ -2,7 +2,7 @@ from abc import ABC, abstractmethod
|
|||
from typing import Dict
|
||||
|
||||
from eth_typing.evm import ChecksumAddress
|
||||
from prometheus_client import Enum, Gauge, Info
|
||||
from prometheus_client import Gauge, Info
|
||||
from prometheus_client.registry import CollectorRegistry
|
||||
|
||||
import nucypher
|
||||
|
@ -70,10 +70,9 @@ class UrsulaInfoMetricsCollector(BaseMetricsCollector):
|
|||
def initialize(self, registry: CollectorRegistry) -> None:
|
||||
self.metrics = {
|
||||
"client_info": Info("client", "TACo node client info", registry=registry),
|
||||
"learning_status": Enum(
|
||||
"node_discovery_status",
|
||||
"Learning loop status",
|
||||
states=["starting", "running", "stopped"],
|
||||
"discovery_status_gauge": Gauge(
|
||||
"node_discovery_running",
|
||||
"Node discovery loop status",
|
||||
registry=registry,
|
||||
),
|
||||
"known_nodes_gauge": Gauge(
|
||||
|
@ -101,11 +100,9 @@ class UrsulaInfoMetricsCollector(BaseMetricsCollector):
|
|||
"operator_address": self.ursula.operator_address,
|
||||
}
|
||||
|
||||
self.metrics["learning_status"].state(
|
||||
"running" if self.ursula._learning_task.running else "stopped"
|
||||
)
|
||||
self.metrics["known_nodes_gauge"].set(len(self.ursula.known_nodes))
|
||||
self.metrics["client_info"].info(payload)
|
||||
self.metrics["discovery_status_gauge"].set(self.ursula._learning_task.running)
|
||||
self.metrics["known_nodes_gauge"].set(len(self.ursula.known_nodes))
|
||||
|
||||
|
||||
class BlockchainMetricsCollector(BaseMetricsCollector):
|
||||
|
|
|
@ -74,11 +74,8 @@ def test_ursula_info_metrics_collector(ursulas):
|
|||
collector.initialize(registry=collector_registry)
|
||||
collector.collect()
|
||||
|
||||
mode = "running" if ursula._learning_task.running else "stopped"
|
||||
learning_mode = collector_registry.get_sample_value(
|
||||
"node_discovery_status", labels={"node_discovery_status": f"{mode}"}
|
||||
)
|
||||
assert learning_mode == 1
|
||||
discovery_status = collector_registry.get_sample_value("node_discovery_running")
|
||||
assert discovery_status == ursula._learning_task.running
|
||||
|
||||
known_nodes = collector_registry.get_sample_value("known_nodes")
|
||||
assert known_nodes == len(ursula.known_nodes)
|
||||
|
|
Loading…
Reference in New Issue