annotate mod_statistics_statsd/mod_statistics_statsd.lua @ 4249:64aa1d9d70ac

mod_rest: Catch and log errors in callback promise chain From the code it looks like it should be possible to reply to an error stanza, but it did not. Turns out I was saved by my local developer mode module which throws errors if an attempt is made to create an errror reply to an error stanza. However nothing collects this error from the promise, so all I got was confusion.
author Kim Alvefur <zash@zash.se>
date Sun, 15 Nov 2020 16:25:49 +0100
parents 98a186874806
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1622
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 local statsmanager = require "core.statsmanager";
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2 local udp = require "socket".udp();
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 local server = module:get_option_string("statsd_server_ip", "127.0.0.1");
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 local server_port = module:get_option_number("statsd_server_port", 8124);
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 local max_datagram_size = module:get_option_number("statds_packet_size", 512);
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 function push_stats(stats, meta)
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 local metric_strings, remaining_bytes = {}, max_datagram_size;
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 for name, value in pairs(stats) do
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 local value_meta = meta[name];
1656
98a186874806 mod_statistics_statsd: Use module:log()
Kim Alvefur <zash@zash.se>
parents: 1622
diff changeset
12 module:log("warn", "%s %s", name, tostring(value_meta));
1622
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13 --if not value_meta then
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 -- Simple value (gauge)
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 local metric_string = ("%s|%d|g"):format(name, value);
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 if #metric_string > remaining_bytes then
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 udp:sendto(table.concat(metric_strings, "\n"), server, server_port);
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 metric_strings, remaining_bytes = {}, max_datagram_size;
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 end
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 table.insert(metric_strings, metric_string);
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 remaining_bytes = remaining_bytes - (#metric_string + 1); -- +1 for newline
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 --end
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 end
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 if #metric_strings > 0 then
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 udp:sendto(table.concat(metric_strings, "\n"), server, server_port);
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 end
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 end
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 module:hook_global("stats-updated", function (event)
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 push_stats(event.changed_stats, event.stats_extra);
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 end);
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 function module.load()
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 local all, changed, extra = statsmanager.get_stats();
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 push_stats(all, extra);
b59812aaabad mod_statistics_statsd: Module for pushing from util.statistics (0.10) to statsd
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 end