diff options
| author | Jesper Jensen <jesper@jnsn.dev> | 2025-05-11 00:25:12 +0200 |
|---|---|---|
| committer | Jesper Jensen <jesper@jnsn.dev> | 2025-05-11 00:25:39 +0200 |
| commit | abc0b1c73cfc8da2a0a0bca02c8689f73a1588f2 (patch) | |
| tree | 97a2fb373b37ce8bbeb670d1a3d30812fbde7b98 /src | |
| parent | e3ff3bb996a0947a1539623902cbc5701beccef3 (diff) | |
Add metric for discarded packets
Diffstat (limited to 'src')
| -rw-r--r-- | src/metrics.c | 10 | ||||
| -rw-r--r-- | src/metrics.h | 1 | ||||
| -rw-r--r-- | src/proto.c | 3 |
3 files changed, 14 insertions, 0 deletions
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; |
