说明:
因为自身统计系统与第三方统计少了约2.5%,怀疑是使用cronolog进行日志切割时,存在日志丢失。因此写了这个简单的脚本,简单对比分钟日志与每天日志的行数,来判断是否丢失。
每天的日志,为了完整性,特意截选了前天3:00到今天3:00,然后再筛选昨生0:00到23:59的日志记录。因为之前按小时切割日志(shell)时,发现小时切割日志行数比分钟切割日志行数少。估计是重启nginx日志进程时,nginx日志文件锁定无法写入时丢失的。
如果访问量大,每天产生的日志还是比较大,处理还是很耗资源的,不太推荐直接在生产机上执行;或将每天的再细化到每小时再进行对比。
实现:
# vim test.sh //添加以下内容 #!/bin/bash log_path=/var/log/nginx #for hour in `seq -w 0 23`; do for min in `seq -w 00 59`; do a=`/usr/bin/wc -l $log_path/20121205/$hour/20121205$hour$min.log|awk '{print $1}'` b=`/bin/cat $log_path/tst.log |grep "05/Dec/2012:$hour:$min:"|wc -l` time="2012-12-05:$hour:$min" sum=`[ "$a" != "$b" ] && echo "!="` echo $time min:$a day:$b $sum >> hello.txt done done