diff options
| author | Jesper Jensen <jesper@jnsn.dev> | 2025-07-03 19:11:11 +0200 |
|---|---|---|
| committer | Jesper Jensen <jesper@jnsn.dev> | 2025-07-03 19:11:11 +0200 |
| commit | 75e3fd649bf4baae66a7415634fe999c726ba149 (patch) | |
| tree | 8bff69c69ebdc92f9fefdfb7a95b83c680de7889 | |
| parent | 570181d2004e1d07a8a4e946f352d619a5f8895f (diff) | |
Add metric for lookup state
| -rw-r--r-- | src/main.c | 2 | ||||
| -rw-r--r-- | src/metrics.c | 11 | ||||
| -rw-r--r-- | src/metrics.h | 2 | ||||
| -rw-r--r-- | src/proto.c | 2 |
4 files changed, 17 insertions, 0 deletions
@@ -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 |
