Software /
code /
prosody
File
util/statsd.lua @ 7567:495de404a8ae
ejabberdsql2prosody: rename variable 'host' to prevent shadowing upvalue [luacheck]
Functions roster(), roster_pending(), roster_group(), private_storage() and
offline_msg() have argument named "host", which used to shadow upvalue of this
variable before this change. Instead of renaming this argument, let's rename
the variable to match what the script says in usage:
Usage: ejabberdsql2prosody.lua filename.txt hostname
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Fri, 12 Aug 2016 13:44:47 +0800 |
parent | 7522:ebf2e77ac8a7 |
child | 7701:672a863105f6 |
line wrap: on
line source
local socket = require "socket"; local time = require "socket".gettime; local function new(config) if not config or not config.statsd_server then return nil, "No statsd server specified in the config, please see https://prosody.im/doc/statistics"; end local sock = socket.udp(); sock:setpeername(config.statsd_server, config.statsd_port or 8125); local prefix = (config.prefix or "prosody").."."; local function send_metric(s) return sock:send(prefix..s); end local function send_gauge(name, amount, relative) local s_amount = tostring(amount); if relative and amount > 0 then s_amount = "+"..s_amount; end return send_metric(name..":"..s_amount.."|g"); end local function send_counter(name, amount) return send_metric(name..":"..tostring(amount).."|c"); end local function send_duration(name, duration) return send_metric(name..":"..tostring(duration).."|ms"); end local function send_histogram_sample(name, sample) return send_metric(name..":"..tostring(sample).."|h"); end local methods; methods = { amount = function (name, initial) if initial then send_gauge(name, initial); end return function (new_v) send_gauge(name, new_v); end end; counter = function (name, initial) return function (delta) send_gauge(name, delta, true); end; end; rate = function (name) return function () send_counter(name, 1); end; end; distribution = function (name, unit, type) --luacheck: ignore 212/unit 212/type return function (value) send_histogram_sample(name, value); end; end; sizes = function (name) name = name.."_size"; return function (value) send_histogram_sample(name, value); end; end; times = function (name) return function () local start_time = time(); return function () local end_time = time(); local duration = end_time - start_time; send_duration(name, duration*1000); end end; end; }; return methods; end return { new = new; }