分享一个用户http的用户行为日志收集服务,支持实时日志接收到kafka的实时计算和落盘日志的离线计算。
编译nginx的时候新增第三方模块即可 ./configure --prefix=./install --add-module=./ngx_http_behavior_click_module --with-http_realip_module
编译完成安装配置 location /behavior_click { behavior_click_ser "SER1"; //为了方式日志名重复,加个serverid,如果多台收集可以避免这个问题。 behavior_click_datadir "/tmp/datadir"; //落盘日志的目录 behavior_click_kafka "local:9200,127.0.0.1:9200"; //支持kafak集群,多个地址都好隔开 behavior_click_topic "test"; //kafka的topic }
最终落盘日志文件命名如下: behavior_click_[serid]_[YYYYmmDD].log
内容说明:
- 当前主机名:当前请求的域名
- 请求IP:请求的来源ip
- referer:行为数据产生的页面
- 请求时间:请求到达服务器的时间
- 所有的ip:如果前段有代理,或者多层代理的话,需要加上ip转发,可以获取到所有代理ip
- userAgent:ua
- cookie:如果来的请求cookie中不带BeUid,本次请求响应时中上BeUid。标识是否同一个用户(如果日志请求服务和行为收集站点用的不是同一个域名,且https协议环境下需要注意第三方coookie的问题)。
- 是否新用户:如果BeUid时候新生成的话,会标示这个用户时新用户,值为1,否则为0
- 自定义参数:根据自己的业务传想要的指标,这部分数据是请求的参数,原封不动记录下来
前8个值都是由本组间自行收集的,如果使用只需要在请求收集模块的时候传入自己的自定义参数即可。
注意:列和列之间的分隔符是toChar(22)不可见字符,最后一个动态参数列按http的参数解析即可。
工程地址:https://github.com/johncai0/ngx_http_behavior_click
目前使用过的nginx版本
nginx-1.10.1
nginx-1.16.0