From 7aadc1b1ee3ad8f55b3fe10ff15b13c946e3040c Mon Sep 17 00:00:00 2001 From: Shashi Ranjan Date: Tue, 26 Apr 2016 14:21:59 -0700 Subject: [PATCH] added metrics for consumer --- kong/plugins/datadog/handler.lua | 12 ++++++++++++ kong/plugins/datadog/schema.lua | 2 +- kong/plugins/datadog/statsd_logger.lua | 3 +++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/kong/plugins/datadog/handler.lua b/kong/plugins/datadog/handler.lua index 61d70c412b1..4877bc353cd 100644 --- a/kong/plugins/datadog/handler.lua +++ b/kong/plugins/datadog/handler.lua @@ -32,6 +32,18 @@ local gauges = { request_count = function (api_name, message, logger) local stat = api_name..".request.count" logger:counter(stat, 1, 1) + end, + unique_users = function (api_name, message, logger) + if message.authenticated_entity ~= nil and message.authenticated_entity.consumer_id ~= nil then + local stat = api_name..".user.uniques" + logger:set(stat, message.authenticated_entity.consumer_id) + end + end, + request_per_user = function (api_name, message, logger) + if message.authenticated_entity ~= nil and message.authenticated_entity.consumer_id ~= nil then + local stat = api_name.."."..string_gsub(message.authenticated_entity.consumer_id, "-", "_")..".request.count" + logger:counter(stat, 1, 1) + end end } diff --git a/kong/plugins/datadog/schema.lua b/kong/plugins/datadog/schema.lua index e0c7e915c3e..742447e9a53 100644 --- a/kong/plugins/datadog/schema.lua +++ b/kong/plugins/datadog/schema.lua @@ -2,7 +2,7 @@ return { fields = { host = {required = true, type = "string", default = "localhost"}, port = {required = true, type = "number", default = 8125}, - metrics = {required = true, type = "array", enum = {"request_count", "latency", "request_size", "status_count", "response_size"}, default = {"request_count", "latency", "request_size", "status_count", "response_size"}}, + metrics = {required = true, type = "array", enum = {"request_count", "latency", "request_size", "status_count", "response_size", "unique_users", "request_per_user"}, default = {"request_count", "latency", "request_size", "status_count", "response_size", "unique_users", "request_per_user"}}, timeout = {type = "number", default = 10000} } } diff --git a/kong/plugins/datadog/statsd_logger.lua b/kong/plugins/datadog/statsd_logger.lua index 58e717ebcad..0da73db63b6 100644 --- a/kong/plugins/datadog/statsd_logger.lua +++ b/kong/plugins/datadog/statsd_logger.lua @@ -3,6 +3,8 @@ local ngx_log = ngx.log local table_concat = table.concat local setmetatable = setmetatable local NGX_ERR = ngx.ERR +local NGX_DEBUG = ngx.DEBUG +local tostring = tostring local statsd_mt = {} statsd_mt.__index = statsd_mt @@ -51,6 +53,7 @@ end function statsd_mt:send_statsd(stat, delta, kind, sample_rate) local udp_message = self:create_statsd_message(stat, delta, kind, sample_rate) + ngx_log(NGX_DEBUG, "Sending data to statsd server: "..udp_message) local ok, err = self.socket:send(udp_message) if not ok then ngx_log(NGX_ERR, "failed to send data to "..self.host..":"..tostring(self.port)..": ", err)