@cryptotaxi247 / netdata-1 / commits / a87922f07

chart dimensions (names, multipliers, divisors, algorithms) are now configurable in the config file

Costa Tsaousis (ktsaou) committed May 1, 2014 at 06:15 UTC a87922f070ebd2fdf35532f398c1e09db191530a
1 file changed +56 -29
netdata.c
+56 -29
@@ -35,11 +35,6 @@
35 #include <inttypes.h>
36
37
38 -#define RRD_DIMENSION_ABSOLUTE 0
39 -#define RRD_DIMENSION_INCREMENTAL 1
40 -#define RRD_DIMENSION_PCENT_OVER_DIFF_TOTAL 2
41 -#define RRD_DIMENSION_PCENT_OVER_ROW_TOTAL 3
42 -
38 #define RRD_TYPE_NET "net"
39 #define RRD_TYPE_NET_LEN strlen(RRD_TYPE_NET)
40
@@ -679,6 +674,47 @@ const char *chart_type_name(int chart_type)
674 }
675
676
677 +// ----------------------------------------------------------------------------
678 +// algorithms types
679 +
680 +#define RRD_DIMENSION_ABSOLUTE 0
681 +#define RRD_DIMENSION_INCREMENTAL 1
682 +#define RRD_DIMENSION_PCENT_OVER_DIFF_TOTAL 2
683 +#define RRD_DIMENSION_PCENT_OVER_ROW_TOTAL 3
684 +
685 +int algorithm_id(const char *name)
686 +{
687 + if(strcmp(name, "absolute") == 0) return RRD_DIMENSION_ABSOLUTE;
688 + if(strcmp(name, "incremental") == 0) return RRD_DIMENSION_INCREMENTAL;
689 + if(strcmp(name, "percentage-of-absolute-row") == 0) return RRD_DIMENSION_PCENT_OVER_ROW_TOTAL;
690 + if(strcmp(name, "percentage-of-incremental-row") == 0) return RRD_DIMENSION_PCENT_OVER_DIFF_TOTAL;
691 + return RRD_DIMENSION_ABSOLUTE;
692 +}
693 +
694 +const char *algorithm_name(int chart_type)
695 +{
696 + static char *absolute = "absolute";
697 + static char *incremental = "incremental";
698 + static char *percentage_of_absolute_row = "percentage-of-absolute-row";
699 + static char *percentage_of_incremental_row = "percentage-of-incremental-row";
700 +
701 + switch(chart_type) {
702 + case RRD_DIMENSION_ABSOLUTE:
703 + return absolute;
704 +
705 + case RRD_DIMENSION_INCREMENTAL:
706 + return incremental;
707 +
708 + case RRD_DIMENSION_PCENT_OVER_ROW_TOTAL:
709 + return percentage_of_absolute_row;
710 +
711 + case RRD_DIMENSION_PCENT_OVER_DIFF_TOTAL:
712 + return percentage_of_incremental_row;
713 + }
714 + return absolute;
715 +}
716 +
717 +
718 // ----------------------------------------------------------------------------
719 // FAST NUMBER TO STRING
720
@@ -887,6 +923,20 @@ RRD_DIMENSION *rrd_stats_dimension_add(RRD_STATS *st, const char *id, const char
923 return NULL;
924 }
925
926 + char varname[RRD_STATS_NAME_MAX + 1];
927 +
928 + snprintf(varname, RRD_STATS_NAME_MAX, "dim %s name", id);
929 + name = config_get(st->id, varname, name?name:id);
930 +
931 + snprintf(varname, RRD_STATS_NAME_MAX, "dim %s algorithm", id);
932 + algorithm = algorithm_id(config_get(st->id, varname, algorithm_name(algorithm)));
933 +
934 + snprintf(varname, RRD_STATS_NAME_MAX, "dim %s multiplier", id);
935 + multiplier = config_get_number(st->id, varname, multiplier);
936 +
937 + snprintf(varname, RRD_STATS_NAME_MAX, "dim %s divisor", id);
938 + divisor = config_get_number(st->id, varname, divisor);
939 +
940 rd->entries = st->entries;
941 rd->multiplier = multiplier;
942 rd->divisor = divisor;
@@ -1585,29 +1635,6 @@ unsigned long rrd_stats_one_json(RRD_STATS *st, char *options, struct web_buffer
1635 unsigned long rdmem = sizeof(RRD_DIMENSION) + (sizeof(storage_number) * rd->entries);
1636 memory += rdmem;
1637
1588 - char *algorithm = "";
1589 - switch(rd->algorithm) {
1590 - case RRD_DIMENSION_INCREMENTAL:
1591 - algorithm = "incremental";
1592 - break;
1593 -
1594 - case RRD_DIMENSION_ABSOLUTE:
1595 - algorithm = "absolute";
1596 - break;
1597 -
1598 - case RRD_DIMENSION_PCENT_OVER_DIFF_TOTAL:
1599 - algorithm = "percent on incremental total";
1600 - break;
1601 -
1602 - case RRD_DIMENSION_PCENT_OVER_ROW_TOTAL:
1603 - algorithm = "percent on absolute total";
1604 - break;
1605 -
1606 - default:
1607 - algorithm = "other";
1608 - break;
1609 - }
1610 -
1638 web_buffer_printf(wb,
1639 "\t\t\t\t{\n"
1640 "\t\t\t\t\t\"id\": \"%s\",\n"
@@ -1628,7 +1655,7 @@ unsigned long rrd_stats_one_json(RRD_STATS *st, char *options, struct web_buffer
1655 , rd->name
1656 , rd->entries
1657 , rd->hidden
1631 - , algorithm
1658 + , algorithm_name(rd->algorithm)
1659 , rd->multiplier
1660 , rd->divisor
1661 , rd->last_updated.tv_sec