shell实现分钟日志,每天日志对比

说明:
因为自身统计系统与第三方统计少了约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

 
截图:

可以看到,不相等的会输出!=

发表评论

邮箱地址不会被公开。 必填项已用*标注