From abc0b1c73cfc8da2a0a0bca02c8689f73a1588f2 Mon Sep 17 00:00:00 2001 From: Jesper Jensen Date: Sun, 11 May 2025 00:25:12 +0200 Subject: Add metric for discarded packets --- src/metrics.c | 10 ++++++++++ src/metrics.h | 1 + src/proto.c | 3 +++ 3 files changed, 14 insertions(+) (limited to 'src') diff --git a/src/metrics.c b/src/metrics.c index c16beb0..d3eaf52 100644 --- a/src/metrics.c +++ b/src/metrics.c @@ -23,6 +23,7 @@ prom_counter_t *retries = NULL; 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; enum MHD_Result promhttp_handler( void *cls, @@ -243,6 +244,15 @@ void metric_init() { (const char *[]) {"dist"} ) ); + + outbox_overflow = prom_collector_registry_must_register_metric( + prom_counter_new( + "dht_outbox_overflow", + "Number of times the outbox has overflowed", + 0, + NULL + ) + ); } void metric_end() { diff --git a/src/metrics.h b/src/metrics.h index d0b444f..3c79129 100644 --- a/src/metrics.h +++ b/src/metrics.h @@ -26,6 +26,7 @@ extern prom_counter_t *keepalive_count; extern prom_counter_t *requestsProcessed; extern prom_counter_t *lookup_count; +extern prom_counter_t *outbox_overflow; extern prom_gauge_t *routing_table_occupied; diff --git a/src/proto.c b/src/proto.c index 5d28ceb..314d846 100644 --- a/src/proto.c +++ b/src/proto.c @@ -734,6 +734,7 @@ int handle_packet(struct dht* dht, time_t now, enum commandType type, char* tran dht->pause = false; int rc = dht->requestdata[reqId].fun(dht, now, &dht->requestdata[reqId].cont, packet, packet_len, dht->sfd, (struct sockaddr*)remote, remote_len, msgbuff); if(rc == PROTO_ENOREQ) { + prom_counter_inc(outbox_overflow, NULL); dht->pause = true; } else if(rc == PROTO_EDISC) { return 0; @@ -880,6 +881,7 @@ int proto_run(struct dht* dht, char* buff, size_t recv_len, struct sockaddr_in* int rc = dht->requestdata[i].timeout_fun(dht, &dht->self, now, &dht->requestdata[i].cont, &msgbuff); if(rc == PROTO_ENOREQ) { + prom_counter_inc(outbox_overflow, NULL); dht->pause = true; recalulate_waketime(dht); return 0; @@ -905,6 +907,7 @@ int proto_run(struct dht* dht, char* buff, size_t recv_len, struct sockaddr_in* dest.sin_port = oldest->addr.port; int rc = send_ping(dht, &oldest->id, now, false, (const struct sockaddr*)&dest, sizeof(dest), &msgbuff); if(rc == PROTO_ENOREQ) { + prom_counter_inc(outbox_overflow, NULL); dht->pause = true; recalulate_waketime(dht); return 0; -- cgit v1.2.3