数据收集大多数都是通过http协议上报到服务器然记录到日志。
目前在公司是使用nginx收集,然后再用脚本定时将日志打包后再传给另外台服务器清洗数据,数据入库并且统计。
数据上报后,会在nginx的logs目录下生成access.log文件,我们每小时压缩一次这个文件并传给其他服务器处理,脚本如下:
#!/bin/bash
#设置日志文件存放目录
logs_path="/usr/local/nginx/logs/"
#设置pid文件
pid_path="/usr/local/nginx/logs/nginx.pid"
#重命名日志文件
mv ${logs_path}access.log ${logs_path}access_$(date +"%Y%m%d%H").log
#向nginx主进程发信号重新打开日志
kill -USR1 `cat ${pid_path}`
#将日志打包
cd ${logs_path}
tar -zcvf access_$(date +"%Y%m%d%H").tar.gz access_$(date +"%Y%m%d%H").log --remove-files
#日志传给其他服务器
rsync -zvr --bwlimit=2000 ${logs_path}access_$(date +"%Y%m%d%H").tar.gz root@111.111.111.111:/usr/local