66 lines
1.5 KiB
Lua
66 lines
1.5 KiB
Lua
local exporter = require "kong.plugins.prometheus.exporter"
|
|
local kong = kong
|
|
local kong_meta = require "kong.meta"
|
|
|
|
|
|
exporter.init()
|
|
|
|
|
|
local PrometheusHandler = {
|
|
PRIORITY = 13,
|
|
VERSION = kong_meta.version,
|
|
}
|
|
|
|
function PrometheusHandler:init_worker()
|
|
exporter.init_worker()
|
|
end
|
|
|
|
|
|
function PrometheusHandler:configure(configs)
|
|
exporter.configure(configs)
|
|
end
|
|
|
|
|
|
local http_subsystem = ngx.config.subsystem == "http"
|
|
|
|
|
|
function PrometheusHandler:log(conf)
|
|
local message = kong.log.serialize()
|
|
|
|
local serialized = {}
|
|
if conf.per_consumer and message.consumer ~= nil then
|
|
serialized.consumer = message.consumer.username
|
|
end
|
|
|
|
if conf.status_code_metrics then
|
|
if http_subsystem and message.response then
|
|
serialized.status_code = message.response.status
|
|
elseif not http_subsystem and message.session then
|
|
serialized.status_code = message.session.status
|
|
end
|
|
end
|
|
|
|
if conf.bandwidth_metrics then
|
|
if http_subsystem then
|
|
serialized.egress_size = message.response and tonumber(message.response.size)
|
|
serialized.ingress_size = message.request and tonumber(message.request.size)
|
|
else
|
|
serialized.egress_size = message.response and tonumber(message.session.sent)
|
|
serialized.ingress_size = message.request and tonumber(message.session.received)
|
|
end
|
|
end
|
|
|
|
if conf.latency_metrics then
|
|
serialized.latencies = message.latencies
|
|
end
|
|
|
|
if conf.ai_metrics then
|
|
serialized.ai_metrics = message.ai
|
|
end
|
|
|
|
exporter.log(message, serialized)
|
|
end
|
|
|
|
|
|
return PrometheusHandler
|