@cryptotaxi247 / netdata-1 / commits / ee4f533c0

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