Mercurial > prosody-modules
comparison mod_statsd/mod_statsd.lua @ 1452:097c6af98d0a
Merge
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 25 Jun 2014 20:46:35 +0200 |
parents | d31ace5b1175 |
children | 26c68a5f432f |
comparison
equal
deleted
inserted
replaced
1446:843769eb40c3 | 1452:097c6af98d0a |
---|---|
13 -- Create UDP socket to statsd server | 13 -- Create UDP socket to statsd server |
14 local sock = socket.udp() | 14 local sock = socket.udp() |
15 sock:setpeername(options.hostname or "127.0.0.1", options.port or 8125) | 15 sock:setpeername(options.hostname or "127.0.0.1", options.port or 8125) |
16 | 16 |
17 -- Metrics are namespaced by ".", and seperated by newline | 17 -- Metrics are namespaced by ".", and seperated by newline |
18 function clean(s) return (s:gsub("[%.\n]", "_")) end | 18 function clean(s) return (s:gsub("[%.:\n]", "_")) end |
19 | 19 |
20 -- A 'safer' send function to expose | 20 -- A 'safer' send function to expose |
21 function send(s) return sock:send(s) end | 21 function send(s) return sock:send(s) end |
22 | 22 |
23 -- prefix should end in "." | 23 -- prefix should end in "." |
24 local prefix = (options.prefix or ("prosody." .. clean(module.host))) .. "." | 24 local prefix = (options.prefix or "prosody") .. "." |
25 if not options.no_host then | |
26 prefix = prefix .. clean(module.host) .. "." | |
27 end | |
25 | 28 |
26 -- Track users as they bind/unbind | 29 -- Track users as they bind/unbind |
27 -- count bare sessions every time, as we have no way to tell if it's a new bare session or not | 30 -- count bare sessions every time, as we have no way to tell if it's a new bare session or not |
28 module:hook("resource-bind", function(event) | 31 module:hook("resource-bind", function(event) |
29 send(prefix.."bare_sessions:"..iterators.count(bare_sessions).."|g") | 32 send(prefix.."bare_sessions:"..iterators.count(pairs(bare_sessions)).."|g") |
30 send(prefix.."full_sessions:+1|g") | 33 send(prefix.."full_sessions:+1|g") |
31 end, 1) | 34 end, 1) |
32 module:hook("resource-unbind", function(event) | 35 module:hook("resource-unbind", function(event) |
33 send(prefix.."bare_sessions:"..iterators.count(bare_sessions).."|g") | 36 send(prefix.."bare_sessions:"..iterators.count(pairs(bare_sessions)).."|g") |
34 send(prefix.."full_sessions:-1|g") | 37 send(prefix.."full_sessions:-1|g") |
35 end, 1) | 38 end, 1) |
36 | 39 |
37 -- Track MUC occupants as they join/leave | 40 -- Track MUC occupants as they join/leave |
38 module:hook("muc-occupant-joined", function(event) | 41 module:hook("muc-occupant-joined", function(event) |
51 send(prefix.."broadcast-message:1|c") | 54 send(prefix.."broadcast-message:1|c") |
52 local room_node = jid.split(event.room.jid) | 55 local room_node = jid.split(event.room.jid) |
53 send(prefix..clean(room_node)..".broadcast-message:1|c") | 56 send(prefix..clean(room_node)..".broadcast-message:1|c") |
54 end) | 57 end) |
55 module:hook("muc-invite", function(event) | 58 module:hook("muc-invite", function(event) |
59 -- Total count | |
56 send(prefix.."invite:1|c") | 60 send(prefix.."invite:1|c") |
57 local room_node = jid.split(event.room.jid) | 61 local room_node = jid.split(event.room.jid) |
62 -- Counts per room | |
58 send(prefix..clean(room_node)..".invite:1|c") | 63 send(prefix..clean(room_node)..".invite:1|c") |
59 local to_node, to_host, to_resource = jid.split(event.stanza.attr.to) | 64 -- Counts per recipient |
60 send(prefix..clean(to_node)..".invites:1|c") | 65 send(prefix..clean(event.stanza.attr.to)..".invited:1|c") |
61 end) | 66 end) |
67 module:hook("muc-decline", function(event) | |
68 -- Total count | |
69 send(prefix.."decline:1|c") | |
70 local room_node = jid.split(event.room.jid) | |
71 -- Counts per room | |
72 send(prefix..clean(room_node)..".decline:1|c") | |
73 -- Counts per sender | |
74 send(prefix..clean(event.incoming.attr.from)..".declined:1|c") | |
75 end) |