summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesper Jensen <jesper@jnsn.dev>2025-07-03 19:11:11 +0200
committerJesper Jensen <jesper@jnsn.dev>2025-07-03 19:11:11 +0200
commit75e3fd649bf4baae66a7415634fe999c726ba149 (patch)
tree8bff69c69ebdc92f9fefdfb7a95b83c680de7889
parent570181d2004e1d07a8a4e946f352d619a5f8895f (diff)
Add metric for lookup state
-rw-r--r--src/main.c2
-rw-r--r--src/metrics.c11
-rw-r--r--src/metrics.h2
-rw-r--r--src/proto.c2
4 files changed, 17 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index 0f81440..3d749ab 100644
--- a/src/main.c
+++ b/src/main.c
@@ -180,6 +180,7 @@ int main(int argc, char** argv) {
// Init the lookup
dht.lookup.target = (struct nodeid){.inner={0x19b8a941, 0x38fa0191, 0x1403fac2, 0x581000ab, 0x19583cda}};
dht.lookup.state = OP_PENDING; // We want this to run at some point.
+ prom_gauge_set(lookup_state, dht.lookup.state, NULL);
#define RECV_BUFF_SIZE 4096
char buff_storage[RECV_BUFF_SIZE+1];
@@ -251,6 +252,7 @@ int main(int argc, char** argv) {
lookup_refresh = 0;
// Restart the lookup periodically
dht.lookup.state = OP_PENDING;
+ prom_gauge_set(lookup_state, dht.lookup.state, NULL);
}
}
diff --git a/src/metrics.c b/src/metrics.c
index d85f6d9..90b54d2 100644
--- a/src/metrics.c
+++ b/src/metrics.c
@@ -25,6 +25,7 @@ prom_counter_t *keepalive_count = NULL;
prom_counter_t *lookup_count = NULL;
prom_gauge_t *routing_table_occupied = NULL;
prom_counter_t *outbox_overflow = NULL;
+prom_gauge_t *lookup_state = NULL;
enum MHD_Result promhttp_handler(
void *cls,
@@ -264,6 +265,16 @@ void metric_init() {
NULL
)
);
+
+ lookup_state = prom_collector_registry_must_register_metric(
+ prom_gauge_new(
+ "dht_lookup_state",
+ "State of the lookup",
+ 0,
+ NULL
+ )
+ );
+
}
void metric_end() {
diff --git a/src/metrics.h b/src/metrics.h
index a7ac9f2..2fecff9 100644
--- a/src/metrics.h
+++ b/src/metrics.h
@@ -29,6 +29,8 @@ extern prom_counter_t *requestsProcessed;
extern prom_counter_t *lookup_count;
extern prom_counter_t *outbox_overflow;
+extern prom_gauge_t *lookup_state;
+
extern prom_gauge_t *routing_table_occupied;
void metric_init();
diff --git a/src/proto.c b/src/proto.c
index e85d45e..d17f331 100644
--- a/src/proto.c
+++ b/src/proto.c
@@ -959,10 +959,12 @@ int proto_run(struct dht* dht, char* buff, size_t recv_len, struct sockaddr_in*
}
dht->lookup.state = OP_ACTIVE;
+ prom_gauge_set(lookup_state, dht->lookup.state, NULL);
prom_counter_inc(lookup_count, NULL);
dbg("Lookup started");
} else if(dht->lookup.state == OP_ACTIVE && dht->lookup.outstanding == 0) {
dht->lookup.state = OP_COMPLETED;
+ prom_gauge_set(lookup_state, dht->lookup.state, NULL);
}
// @HACK 0 means unitialized, only happens in tests