我们中有这样的需求就是,当前端和后端通过接口通信以后,我们在日常排查中缺少跟踪接口返回信息和所有头部信息的跟踪,针对于这个需求我们采用nginx+lua+cjson的形式通过lua脚本
准备的模块
- LuaJIT
http://luajit.org/download/LuaJIT-2.0.5.tar.gz
- lua-nginx-module
https://github.com/openresty/lua-nginx-module/archive/v0.10.9rc7.tar.gz
- ngx_devel_kit
https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
- lua-cjson
https://www.kyne.com.au/~mark/software/download/lua-cjson-2.1.0.tar.gz
- nginx
http://nginx.org/download/nginx-1.14.1.tar.gz
软件安装
- LuaJit安装
1 | wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz |
- ngx_devel_kit和lua-nginx-module
自己选择安装位置,最好公共目录,我放在/usr/local下
1 | wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz |
- 安装nginx编译nginx
1 |
|
- lua-cjson安装
1 |
|
网站配置
日志手机依旧依靠nginx log的形式我们针对于需要的内容进行收集和填充到日志中去,依赖原有的阿里云日志服务进行收集
- 定义日志格式
1 | log_format json_combined escape=json |
- 定义req_header和resp_body收集
1 | # 开启lua记录请求体 |
- odps收集表结构
1 | CREATE TABLE `access_json` ( |
AB压力测试
1 | yum -y install httpd-tools |
问题集结
- AIO找不到的问题
1 | ./configure: no supported file AIO was found |
安装开发者工具
1 | yum groupinstall 'Development Tools' |
- 缺少libxml2/libxslt模块
1 | ./configure: error: the HTTP XSLT module requires the libxml2/libxslt |
安装缺失库
1 | yum -y install libxml2 libxml2-dev |
- 缺少GD库
1 | ./configure: error: the HTTP image filter module requires the GD library. |
安装GD库
1 | yum -y install gd-devel |
- 缺少ExtUtils
1 | ./configure: error: perl module ExtUtils::Embed is required |
安装ExtUtils
1 | yum -y install perl-devel perl-ExtUtils-Embed |
- 缺少GeoIP库
1 | ./configure: error: the GeoIP module requires the GeoIP library. |
安装缺失库
1 | yum -y install GeoIP GeoIP-devel GeoIP-data |
6、 缺少Google Perftools (编译环境我是不装这个的,从编译选线去除这个依赖就行)
1 | ./configure: error: the Google perftools module requires the Google perftools |
1 | # 安装libunwind |
8.模块版本不对
1 | [emerg] module "/usr/lib64/nginx/modules/ngx_http_geoip_module.so" version 1012002 instead of 1...ip.conf:1 |
这个错误是因为之前nginx是yum安装的他的版本是1.12.*的 我这次安装的nginx是最新版本1.14.*的所以我需要对这个模块进行升级
1 | vi /etc/yum.repos.d/nginx.repo |