in kong/kong/api/routes/kong.lua [48:118]
GET = function(self, dao, helpers)
local distinct_plugins = setmetatable({}, cjson.array_mt)
local pids = {
master = process.get_master_pid()
}
do
local set = {}
for row, err in kong.db.plugins:each() do
if err then
kong.log.err(err)
return kong.response.exit(500, { message = "An unexpected error happened" })
end
if not set[row.name] then
distinct_plugins[#distinct_plugins+1] = row.name
set[row.name] = true
end
end
end
do
local kong_shm = ngx.shared.kong
local worker_count = ngx.worker.count() - 1
for i = 0, worker_count do
local worker_pid, err = kong_shm:get("pids:" .. i)
if not worker_pid then
err = err or "not found"
ngx.log(ngx.ERR, "could not get worker process id for worker #", i , ": ", err)
else
if not pids.workers then
pids.workers = {}
end
pids.workers[i + 1] = worker_pid
end
end
end
local node_id, err = knode.get_id()
if node_id == nil then
ngx.log(ngx.ERR, "could not get node id: ", err)
end
local available_plugins = {}
for name in pairs(kong.configuration.loaded_plugins) do
available_plugins[name] = {
version = kong.db.plugins.handlers[name].VERSION,
priority = kong.db.plugins.handlers[name].PRIORITY,
}
end
return kong.response.exit(200, {
tagline = tagline,
version = version,
hostname = knode.get_hostname(),
node_id = node_id,
timers = {
running = ngx.timer.running_count(),
pending = ngx.timer.pending_count(),
},
plugins = {
available_on_server = available_plugins,
enabled_in_cluster = distinct_plugins,
},
lua_version = lua_version,
configuration = kong.configuration.remove_sensitive(),
pids = pids,
})
end