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