Mercurial > prosody-modules
annotate mod_statistics_statsd/mod_statistics_statsd.lua @ 2494:d300ae5dba87
mod_smacks: Fix some bugs with smacks-ack-delayed event triggering.
The old code had several flaws which are addressed here.
First of all this fixes the if statement guarding the event generation
There where some timing glitches addressed by this commit as well.
author | tmolitor <thilo@eightysoft.de> |
---|---|
date | Sun, 12 Feb 2017 21:23:22 +0100 |
parents | 98a186874806 |
children |
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 |