bw - add /redis/stats api endpoint

This commit is contained in:
florian 2024-02-04 11:57:11 +01:00
parent 9fc7c8de94
commit 9a5208d678
No known key found for this signature in database
GPG key ID: 93EE47CC3D061500

View file

@ -38,25 +38,45 @@ function redis:init_worker()
end
function redis:api()
-- Match request
if not match(self.ctx.bw.uri, "^/redis/ping$") or self.ctx.bw.request_method ~= "POST" then
return self:ret(false, "success")
if self.ctx.bw.uri == "/redis/ping" and self.ctx.bw.request_method == "POST" then
-- Check redis connection
local ok, err = self.clusterstore:connect(true)
if not ok then
return self:ret(true, "redis connect error : " .. err, HTTP_INTERNAL_SERVER_ERROR)
end
-- Send ping
local ok, err = self.clusterstore:call("ping")
self.clusterstore:close()
if err then
return self:ret(true, "error while sending ping command to redis server : " .. err, HTTP_INTERNAL_SERVER_ERROR)
end
if not ok then
return self:ret(true, "redis ping command failed", HTTP_INTERNAL_SERVER_ERROR)
end
return self:ret(true, "success", HTTP_OK)
end
-- Check redis connection
local ok, err = self.clusterstore:connect(true)
if not ok then
return self:ret(true, "redis connect error : " .. err, HTTP_INTERNAL_SERVER_ERROR)
if self.ctx.bw.uri == "/redis/stats" and self.ctx.bw.request_method == "GET" then
-- Connect to redis
local ok, err = self.clusterstore:connect(true)
if not ok then
return self:ret(true, "redis connect error : " .. err, HTTP_INTERNAL_SERVER_ERROR)
end
-- Get number of keys
local nb_keys, err = self.clusterstore:call("dbsize")
self.clusterstore:close()
if err then
return self:ret(true, "error while sending dbsize command to redis server : " .. err, HTTP_INTERNAL_SERVER_ERROR)
end
if not ok then
return self:ret(true, "redis dbsize command failed", HTTP_INTERNAL_SERVER_ERROR)
end
-- Return data
local data = {
redis_nb_keys = nb_keys
}
return self:ret(true, data, HTTP_OK)
end
-- Send ping
local ok, err = self.clusterstore:call("ping")
self.clusterstore:close()
if err then
return self:ret(true, "error while sending ping command to redis server : " .. err, HTTP_INTERNAL_SERVER_ERROR)
end
if not ok then
return self:ret(true, "redis ping command failed", HTTP_INTERNAL_SERVER_ERROR)
end
return self:ret(true, "success", HTTP_OK)
return self:ret(false, "success")
end
return redis