summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/metrics.c11
-rw-r--r--src/metrics.h2
-rw-r--r--src/proto.c16
3 files changed, 26 insertions, 3 deletions
diff --git a/src/metrics.c b/src/metrics.c
index c1113a7..c16beb0 100644
--- a/src/metrics.c
+++ b/src/metrics.c
@@ -7,6 +7,8 @@ prom_counter_t *bytesRecv = NULL;
prom_counter_t *bytesSent = NULL;
prom_counter_t *meta = NULL;
+prom_gauge_t *wakeup_time = NULL;
+
prom_counter_t *peers = NULL;
prom_gauge_t *current_hashes = NULL;
prom_counter_t *hashes = NULL;
@@ -106,6 +108,15 @@ void metric_init() {
)
);
+ wakeup_time = prom_collector_registry_must_register_metric(
+ prom_gauge_new(
+ "dht_wakeup_time",
+ "Time for next wakeup",
+ 1,
+ (const char *[]){ "component" }
+ )
+ );
+
peers = prom_collector_registry_must_register_metric(
prom_counter_new(
"dht_peers_total",
diff --git a/src/metrics.h b/src/metrics.h
index befd3aa..d0b444f 100644
--- a/src/metrics.h
+++ b/src/metrics.h
@@ -9,6 +9,8 @@ extern prom_counter_t *bytesSent;
extern prom_counter_t *meta;
+extern prom_gauge_t *wakeup_time;
+
extern prom_counter_t *peers;
extern prom_gauge_t *current_hashes;
extern prom_counter_t *hashes;
diff --git a/src/proto.c b/src/proto.c
index 51eb71b..cd66ead 100644
--- a/src/proto.c
+++ b/src/proto.c
@@ -825,19 +825,29 @@ static void recalulate_waketime(struct dht *dht) {
if(!dht->pause){
struct entry* oldest;
routing_oldest(&oldest);
- if(oldest != NULL)
+ if(oldest != NULL) {
dht->wake = oldest->expire;
+ prom_gauge_set(wakeup_time, oldest->expire, (const char *[]){"routing"});
+ }
}
+ time_t req_timeout = 0;
for(int i = 0; i < MAX_INFLIGHT; i++) {
if(!dht->reqalloc[i])
continue;
time_t timeout = dht->requestdata[i].timeout;
- if(dht->wake == 0 || (timeout != 0 && difftime(timeout, dht->wake) < 0))
- dht->wake = timeout;
+ if(req_timeout == 0 || (timeout != 0 && difftime(timeout, req_timeout) < 0)) {
+ req_timeout = timeout;
+ }
+ }
+
+ prom_gauge_set(wakeup_time, req_timeout, (const char *[]){"requests"});
+ if(dht->wake == 0 || (req_timeout != 0 && difftime(req_timeout, dht->wake) < 0)) {
+ dht->wake = req_timeout;
}
+ prom_gauge_set(wakeup_time, dht->lookup.timeout, (const char *[]){"lookup"});
if(dht->wake == 0 || difftime(dht->lookup.timeout, dht->wake) < 0) {
dht->wake = dht->lookup.timeout;
}