added support for signed and unsigned raw data collection
Costa Tsaousis (ktsaou) committed
Apr 11, 2014 at 01:01 UTC
ee4f533c0d1d19860690245d98b2dab21b1d8970
2 files changed
+126
-69
netdata.c
+124
-67
@@ -341,6 +341,9 @@ int create_listen_socket(int port)
341
struct rrd_dimension {
342
char id[RRD_STATS_NAME_MAX + 1];
343
char name[RRD_STATS_NAME_MAX + 1];
344
+
345
+ int issigned;
346
+
347
size_t bytes;
348
size_t entries;
349
@@ -399,6 +402,11 @@ RRD_STATS *rrd_stats_create(const char *id, const char *name, unsigned long entr
402
RRD_STATS *st = NULL;
403
char *p;
404
405
+ if(!id || !id[0]) {
406
+ error("Cannot create rrd stats without an id.");
407
+ return NULL;
408
+ }
409
+
410
debug(D_RRD_STATS, "Creating RRD_STATS for '%s'.", name);
411
412
st = calloc(1, sizeof(RRD_STATS));
@@ -414,7 +422,9 @@ RRD_STATS *rrd_stats_create(const char *id, const char *name, unsigned long entr
422
strncpy(st->id, id, RRD_STATS_NAME_MAX);
423
st->id[RRD_STATS_NAME_MAX] = '\0';
424
417
- strncpy(st->name, name, RRD_STATS_NAME_MAX);
425
+ if(name) strncpy(st->name, name, RRD_STATS_NAME_MAX);
426
+ else strncpy(st->name, id, RRD_STATS_NAME_MAX);
427
+
428
st->name[RRD_STATS_NAME_MAX] = '\0';
429
while((p = strchr(st->name, '/'))) *p = '_';
430
while((p = strchr(st->name, '?'))) *p = '_';
@@ -472,7 +482,7 @@ RRD_STATS *rrd_stats_create(const char *id, const char *name, unsigned long entr
482
return(st);
483
}
484
475
-RRD_DIMENSION *rrd_stats_dimension_add(RRD_STATS *st, const char *id, const char *name, size_t bytes, long multiplier, long divisor, int type, void *obsolete)
485
+RRD_DIMENSION *rrd_stats_dimension_add(RRD_STATS *st, const char *id, const char *name, size_t bytes, int issigned, long multiplier, long divisor, int type, void *obsolete)
486
{
487
RRD_DIMENSION *rd = NULL;
488
@@ -486,6 +496,7 @@ RRD_DIMENSION *rrd_stats_dimension_add(RRD_STATS *st, const char *id, const char
496
rd->multiplier = multiplier;
497
rd->divisor = divisor;
498
rd->type = type;
499
+ rd->issigned = issigned;
500
501
rd->values = calloc(rd->entries, rd->bytes);
502
if(!rd->values) {
@@ -580,27 +591,52 @@ void rrd_stats_dimension_set_by_pointer(RRD_STATS *st, RRD_DIMENSION *rd, void *
591
{
592
rd->last_updated = st->last_updated;
593
583
- if(rd->bytes == sizeof(long long)) {
584
- long long *dimension = rd->values, *value = data;
594
+ if(rd->issigned) {
595
+ if(rd->bytes == sizeof(long long)) {
596
+ long long *dimension = rd->values, *value = data;
597
586
- dimension[st->current_entry] = (*value);
587
- }
588
- else if(rd->bytes == sizeof(long)) {
589
- long *dimension = rd->values, *value = data;
598
+ dimension[st->current_entry] = (*value);
599
+ }
600
+ else if(rd->bytes == sizeof(long)) {
601
+ long *dimension = rd->values, *value = data;
602
591
- dimension[st->current_entry] = (*value);
592
- }
593
- else if(rd->bytes == sizeof(int)) {
594
- int *dimension = rd->values, *value = data;
603
+ dimension[st->current_entry] = (*value);
604
+ }
605
+ else if(rd->bytes == sizeof(short int)) {
606
+ short int *dimension = rd->values, *value = data;
607
+
608
+ dimension[st->current_entry] = (*value);
609
+ }
610
+ else if(rd->bytes == sizeof(char)) {
611
+ char *dimension = rd->values, *value = data;
612
596
- dimension[st->current_entry] = (*value);
613
+ dimension[st->current_entry] = (*value);
614
+ }
615
+ else fatal("I don't know how to handle data of length %d (signed) bytes.", rd->bytes);
616
}
598
- else if(rd->bytes == sizeof(char)) {
599
- char *dimension = rd->values, *value = data;
617
+ else {
618
+ if(rd->bytes == sizeof(unsigned long long)) {
619
+ unsigned long long *dimension = rd->values, *value = data;
620
+
621
+ dimension[st->current_entry] = (*value);
622
+ }
623
+ else if(rd->bytes == sizeof(unsigned long)) {
624
+ unsigned long *dimension = rd->values, *value = data;
625
601
- dimension[st->current_entry] = (*value);
626
+ dimension[st->current_entry] = (*value);
627
+ }
628
+ else if(rd->bytes == sizeof(unsigned short int)) {
629
+ unsigned short int *dimension = rd->values, *value = data;
630
+
631
+ dimension[st->current_entry] = (*value);
632
+ }
633
+ else if(rd->bytes == sizeof(unsigned char)) {
634
+ unsigned char *dimension = rd->values, *value = data;
635
+
636
+ dimension[st->current_entry] = (*value);
637
+ }
638
+ else fatal("I don't know how to handle data of length %d (unsigned) bytes.", rd->bytes);
639
}
603
- else fatal("I don't know how to handle data of length %d bytes.", rd->bytes);
640
641
// clear any previous annotations
642
/* if(rd->annotations[st->current_entry]) {
@@ -913,8 +949,9 @@ void rrd_stats_all_json(struct web_buffer *wb)
949
wb->bytes += sprintf(&wb->buffer[wb->bytes], RRD_GRAPH_JSON_FOOTER);
950
}
951
916
-long long rrd_stats_dimension_get(RRD_DIMENSION *rd, size_t position)
952
+long double rrd_stats_dimension_get(RRD_DIMENSION *rd, size_t position)
953
{
954
+ if(rd->issigned) {
955
if(rd->bytes == sizeof(long long)) {
956
long long *dimension = rd->values;
957
return(dimension[position]);
@@ -923,17 +960,37 @@ long long rrd_stats_dimension_get(RRD_DIMENSION *rd, size_t position)
960
long *dimension = rd->values;
961
return(dimension[position]);
962
}
926
- else if(rd->bytes == sizeof(int)) {
927
- int *dimension = rd->values;
963
+ else if(rd->bytes == sizeof(short int)) {
964
+ short int *dimension = rd->values;
965
return(dimension[position]);
966
}
967
else if(rd->bytes == sizeof(char)) {
968
char *dimension = rd->values;
969
return(dimension[position]);
970
}
934
- else fatal("Cannot produce JSON for size %d bytes dimension.", rd->bytes);
971
+ else fatal("Cannot produce JSON for size %d bytes (signed) dimension.", rd->bytes);
972
+ }
973
+ else {
974
+ if(rd->bytes == sizeof(unsigned long long)) {
975
+ unsigned long long *dimension = rd->values;
976
+ return(dimension[position]);
977
+ }
978
+ else if(rd->bytes == sizeof(unsigned long)) {
979
+ unsigned long *dimension = rd->values;
980
+ return(dimension[position]);
981
+ }
982
+ else if(rd->bytes == sizeof(unsigned short int)) {
983
+ unsigned short int *dimension = rd->values;
984
+ return(dimension[position]);
985
+ }
986
+ else if(rd->bytes == sizeof(unsigned char)) {
987
+ unsigned char *dimension = rd->values;
988
+ return(dimension[position]);
989
+ }
990
+ else fatal("Cannot produce JSON for size %d bytes (unsigned) dimension.", rd->bytes);
991
+ }
992
936
- return(0);
993
+ return(0);
994
}
995
996
@@ -1102,16 +1159,16 @@ void rrd_stats_json(RRD_STATS *st, struct web_buffer *wb, size_t entries_to_show
1159
long double total = 0, oldtotal = 0;
1160
if(we_need_totals) {
1161
for( rd = st->dimensions, c = 0 ; rd && c < dimensions ; rd = rd->next, c++) {
1105
- total += (long double)rrd_stats_dimension_get(rd, t);
1106
- oldtotal += (long double)rrd_stats_dimension_get(rd, lt);
1162
+ total += rrd_stats_dimension_get(rd, t);
1163
+ oldtotal += rrd_stats_dimension_get(rd, lt);
1164
}
1165
}
1166
1167
for( rd = st->dimensions, c = 0 ; rd && c < dimensions ; rd = rd->next, c++) {
1168
long double oldvalue, value; // temp variable for storing data values
1169
1113
- value = (long double)rrd_stats_dimension_get(rd, t);
1114
- oldvalue = (long double)rrd_stats_dimension_get(rd, lt);
1170
+ value = rrd_stats_dimension_get(rd, t);
1171
+ oldvalue = rrd_stats_dimension_get(rd, lt);
1172
1173
switch(rd->type) {
1174
case RRD_DIMENSION_PCENT_OVER_TOTAL:
@@ -2206,10 +2263,10 @@ int do_proc_net_dev() {
2263
continue;
2264
}
2265
2209
- if(!rrd_stats_dimension_add(st, "sent", "sent", sizeof(unsigned long long), -8, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
2266
+ if(!rrd_stats_dimension_add(st, "sent", "sent", sizeof(unsigned long long), 0, -8, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
2267
error("Cannot add RRD_STATS dimension %s.", "sent");
2268
2212
- if(!rrd_stats_dimension_add(st, "received", "received", sizeof(unsigned long long), 8, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
2269
+ if(!rrd_stats_dimension_add(st, "received", "received", sizeof(unsigned long long), 0, 8, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
2270
error("Cannot add RRD_STATS dimension %s.", "received");
2271
2272
}
@@ -2393,10 +2450,10 @@ int do_proc_diskstats() {
2450
continue;
2451
}
2452
2396
- if(!rrd_stats_dimension_add(st, "writes", "writes", sizeof(unsigned long long), sector_size * -1, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
2453
+ if(!rrd_stats_dimension_add(st, "writes", "writes", sizeof(unsigned long long), 0, sector_size * -1, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
2454
error("Cannot add RRD_STATS dimension %s.", "writes");
2455
2399
- if(!rrd_stats_dimension_add(st, "reads", "reads", sizeof(unsigned long long), sector_size, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
2456
+ if(!rrd_stats_dimension_add(st, "reads", "reads", sizeof(unsigned long long), 0, sector_size, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
2457
error("Cannot add RRD_STATS dimension %s.", "reads");
2458
2459
}
@@ -2457,13 +2514,13 @@ int do_proc_net_snmp() {
2514
continue;
2515
}
2516
2460
- if(!rrd_stats_dimension_add(st, "forwarded", "forwarded", sizeof(unsigned long long), 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2517
+ if(!rrd_stats_dimension_add(st, "forwarded", "forwarded", sizeof(unsigned long long), 0, 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2518
error("Cannot add RRD_STATS dimension %s.", "forwarded");
2519
2463
- if(!rrd_stats_dimension_add(st, "sent", "sent", sizeof(unsigned long long), -1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2520
+ if(!rrd_stats_dimension_add(st, "sent", "sent", sizeof(unsigned long long), 0, -1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2521
error("Cannot add RRD_STATS dimension %s.", "sent");
2522
2466
- if(!rrd_stats_dimension_add(st, "received", "received", sizeof(unsigned long long), 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2523
+ if(!rrd_stats_dimension_add(st, "received", "received", sizeof(unsigned long long), 0, 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2524
error("Cannot add RRD_STATS dimension %s.", "received");
2525
2526
}
@@ -2501,7 +2558,7 @@ int do_proc_net_snmp() {
2558
continue;
2559
}
2560
2504
- if(!rrd_stats_dimension_add(st, "connections", "connections", sizeof(unsigned long long), 1, 1, RRD_DIMENSION_ABSOLUTE, NULL))
2561
+ if(!rrd_stats_dimension_add(st, "connections", "connections", sizeof(unsigned long long), 0, 1, 1, RRD_DIMENSION_ABSOLUTE, NULL))
2562
error("Cannot add RRD_STATS dimension %s.", "connections");
2563
}
2564
else rrd_stats_next(st);
@@ -2517,10 +2574,10 @@ int do_proc_net_snmp() {
2574
continue;
2575
}
2576
2520
- if(!rrd_stats_dimension_add(st, "sent", "sent", sizeof(unsigned long long), -1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2577
+ if(!rrd_stats_dimension_add(st, "sent", "sent", sizeof(unsigned long long), 0, -1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2578
error("Cannot add RRD_STATS dimension %s.", "sent");
2579
2523
- if(!rrd_stats_dimension_add(st, "received", "received", sizeof(unsigned long long), 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2580
+ if(!rrd_stats_dimension_add(st, "received", "received", sizeof(unsigned long long), 0, 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2581
error("Cannot add RRD_STATS dimension %s.", "received");
2582
}
2583
else rrd_stats_next(st);
@@ -2556,10 +2613,10 @@ int do_proc_net_snmp() {
2613
continue;
2614
}
2615
2559
- if(!rrd_stats_dimension_add(st, "sent", "sent", sizeof(unsigned long long), -1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2616
+ if(!rrd_stats_dimension_add(st, "sent", "sent", sizeof(unsigned long long), 0, -1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2617
error("Cannot add RRD_STATS dimension %s.", "sent");
2618
2562
- if(!rrd_stats_dimension_add(st, "received", "received", sizeof(unsigned long long), 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2619
+ if(!rrd_stats_dimension_add(st, "received", "received", sizeof(unsigned long long), 0, 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2620
error("Cannot add RRD_STATS dimension %s.", "received");
2621
}
2622
else rrd_stats_next(st);
@@ -2616,10 +2673,10 @@ int do_proc_net_netstat() {
2673
continue;
2674
}
2675
2619
- if(!rrd_stats_dimension_add(st, "sent", "sent", sizeof(unsigned long long), -8, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
2676
+ if(!rrd_stats_dimension_add(st, "sent", "sent", sizeof(unsigned long long), 0, -8, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
2677
error("Cannot add RRD_STATS dimension %s.", "sent");
2678
2622
- if(!rrd_stats_dimension_add(st, "received", "received", sizeof(unsigned long long), 8, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
2679
+ if(!rrd_stats_dimension_add(st, "received", "received", sizeof(unsigned long long), 0, 8, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
2680
error("Cannot add RRD_STATS dimension %s.", "received");
2681
2682
}
@@ -2695,7 +2752,7 @@ int do_proc_net_stat_conntrack() {
2752
return 1;
2753
}
2754
2698
- if(!rrd_stats_dimension_add(st, "connections", "connections", sizeof(unsigned long long), 1, 1, RRD_DIMENSION_ABSOLUTE, NULL))
2755
+ if(!rrd_stats_dimension_add(st, "connections", "connections", sizeof(unsigned long long), 0, 1, 1, RRD_DIMENSION_ABSOLUTE, NULL))
2756
error("Cannot add RRD_STATS dimension %s.", "connections");
2757
}
2758
else rrd_stats_next(st);
@@ -2711,10 +2768,10 @@ int do_proc_net_stat_conntrack() {
2768
return 1;
2769
}
2770
2714
- if(!rrd_stats_dimension_add(st, "dropped", "dropped", sizeof(unsigned long long), -1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2771
+ if(!rrd_stats_dimension_add(st, "dropped", "dropped", sizeof(unsigned long long), 0, -1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2772
error("Cannot add RRD_STATS dimension %s.", "dropped");
2773
2717
- if(!rrd_stats_dimension_add(st, "new", "new", sizeof(unsigned long long), 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2774
+ if(!rrd_stats_dimension_add(st, "new", "new", sizeof(unsigned long long), 0, 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2775
error("Cannot add RRD_STATS dimension %s.", "new");
2776
}
2777
else rrd_stats_next(st);
@@ -2731,10 +2788,10 @@ int do_proc_net_stat_conntrack() {
2788
return 1;
2789
}
2790
2734
- if(!rrd_stats_dimension_add(st, "deleted", "deleted", sizeof(unsigned long long), -1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2791
+ if(!rrd_stats_dimension_add(st, "deleted", "deleted", sizeof(unsigned long long), 0, -1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2792
error("Cannot add RRD_STATS dimension %s.", "deleted");
2793
2737
- if(!rrd_stats_dimension_add(st, "inserted", "inserted", sizeof(unsigned long long), 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2794
+ if(!rrd_stats_dimension_add(st, "inserted", "inserted", sizeof(unsigned long long), 0, 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2795
error("Cannot add RRD_STATS dimension %s.", "inserted");
2796
}
2797
else rrd_stats_next(st);
@@ -2797,7 +2854,7 @@ int do_proc_net_ip_vs_stats() {
2854
return 1;
2855
}
2856
2800
- if(!rrd_stats_dimension_add(st, "connections", "connections", sizeof(unsigned long long), 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2857
+ if(!rrd_stats_dimension_add(st, "connections", "connections", sizeof(unsigned long long), 0, 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2858
error("Cannot add RRD_STATS dimension %s.", "connections");
2859
}
2860
else rrd_stats_next(st);
@@ -2813,10 +2870,10 @@ int do_proc_net_ip_vs_stats() {
2870
return 1;
2871
}
2872
2816
- if(!rrd_stats_dimension_add(st, "sent", "sent", sizeof(unsigned long long), -1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2873
+ if(!rrd_stats_dimension_add(st, "sent", "sent", sizeof(unsigned long long), 0, -1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2874
error("Cannot add RRD_STATS dimension %s.", "sent");
2875
2819
- if(!rrd_stats_dimension_add(st, "received", "received", sizeof(unsigned long long), 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2876
+ if(!rrd_stats_dimension_add(st, "received", "received", sizeof(unsigned long long), 0, 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
2877
error("Cannot add RRD_STATS dimension %s.", "received");
2878
}
2879
else rrd_stats_next(st);
@@ -2833,10 +2890,10 @@ int do_proc_net_ip_vs_stats() {
2890
return 1;
2891
}
2892
2836
- if(!rrd_stats_dimension_add(st, "sent", "sent", sizeof(unsigned long long), -8, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
2893
+ if(!rrd_stats_dimension_add(st, "sent", "sent", sizeof(unsigned long long), 0, -8, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
2894
error("Cannot add RRD_STATS dimension %s.", "sent");
2895
2839
- if(!rrd_stats_dimension_add(st, "received", "received", sizeof(unsigned long long), 8, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
2896
+ if(!rrd_stats_dimension_add(st, "received", "received", sizeof(unsigned long long), 0, 8, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
2897
error("Cannot add RRD_STATS dimension %s.", "received");
2898
}
2899
else rrd_stats_next(st);
@@ -2886,35 +2943,35 @@ int do_proc_stat() {
2943
long multiplier = 1;
2944
long divisor = 1; // sysconf(_SC_CLK_TCK);
2945
2889
- if(!rrd_stats_dimension_add(st, "iowait", "iowait", sizeof(unsigned long long), multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2946
+ if(!rrd_stats_dimension_add(st, "iowait", "iowait", sizeof(unsigned long long), 0, multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2947
error("Cannot add RRD_STATS dimension %s.", "iowait");
2948
2892
- if(!rrd_stats_dimension_add(st, "nice", "nice", sizeof(unsigned long long), multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2949
+ if(!rrd_stats_dimension_add(st, "nice", "nice", sizeof(unsigned long long), 0, multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2950
error("Cannot add RRD_STATS dimension %s.", "nice");
2951
2895
- if(!rrd_stats_dimension_add(st, "system", "system", sizeof(unsigned long long), multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2952
+ if(!rrd_stats_dimension_add(st, "system", "system", sizeof(unsigned long long), 0, multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2953
error("Cannot add RRD_STATS dimension %s.", "system");
2954
2898
- if(!rrd_stats_dimension_add(st, "user", "user", sizeof(unsigned long long), multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2955
+ if(!rrd_stats_dimension_add(st, "user", "user", sizeof(unsigned long long), 0, multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2956
error("Cannot add RRD_STATS dimension %s.", "user");
2957
2901
- if(!rrd_stats_dimension_add(st, "idle", "idle", sizeof(unsigned long long), multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2958
+ if(!rrd_stats_dimension_add(st, "idle", "idle", sizeof(unsigned long long), 0, multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2959
error("Cannot add RRD_STATS dimension %s.", "idle");
2960
else rrd_stats_dimension_hide(st, "idle");
2961
2905
- if(!rrd_stats_dimension_add(st, "irq", "irq", sizeof(unsigned long long), multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2962
+ if(!rrd_stats_dimension_add(st, "irq", "irq", sizeof(unsigned long long), 0, multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2963
error("Cannot add RRD_STATS dimension %s.", "irq");
2964
2908
- if(!rrd_stats_dimension_add(st, "softirq", "softirq", sizeof(unsigned long long), multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2965
+ if(!rrd_stats_dimension_add(st, "softirq", "softirq", sizeof(unsigned long long), 0, multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2966
error("Cannot add RRD_STATS dimension %s.", "softirq");
2967
2911
- if(!rrd_stats_dimension_add(st, "steal", "steal", sizeof(unsigned long long), multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2968
+ if(!rrd_stats_dimension_add(st, "steal", "steal", sizeof(unsigned long long), 0, multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2969
error("Cannot add RRD_STATS dimension %s.", "steal");
2970
2914
- if(!rrd_stats_dimension_add(st, "guest", "guest", sizeof(unsigned long long), multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2971
+ if(!rrd_stats_dimension_add(st, "guest", "guest", sizeof(unsigned long long), 0, multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2972
error("Cannot add RRD_STATS dimension %s.", "guest");
2973
2917
- if(!rrd_stats_dimension_add(st, "guest_nice", "guest_nice", sizeof(unsigned long long), multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2974
+ if(!rrd_stats_dimension_add(st, "guest_nice", "guest_nice", sizeof(unsigned long long), 0, multiplier, divisor, RRD_DIMENSION_PCENT_OVER_TOTAL, NULL))
2975
error("Cannot add RRD_STATS dimension %s.", "guest_nice");
2976
2977
}
@@ -2950,7 +3007,7 @@ int do_proc_stat() {
3007
continue;
3008
}
3009
2953
- if(!rrd_stats_dimension_add(st, "interrupts", "interrupts", sizeof(unsigned long long), 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
3010
+ if(!rrd_stats_dimension_add(st, "interrupts", "interrupts", sizeof(unsigned long long), 0, 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
3011
error("Cannot add RRD_STATS dimension %s.", "interrupts");
3012
3013
}
@@ -2977,7 +3034,7 @@ int do_proc_stat() {
3034
continue;
3035
}
3036
2980
- if(!rrd_stats_dimension_add(st, "switches", "switches", sizeof(unsigned long long), 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
3037
+ if(!rrd_stats_dimension_add(st, "switches", "switches", sizeof(unsigned long long), 0, 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
3038
error("Cannot add RRD_STATS dimension %s.", "switches");
3039
3040
}
@@ -3004,7 +3061,7 @@ int do_proc_stat() {
3061
continue;
3062
}
3063
3007
- if(!rrd_stats_dimension_add(st, "started", "started", sizeof(unsigned long long), 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
3064
+ if(!rrd_stats_dimension_add(st, "started", "started", sizeof(unsigned long long), 0, 1, 1, RRD_DIMENSION_INCREMENTAL, NULL))
3065
error("Cannot add RRD_STATS dimension %s.", "started");
3066
3067
}
@@ -3031,7 +3088,7 @@ int do_proc_stat() {
3088
continue;
3089
}
3090
3034
- if(!rrd_stats_dimension_add(st, "running", "running", sizeof(unsigned long long), 1, 1, RRD_DIMENSION_ABSOLUTE, NULL))
3091
+ if(!rrd_stats_dimension_add(st, "running", "running", sizeof(unsigned long long), 0, 1, 1, RRD_DIMENSION_ABSOLUTE, NULL))
3092
error("Cannot add RRD_STATS dimension %s.", "running");
3093
3094
}
@@ -3175,7 +3232,7 @@ void tc_device_commit(struct tc_device *d)
3232
3233
for ( c = d->classes ; c ; c = c->next) {
3234
if(c->isleaf && c->hasparent) {
3178
- if(!rrd_stats_dimension_add(st, c->id, c->name, sizeof(unsigned long long), 8, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
3235
+ if(!rrd_stats_dimension_add(st, c->id, c->name, sizeof(unsigned long long), 0, 8, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
3236
error("Cannot add RRD_STATS dimension %s.", c->name);
3237
}
3238
}
@@ -3187,7 +3244,7 @@ void tc_device_commit(struct tc_device *d)
3244
if(rrd_stats_dimension_set(st, c->id, &c->bytes, NULL) != 0) {
3245
3246
// new class, we have to add it
3190
- if(!rrd_stats_dimension_add(st, c->id, c->name, sizeof(unsigned long long), 8, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
3247
+ if(!rrd_stats_dimension_add(st, c->id, c->name, sizeof(unsigned long long), 0, 8, 1024, RRD_DIMENSION_INCREMENTAL, NULL))
3248
error("Cannot add RRD_STATS dimension %s.", c->name);
3249
else rrd_stats_dimension_set(st, c->id, &c->bytes, NULL);
3250
}
@@ -3385,7 +3442,7 @@ void *cpujitter_main(void *ptr)
3442
continue;
3443
}
3444
3388
- if(!rrd_stats_dimension_add(st, "jitter", "jitter", sizeof(unsigned long long), 1, 1, RRD_DIMENSION_ABSOLUTE, NULL))
3445
+ if(!rrd_stats_dimension_add(st, "jitter", "jitter", sizeof(unsigned long long), 0, 1, 1, RRD_DIMENSION_ABSOLUTE, NULL))
3446
error("Cannot add RRD_STATS dimension %s.", "jitter");
3447
3448
}
web/netdata.js
+2
-2
@@ -228,7 +228,7 @@ function loadCharts(base_url, doNext) {
228
lineWidth: 1,
229
title: json.charts[i].title,
230
hAxis: {title: "Time of Day", viewWindowMode: 'maximized', format:'HH:mm:ss'},
231
- vAxis: {title: json.charts[i].vtitle, minValue: 0},
231
+ vAxis: {title: json.charts[i].vtitle, viewWindowMode: 'pretty', minValue: 0, maxValue: 10},
232
focusTarget: 'category',
233
annotation: {'1': {style: 'line'}},
234
//tooltip: {isHtml: true},
@@ -279,7 +279,7 @@ function loadCharts(base_url, doNext) {
279
280
if(json.charts[i].id.substring(0, 7) == "cpu.cpu") {
281
json.charts[i].chartOptions.vAxis.minValue = 0;
282
- json.charts[i].chartOptions.vAxis.maxValue = 100;
282
+ json.charts[i].chartOptions.vAxis.maxValue = 101;
283
}
284
break;
285