您的位置:首页 > 数据库 > Redis

使用Openresty接收前端性能监控指标并存入Redis

2019-01-23 20:16 996 查看

/data/openresty/html/post.lua

local json=require 'cjson';

local function close_redis(red)
if not red then
return
end
local pool_max_idle_time = 1000
local pool_size = 100
local ok, err = red:set_keepalive(pool_max_idle_time, pool_size)
if not ok then
ngx.say("set keepalive error : ", err)
end
end

local redis = require("resty.redis")
local red = redis:new()
red:set_timemout(5)
local ip = "192.168.0.215"
local port = 6379
local ok, err = red:connect(ip, port)
if not ok then
ngx.say("connect to redis error:",err)
return close_redis(red)
end

local request_method=ngx.var.request_method;
if request_method == "GET" then
ngx.say(json.encode({"only post"}));
return;
end;
local request_method=ngx.var.request_method;
if request_method == "GET" then
ngx.say(json.encode({"only post"}));
return;
end;

local headers=ngx.req.get_headers()
function get_client_ip()
local ip=headers["X-REAL-IP"] or headers["X_FORWARDED_FOR"] or ngx.var.remote_addr or "0.0.0.0"
return ip
end

ngx.req.read_body();
local body_data=json.decode(ngx.req.get_body_data());
body_data["time"]=os.date("%Y/%m/%d %H:%M:%S", os.time()+3600*8)
body_data["user-agent"]=headers["user-agent"]
body_data["clientIP"]=get_client_ip()
body_data["referer"]=headers["referer"]
ok, err = red:lpush("logstash-vue", json.encode(body_data))
if not ok then
ngx.say("write redis error:", err)
return close_redis(red)
end
ngx.say(json.encode(body_data))

api.conf

server {
listen       80 default_server;
server_name  fengwan.blog.51cto.com;
error_log logs/error.log;
add_header 'Access-Control-Allow-Origin' '*';
add_header Access-Control-Allow-Headers "X-Requested-With";
add_header Access-Control-Allow-Methods "GET,POST";
location / {
lua_code_cache off;
default_type application/json;
content_by_lua_file /data/openresty/html/post.lua;
}
}

logstash.conf

input {
redis {
data_type => "list"
key => "logstash-vue"
host => "192.168.0.215"
port => 6379
threads => 5
}
}

filter {
useragent {
source => "user-agent"
target => "ua"
}
date {
locale => "en"
match => ["time", "yyyy/MM/dd HH:mm:ss"]
}
geoip {
source => "clientIP"
database => "/GeoLite2-City.mmdb"

}
}

output {
stdout { codec => rubydebug }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lua openresty