kong--kong
72 行
2.1 KiB
Lua
72 行
2.1 KiB
Lua
local declarative = require "kong.db.declarative"
|
|
local bytes_to_str = require("kong.tools.string").bytes_to_str
|
|
|
|
local tonumber = tonumber
|
|
local kong = kong
|
|
local knode = (kong and kong.node) and kong.node or
|
|
require "kong.pdk.node".new()
|
|
|
|
|
|
local dbless = kong.configuration.database == "off"
|
|
local data_plane_role = kong.configuration.role == "data_plane"
|
|
|
|
|
|
return {
|
|
["/status"] = {
|
|
GET = function(self, dao, helpers)
|
|
local query = self.req.params_get
|
|
local unit = "m"
|
|
local scale
|
|
|
|
if query then
|
|
if query.unit then
|
|
unit = query.unit
|
|
end
|
|
|
|
if query.scale then
|
|
scale = tonumber(query.scale)
|
|
end
|
|
|
|
-- validate unit and scale arguments
|
|
|
|
local pok, perr = pcall(bytes_to_str, 0, unit, scale)
|
|
if not pok then
|
|
return kong.response.exit(400, { message = perr })
|
|
end
|
|
end
|
|
|
|
-- nginx stats
|
|
local status_response = {
|
|
memory = knode.get_memory_stats(unit, scale),
|
|
server = kong.nginx.get_statistics(),
|
|
database = {
|
|
reachable = true,
|
|
},
|
|
}
|
|
|
|
-- if dbless mode is enabled we provide the current hash of the
|
|
-- data-plane in the status response as this enables control planes
|
|
-- to make decisions when something changes in the data-plane (e.g.
|
|
-- if the gateway gets unexpectedly restarted and its configuration
|
|
-- has been reset to empty).
|
|
if dbless or data_plane_role then
|
|
status_response.configuration_hash = declarative.get_current_hash()
|
|
-- remove the meanless database entry when in dbless mode or data plane
|
|
status_response.database = nil
|
|
end
|
|
|
|
-- TODO: no way to bypass connection pool
|
|
local ok, err = kong.db:connect()
|
|
if not ok then
|
|
ngx.log(ngx.ERR, "failed to connect to ", kong.db.infos.strategy,
|
|
" during /status endpoint check: ", err)
|
|
status_response.database.reachable = false
|
|
end
|
|
|
|
kong.db:close() -- ignore errors
|
|
|
|
return kong.response.exit(200, status_response)
|
|
end
|
|
},
|
|
}
|