Files
2026-07-13 12:32:21 +08:00

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