open_resty + elk实现客户端日志上报和展示功能
整个功能框图如下:
相关知识点:
主要过程:
1.客户端post错误信息到open_resty监听的url,打印请求的结构体到nginx的error_log里面
2.log_stash监听error_log,把文件内容同步到elastic_search里面;
3.通过kibana来查看错误日志
实现:
nginx配置文件
<pre>
worker_processes 1;
error_log logs/error.log;
events {
worker_connections 1024;
}
http {
server {
listen 3030;
location /report {
content_by_lua_block {
local cjson = require("cjson")
ngx.req.read_body()
local arg = ngx.req.get_post_args()
ngx.log(ngx.ERR,cjson.encode(arg)) #body就是错误信息,打 # 印到log里面
}
}
}
}
</pre>log_stash配置文件
<pre>
input {
file {
path => "/home/dhcd/nginx/logs/error.log"
start_position => beginning
}
}
filter {
}
output {
elasticsearch {
hosts => ["172.30.0.219:9200"]
index => "app_error"
}
}
</pre>
3.在kibana里面建立一个app_error的indice就可以了。日志是实时的