@cryptotaxi247 / netdata-1 / commits / d56d557f7

measure unknown statsd packets; support brubeck C type for counters

Costa Tsaousis (ktsaou) committed Apr 28, 2017 at 22:00 UTC d56d557f707dba1699790805a49606af6357114b
1 file changed +11 -6
src/statsd.c
+11 -6
@@ -132,6 +132,7 @@ static struct statsd {
132 STATSD_INDEX histograms;
133 STATSD_INDEX meters;
134 STATSD_INDEX sets;
135 + size_t unknown;
136
137 int enabled;
138 int update_every;
@@ -153,6 +154,7 @@ static struct statsd {
154 .private_charts = 0,
155 .max_private_charts = 200,
156 .max_private_charts_hard = 1000,
157 + .unknown = 0,
158
159 .gauges = {
160 .name = "gauge",
@@ -431,7 +433,8 @@ static void statsd_process_metric(const char *name, const char *value, const cha
433 value, sampling);
434 break;
435
434 - case 'c':
436 + case 'c': // etsy/statsd, but brubeck uses it as 'meter' - sorry brubeck, this is stupid
437 + case 'C': // brubeck
438 statsd_process_counter(
439 statsd_find_or_add_metric(&statsd.counters, name),
440 value, sampling);
@@ -442,10 +445,12 @@ static void statsd_process_metric(const char *name, const char *value, const cha
445 statsd_process_timer(
446 statsd_find_or_add_metric(&statsd.timers, name),
447 value, sampling);
445 - else
448 + else if (type[1] == '\0')
449 statsd_process_meter(
450 statsd_find_or_add_metric(&statsd.meters, name),
451 value, sampling);
452 + else
453 + statsd.unknown++;
454 break;
455
456 case 'h':
@@ -461,7 +466,7 @@ static void statsd_process_metric(const char *name, const char *value, const cha
466 break;
467
468 default:
464 - error("STATSD: metric '%s' with value '%s' specifies an unknown type '%s'.", name, value?value:"<unset>", type);
469 + statsd.unknown++;
470 break;
471 }
472 }
@@ -582,7 +587,7 @@ static inline size_t statsd_process(char *buffer, size_t size, int require_newli
587 // statsd pollfd interface
588
589 #define STATSD_TCP_BUFFER_SIZE 16384 // minimize reads
585 -#define STATSD_UDP_BUFFER_SIZE 9000 // this should be up to MTU
590 +#define STATSD_UDP_BUFFER_SIZE 1500 // this should be up to MTU
591
592 struct statsd_tcp {
593 size_t size;
@@ -612,8 +617,6 @@ static void statsd_del_callback(int fd, void *data) {
617
618 // Receive data
619 static int statsd_rcv_callback(int fd, int socktype, void *data, short int *events) {
615 - (void)data;
616 -
620 switch(socktype) {
621 case SOCK_STREAM: {
622 struct statsd_tcp *d = (struct statsd_tcp *)data;
@@ -1150,6 +1153,7 @@ void *statsd_main(void *ptr) {
1153 RRDDIM *rd_events_meter = rrddim_add(st_events, "meters", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1154 RRDDIM *rd_events_histogram = rrddim_add(st_events, "histograms", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1155 RRDDIM *rd_events_set = rrddim_add(st_events, "sets", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1156 + RRDDIM *rd_events_unknown = rrddim_add(st_events, "unknown", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1157
1158 RRDSET *st_pcharts = rrdset_create_localhost(
1159 "netdata"
@@ -1203,6 +1207,7 @@ void *statsd_main(void *ptr) {
1207 rrddim_set_by_pointer(st_events, rd_events_meter, (collected_number)statsd.meters.events);
1208 rrddim_set_by_pointer(st_events, rd_events_histogram, (collected_number)statsd.histograms.events);
1209 rrddim_set_by_pointer(st_events, rd_events_set, (collected_number)statsd.sets.events);
1210 + rrddim_set_by_pointer(st_events, rd_events_unknown, (collected_number)statsd.unknown);
1211
1212 rrddim_set_by_pointer(st_pcharts, rd_pcharts, (collected_number)statsd.private_charts);
1213