@cryptotaxi247 / netdata-1 / commits / b075f4d45

allow the events dimension to be disabled

Costa Tsaousis (ktsaou) committed Apr 26, 2017 at 10:13 UTC b075f4d45ce2fc2642728533b652ef333dbc0562
1 file changed +38 -39
src/statsd.c
+38 -39
@@ -58,6 +58,7 @@ typedef enum statsd_metric_options {
58 STATSD_METRIC_OPTION_SHOW_GAPS_WHEN_NOT_COLLECTED = 0x00000001,
59 STATSD_METRIC_OPTION_PRIVATE_CHART_ENABLED = 0x00000002,
60 STATSD_METRIC_OPTION_PRIVATE_CHART_DISABLED = 0x00000004,
61 + STATSD_METRIC_OPTION_CHART_DIMENSION_COUNT = 0x00000008,
62 } STATS_METRIC_OPTIONS;
63
64 typedef struct statsd_metric {
@@ -724,7 +725,8 @@ static inline void statsd_chart_from_gauge(STATSD_METRIC *m) {
725 );
726
727 m->rd_value = rrddim_add(m->st, "gauge", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
727 - m->rd_count = rrddim_add(m->st, "events", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
728 + if(m->options & STATSD_METRIC_OPTION_CHART_DIMENSION_COUNT)
729 + m->rd_count = rrddim_add(m->st, "events", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
730 }
731 else rrdset_next(m->st);
732
@@ -733,20 +735,23 @@ static inline void statsd_chart_from_gauge(STATSD_METRIC *m) {
735
736 m->reset = 1;
737 rrddim_set_by_pointer(m->st, m->rd_value, m->last);
736 - rrddim_set_by_pointer(m->st, m->rd_count, (collected_number)m->events);
738 +
739 + if(m->rd_count)
740 + rrddim_set_by_pointer(m->st, m->rd_count, (collected_number)m->events);
741 +
742 rrdset_done(m->st);
743 }
744
740 -static inline void statsd_chart_from_counter(STATSD_METRIC *m) {
745 +static inline void statsd_chart_from_counter_or_meter(STATSD_METRIC *m, char *dim, char *family) {
746 if(unlikely(!m->st)) {
747 char type[RRD_ID_LENGTH_MAX + 1], id[RRD_ID_LENGTH_MAX + 1];
743 - statsd_get_metric_type_and_id(m, type, id, "counter", RRD_ID_LENGTH_MAX);
748 + statsd_get_metric_type_and_id(m, type, id, dim, RRD_ID_LENGTH_MAX);
749
750 m->st = rrdset_create_localhost(
751 type
752 , id
753 , NULL // name
749 - , "counters" // family (submenu)
754 + , family // family (submenu)
755 , m->name // context
756 , m->name // title
757 , "events/s" // units
@@ -755,8 +760,9 @@ static inline void statsd_chart_from_counter(STATSD_METRIC *m) {
760 , RRDSET_TYPE_AREA
761 );
762
758 - m->rd_value = rrddim_add(m->st, "counter", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
759 - m->rd_count = rrddim_add(m->st, "events", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
763 + m->rd_value = rrddim_add(m->st, dim, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
764 + if(m->options & STATSD_METRIC_OPTION_CHART_DIMENSION_COUNT)
765 + m->rd_count = rrddim_add(m->st, "events", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
766 }
767 else rrdset_next(m->st);
768
@@ -765,40 +771,19 @@ static inline void statsd_chart_from_counter(STATSD_METRIC *m) {
771
772 m->reset = 1;
773 rrddim_set_by_pointer(m->st, m->rd_value, m->last);
768 - rrddim_set_by_pointer(m->st, m->rd_count, (collected_number)m->events);
769 - rrdset_done(m->st);
770 -}
774
772 -static inline void statsd_chart_from_meter(STATSD_METRIC *m) {
773 - if(unlikely(!m->st)) {
774 - char type[RRD_ID_LENGTH_MAX + 1], id[RRD_ID_LENGTH_MAX + 1];
775 - statsd_get_metric_type_and_id(m, type, id, "meter", RRD_ID_LENGTH_MAX);
775 + if(m->rd_count)
776 + rrddim_set_by_pointer(m->st, m->rd_count, (collected_number)m->events);
777
777 - m->st = rrdset_create_localhost(
778 - type
779 - , id
780 - , NULL // name
781 - , "meters" // family (submenu)
782 - , m->name // context
783 - , m->name // title
784 - , "events/s" // units
785 - , STATSD_CHART_PRIORITY
786 - , statsd.update_every
787 - , RRDSET_TYPE_LINE
788 - );
789 -
790 - m->rd_value = rrddim_add(m->st, "meter", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
791 - m->rd_count = rrddim_add(m->st, "events", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
792 - }
793 - else rrdset_next(m->st);
778 + rrdset_done(m->st);
779 +}
780
795 - if(m->count && !m->reset)
796 - m->last = m->counter.value;
781 +static inline void statsd_chart_from_counter(STATSD_METRIC *m) {
782 + statsd_chart_from_counter_or_meter(m, "counter", "counters");
783 +}
784
798 - m->reset = 1;
799 - rrddim_set_by_pointer(m->st, m->rd_value, m->last);
800 - rrddim_set_by_pointer(m->st, m->rd_count, (collected_number)m->events);
801 - rrdset_done(m->st);
785 +static inline void statsd_chart_from_meter(STATSD_METRIC *m) {
786 + statsd_chart_from_counter_or_meter(m, "meter", "meters");
787 }
788
789 static inline void statsd_chart_from_set(STATSD_METRIC *m) {
@@ -820,7 +805,9 @@ static inline void statsd_chart_from_set(STATSD_METRIC *m) {
805 );
806
807 m->rd_value = rrddim_add(m->st, "set", "set size", 1, 1, RRD_ALGORITHM_ABSOLUTE);
823 - m->rd_count = rrddim_add(m->st, "events", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
808 +
809 + if(m->options & STATSD_METRIC_OPTION_CHART_DIMENSION_COUNT)
810 + m->rd_count = rrddim_add(m->st, "events", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
811 }
812 else rrdset_next(m->st);
813
@@ -829,7 +816,10 @@ static inline void statsd_chart_from_set(STATSD_METRIC *m) {
816
817 m->reset = 1;
818 rrddim_set_by_pointer(m->st, m->rd_value, m->last);
832 - rrddim_set_by_pointer(m->st, m->rd_count, (collected_number)m->events);
819 +
820 + if(m->rd_count)
821 + rrddim_set_by_pointer(m->st, m->rd_count, (collected_number)m->events);
822 +
823 rrdset_done(m->st);
824 }
825
@@ -895,6 +885,15 @@ void *statsd_main(void *ptr) {
885
886 statsd.charts_for = simple_pattern_create(config_get(CONFIG_SECTION_STATSD, "create private charts for metrics matching", "*"), SIMPLE_PATTERN_EXACT);
887
888 + if(config_get_boolean(CONFIG_SECTION_STATSD, "add dimension for number of events received", 1)) {
889 + statsd.gauges.default_options |= STATSD_METRIC_OPTION_CHART_DIMENSION_COUNT;
890 + statsd.counters.default_options |= STATSD_METRIC_OPTION_CHART_DIMENSION_COUNT;
891 + statsd.meters.default_options |= STATSD_METRIC_OPTION_CHART_DIMENSION_COUNT;
892 + statsd.sets.default_options |= STATSD_METRIC_OPTION_CHART_DIMENSION_COUNT;
893 + statsd.histograms.default_options |= STATSD_METRIC_OPTION_CHART_DIMENSION_COUNT;
894 + statsd.timers.default_options |= STATSD_METRIC_OPTION_CHART_DIMENSION_COUNT;
895 + }
896 +
897 if(config_get_boolean(CONFIG_SECTION_STATSD, "gaps on gauges (deleteGauges)", 0))
898 statsd.gauges.default_options |= STATSD_METRIC_OPTION_SHOW_GAPS_WHEN_NOT_COLLECTED;
899