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

/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 }
}

原文地址:http://blog.51cto.com/fengwan/2345973

时间: 2024-07-28 14:03:10

使用Openresty接收前端性能监控指标并存入Redis的相关文章

[转载]前端数据之美 -- 七天打造前端性能监控系统

开始行动 本文中的性能主要指 web 页面加载性能,对性能还不了解?不用担心,接下来的“每一天”跟我一起进入前端性能的世界. Day 1 为什么要监控性能? “If you cannot measure it, you cannot improve it” ———— William Thomson 这是一个最基本的问题,为什么要关注和监控前端性能?对于公司来说,性能在一定程度上与利益直接相关.国外有很多这方面的调研数据: 性能 收益 Google 延迟 400ms 搜索量下降 0.59% Bin

7 天打造前端性能监控系统

引言 前阵子在w3ctech的走进名企 - 百度前端 FEX 专场上曾“夸下海口”说听完讲座后七天就可以打造自己的前端性能监控系统,既然说出去了也不能食言.从前一篇文章前端数据之美相信大家对前端数据有了一定的了解,下面就针对其中的性能数据及其监控进行详细阐述. 开始行动 本文中的性能主要指 web 页面加载性能,对性能还不了解?不用担心,接下来的“每一天”跟我一起进入前端性能的世界. Day 1 为什么要监控性能? “If you cannot measure it, you cannot im

7 天打造前端性能监控系统(转)

引言 前阵子在w3ctech的走进名企 - 百度前端 FEX 专场上曾“夸下海口”说听完讲座后七天就可以打造自己的前端性能监控系统,既然说出去了也不能食言.从前一篇文章前端数据之美相信大家对前端数据有了一定的了解,下面就针对其中的性能数据及其监控进行详细阐述. 开始行动 本文中的性能主要指 web 页面加载性能,对性能还不了解?不用担心,接下来的“每一天”跟我一起进入前端性能的世界. Day 1 为什么要监控性能? “If you cannot measure it, you cannot im

前端性能监控

前端性能 1.关键点 分页面.区域.浏览器.性能指标 页面的性能指标详解: 白屏时间(first Paint Time)——用户从打开页面开始到页面开始有东西呈现为止 首屏时间——用户浏览器首屏内所有内容都呈现出来所花费的时间 用户可操作时间(dom Interactive)——用户可以进行正常的点击.输入等操作,默认可以统计domready时间,因为通常会在这时候绑定事件操作 总下载时间——页面所有资源都加载完成并呈现出来所花的时间,即页面 onload 的时间 确定统计起点: 我们需要在用户

Performance --- 前端性能监控

阅读目录 一:什么是Performance? 二:使用 performance.timing 来计算值 三:前端性能如何优化? 四:Performance中方法 五:使用performane编写小工具 回到顶部 一:什么是Performance? Performance是前端性能监控的API.它可以检测页面中的性能,W3C性能小组引入进来的一个新的API,它可以检测到白屏时间.首屏时间.用户可操作的时间节点,页面总下载的时间.DNS查询的时间.TCP链接的时间等.因此我们下面来学习下这个API.

前端性能监控系统ShowSlow

作者:zhanhailiang 日期:2014-11-14 1. 简介 ShowSlow是开源的前端性能监控系统,提供了以下功能: 前端性能指标数据收集功能:ShowSlow原生提供了数据收集工具DOM Monster!,但也支持通过YSlow,PageSpeed等第三方工具将性能数据上报给服务端完成收集(其服务器端提供了针对多达8种不同工具上报的数据收集器dommonster,dynatrace,events,har,metric,pagespeed,webpagetest,yslow): 前

mysql主要性能监控指标

1.系统mysql的进程数 ps -ef | grep "mysql" | grep -v "grep" | wc –l 2.Slave_running mysql > show status like 'Slave_running'; 如果系统有一个从复制服务器,这个值指明了从服务器的健康度 3.Threads_connected mysql > show status like 'Threads_connected'; 当前客户端已连接的数量.这个值

服务性能监控指标

Apache性能监控支持以下指标: Apache吞吐率 Apache并发连接数 Apache并发连接数详细统计,包括读取请求.持久连接.发送响应内容.关闭连接.等待连接 Lighttpd性能监控支持以下指标: Lighttpd吞吐率 Lighttpd并发连接数 Lighttpd并发连接数详细统计,包括建立连接.读取请求.读取POST数据.处理请求.发送响应内容.关闭连接 Nginx性能监控支持以下指标: Nginx吞吐率 Nginx并发连接数 Nginx并发连接数详细统计,包括读取请求.处理请求

磁盘 I/O 性能监控指标和调优方法

在介绍磁盘 I/O 监控命令前,我们需要了解磁盘 I/O 性能监控的指标,以及每个指标的所揭示的磁盘某方面的性能.磁盘 I/O 性能监控的指标主要包括: 指标 1:每秒 I/O 数(IOPS 或 tps) 对于磁盘来说,一次磁盘的连续读或者连续写称为一次磁盘 I/O, 磁盘的 IOPS 就是每秒磁盘连续读次数和连续写次数之和.当传输小块不连续数据时,该指标有重要参考意义. 指标 2:吞吐量(Throughput) 指硬盘传输数据流的速度,传输数据为读出数据和写入数据的和.其单位一般为 Kbps,