大数据埋点方案Openresty+Nginx+Lua踩坑日志

embedded/2024/12/22 16:35:36/

在做埋点采集方案的时候,直接采用Openresty进行数据采集

手撸Java代码性能较差,直接使用第三方框架进行数据采集处理。

其中需要应用到lua-zlib模块进行gz的压缩文件解压;

lua-zlib的安装过程如下:

wget https://github.com/brimworks/lua-zlib/archive/master.zip
unzip master.zip
cd lua-zlib-master/
cmake -DLUA_INCLUDE_DIR=/usr/local/openresty/luajit/include/luajit-2.1 -DLUA_LIBRARIES=/usr/local/openresty/luajit/lib -DUSE_LUAJIT=ON -DUSE_LUA=OFF
make

确保luajit的依赖存在,在cmake检查的时候会显示出来;

执行make后会在编译主目录下生成zlib.so文件

将zlib.so文件放到openrestylualib目录下,供全局加载到

 cp zlib.so /usr/local/openresty/lualib/

然后在代码里面就可以使用了

 location /deal_data {lua_need_request_body on;content_by_lua_block {-- 加载lua-zlib库local zlib = require "zlib"-- 读取请求体ngx.req.read_body()-- 获取请求体数据local request_body = ngx.req.get_body_data()-- 检查是否有数据if not request_body thenngx.log(ngx.ERROR, "No request body found.")return ngx.exit(400)end-- 解压数据local stream = zlib.inflate()local r=stream(request_body);-- ngx.req.set_body_data(r);if err thenngx.log(ngx.ERROR, "Failed to decompress GZIP data: ", err)return ngx.exit(500)end-- 设置响应头ngx.header.content_type = 'application/json'-- 输出解压后的数据ngx.say(r)return ngx.exit(200)}}

至此完成解压工作;

容易踩坑点:询问gbt的时候会提示使用nginx的with-http_gunzip_module模块,设置gunzip on;来自动解压,但是尝试多次后都无法成功。有成功的可以分享下经验哈。

翻看了一些资料,个人理解是 其实with-http_gunzip_module模块是帮前端进行解压的,比如nginx location代理接口进行了gz数据压缩,代理一层的对外接口就可以自动解压了。另外下图资料也说明了假如正向解压有可能遭受网络工具,消耗系统资源

 


http://www.ppmy.cn/embedded/120243.html

相关文章

Storm-0501黑客组织针对美国政府混合云环境发起攻击

近日,有一名为 Storm-0501 的威胁行为者以美国的政府、制造、运输和执法部门为目标,发动勒索软件攻击。 微软表示,这种多阶段攻击活动旨在破坏混合云环境,并从内部部署横向移动到云环境,最终导致数据外渗、凭证盗窃、篡…

vue 流式加载mp4文件

video组件 传入assetURL视频地址即可&#xff0c;组件内配置了代理&#xff0c;注意配置/video-api 代理 <template><video ended"emits(ended)" autoplay muted ref"video"><source type"video/mp4" />Your browser does no…

VMware搭建DVWA靶场

目录 1.安装phpstudy 2.搭建DVWA 本次搭建基于VMware16的win7系统 1.安装phpstudy 下载windows版本&#xff1a;小皮面板-好用、安全、稳定的Linux服务器面板&#xff01; 安装后先开启mysql再开启apache&#xff0c;遇到mysql启动不了的情况&#xff0c;最后重装了phpstud…

Hadoop搭建及Springboot集成

文章目录 环境说明下载安装配置单机伪集群配置hadoop-env.sh配置core-sit.xml配置hdfs-site.xml配置 yarn-site.xml配置mapred-site.xml 启动访问web界面 Windows电脑远程调用springBoot 集成 环境说明 使用Hadoop的前提是linux服务器上必须安装java&#xff0c;这里不赘述怎么…

Python | Leetcode Python题解之第448题找到所有数组中消失的数字

题目&#xff1a; 题解&#xff1a; class Solution:def findDisappearedNumbers(self, nums: List[int]) -> List[int]:n len(nums)for num in nums:x (num - 1) % nnums[x] nret [i 1 for i, num in enumerate(nums) if num < n]return ret

记录|Modbus-TCP产品使用记录【摩通传动】

目录 前言一、摩通传动实验图1.1 配置软件 IO_Studio1.2 测试软件Modbus Poll1.2.1 读写设置测试1.2.2 AI信号的读取 1.3 对应的C#连接Modbus的测试代码如下【自制&#xff0c;仅供参考】1.4 最终实验图 更新时间 前言 参考文章&#xff1a; 自己需要了解和对比某些产品的Modbu…

Label-Studio ML利用yolov8模型实现自动标注

引言 Label Studio ML 后端是一个 SDK&#xff0c;用于包装您的机器学习代码并将其转换为 Web 服务器。Web 服务器可以连接到正在运行的 Label Studio 实例&#xff0c;以自动执行标记任务。我们提供了一个示例模型库&#xff0c;您可以在自己的工作流程中使用这些模型&#x…

FPGA远程烧录bit流

FPGA远程烧录bit流 Vivado支持远程编译并下载bit流到本地xilinx开发板。具体操作就是在连接JTAG的远程电脑上安装hw_server.exe。比如硬件板在实验室或者是其他地方&#xff0c;开发代码与工程在本地计算机&#xff0c;如何将bit流烧录到实验室或者远程开发板&#xff1f; vi…