added chart to monitor the backend server latency
Costa Tsaousis (ktsaou) committed
Nov 20, 2016 at 15:29 UTC
5eabd11d450317f51ab4a8ea8a41f32fb93c39bc
1 file changed
+19
-3
src/backends.c
+19
-3
@@ -329,7 +329,8 @@ void *backends_main(void *ptr) {
329
chart_transmission_failures = 0,
330
chart_data_lost_events = 0,
331
chart_lost_bytes = 0,
332
- chart_backend_reconnects = 0;
332
+ chart_backend_reconnects = 0,
333
+ chart_backend_latency = 0;
334
335
RRDSET *chart_metrics = rrdset_find("netdata.backend_metrics");
336
if(!chart_metrics) {
@@ -349,13 +350,19 @@ void *backends_main(void *ptr) {
350
351
RRDSET *chart_ops = rrdset_find("netdata.backend_ops");
352
if(!chart_ops) {
352
- chart_ops = rrdset_create("netdata", "backend_ops", NULL, "backend", NULL, "Netdata Backend Operations", "operations", 130620, frequency, RRDSET_TYPE_LINE);
353
+ chart_ops = rrdset_create("netdata", "backend_ops", NULL, "backend", NULL, "Netdata Backend Operations", "operations", 130630, frequency, RRDSET_TYPE_LINE);
354
rrddim_add(chart_ops, "write", NULL, 1, 1, RRDDIM_ABSOLUTE);
355
rrddim_add(chart_ops, "discard", NULL, 1, 1, RRDDIM_ABSOLUTE);
356
rrddim_add(chart_ops, "reconnect", NULL, 1, 1, RRDDIM_ABSOLUTE);
357
rrddim_add(chart_ops, "failure", NULL, 1, 1, RRDDIM_ABSOLUTE);
358
}
359
360
+ RRDSET *chart_latency = rrdset_find("netdata.backend_latency");
361
+ if(!chart_latency) {
362
+ chart_latency = rrdset_create("netdata", "backend_latency", NULL, "backend", NULL, "Netdata Backend Latency", "ms", 130620, frequency, RRDSET_TYPE_AREA);
363
+ rrddim_add(chart_latency, "latency", NULL, 1, 1000, RRDDIM_ABSOLUTE);
364
+ }
365
+
366
// ------------------------------------------------------------------------
367
// prepare the backend main loop
368
@@ -419,7 +426,8 @@ void *backends_main(void *ptr) {
426
chart_transmission_failures =
427
chart_data_lost_events =
428
chart_lost_bytes =
422
- chart_backend_reconnects = 0;
429
+ chart_backend_reconnects =
430
+ chart_backend_latency = 0;
431
432
if(unlikely(netdata_exit)) break;
433
@@ -430,6 +438,7 @@ void *backends_main(void *ptr) {
438
// connect to a backend server
439
440
if(unlikely(sock == -1)) {
441
+ unsigned long long start_ut = time_usec();
442
const char *s = destination;
443
while(*s) {
444
const char *e = s;
@@ -450,6 +459,7 @@ void *backends_main(void *ptr) {
459
if(sock != -1) break;
460
s = e;
461
}
462
+ chart_backend_latency += time_usec() - start_ut;
463
}
464
465
if(unlikely(netdata_exit)) break;
@@ -459,7 +469,9 @@ void *backends_main(void *ptr) {
469
470
if(likely(sock != -1)) {
471
size_t len = buffer_strlen(b);
472
+ unsigned long long start_ut = time_usec();
473
ssize_t written = write(sock, buffer_tostring(b), len);
474
+ chart_backend_latency += time_usec() - start_ut;
475
if(written != -1 && (size_t)written == len) {
476
// we sent the data successfully
477
chart_transmission_successes++;
@@ -536,6 +548,10 @@ void *backends_main(void *ptr) {
548
rrddim_set(chart_bytes, "sent", chart_sent_bytes);
549
rrdset_done(chart_bytes);
550
551
+ if(chart_latency->counter_done) rrdset_next(chart_latency);
552
+ rrddim_set(chart_latency, "latency", chart_backend_latency);
553
+ rrdset_done(chart_latency);
554
+
555
if(likely(buffer_strlen(b) == 0))
556
chart_buffered_metrics = 0;
557