47 lines
1.4 KiB
Lua
47 lines
1.4 KiB
Lua
![]() |
local socket = ngx.socket.udp
|
||
|
local cjson = require('cjson')
|
||
|
local defer = require('defer')
|
||
|
local assert = assert
|
||
|
|
||
|
local _M = {}
|
||
|
|
||
|
local function send_data(jsonData)
|
||
|
local s = assert(socket())
|
||
|
assert(s:setpeername("127.0.0.1", 8000))
|
||
|
assert(s:send(jsonData))
|
||
|
assert(s:close())
|
||
|
end
|
||
|
|
||
|
function _M.encode_nginx_stats()
|
||
|
return cjson.encode({
|
||
|
host = ngx.var.host or "-",
|
||
|
status = ngx.var.status or "-",
|
||
|
remoteAddr = ngx.var.remote_addr or "-",
|
||
|
realIpAddr = ngx.var.realip_remote_addr or "-",
|
||
|
remoteUser = ngx.var.remote_user or "-",
|
||
|
bytesSent = tonumber(ngx.var.bytes_sent) or -1,
|
||
|
protocol = ngx.var.server_protocol or "-",
|
||
|
method = ngx.var.request_method or "-",
|
||
|
uri = ngx.var.uri or "-",
|
||
|
requestLength = tonumber(ngx.var.request_length) or -1,
|
||
|
requestTime = tonumber(ngx.var.request_time) or -1,
|
||
|
upstreamName = ngx.var.proxy_upstream_name or "-",
|
||
|
upstreamIP = ngx.var.upstream_addr or "-",
|
||
|
upstreamResponseTime = tonumber(ngx.var.upstream_response_time) or -1,
|
||
|
upstreamStatus = ngx.var.upstream_status or "-",
|
||
|
namespace = ngx.var.namespace or "-",
|
||
|
ingress = ngx.var.ingress_name or "-",
|
||
|
service = ngx.var.service_name or "-",
|
||
|
})
|
||
|
end
|
||
|
|
||
|
function _M.call()
|
||
|
local ok, err = defer.to_timer_phase(send_data, _M.encode_nginx_stats())
|
||
|
if not ok then
|
||
|
ngx.log(ngx.ERR, "failed to defer send_data to timer phase: ", err)
|
||
|
return
|
||
|
end
|
||
|
end
|
||
|
|
||
|
return _M
|