当前位置: 首页 > 工具软件 > JAWStats > 使用案例 >

awstats+jawstats自动分析日志2

李俭
2023-12-01

 我的环境是:

1、有多个反向代理(VPS)在异地
2、每台反向代理承担多个域名
3、每个域名不一定都有用户访问
 
要求:实现日志自动分析.
 
需要注意的是关于每个域名的awstats分析结果的保存位置规划。本人脚本一般,大神略过。呵呵
 
我的作法:
反向代理:每天定时压缩日志到一个固定的目录, 判断文件如果大于8M,那么认为它是有写日志的,然后开始压缩。
http://myhat.blog.51cto.com/391263/980220  有个多域名,每个域名每天都做日志轮换。
 
做个计划任务,每天自动压缩日志

  
#!/bin/bash -x  #used for zip nginx log  logs_path="/usr/local/nginx/logs"  temp_path="/nginx_log_temp"  YESTERDAY=`date +%Y%m%d -d "yesterday" `    test -e $temp_path || mkdir $temp_path     rm -rf $temp_path/*    cd ${logs_path}/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/    for i in domain1 domain2 domain3   do      if [ `du  $i.log.$YESTERDAY|awk '{if($1>8208){print $NF}}'` ];then          tar -czf $i.log.$YESTERDAY.tar.gz $i.log.$YESTERDAY          mv  $i.log.$YESTERDAY.tar.gz $temp_path      fi  done 
 
日志分析服务器:(没有任何的端口隐射。)
a、每天定时sftp 下载昨天的日志,自动解压到固定的目录(不同的反向代理解析到不同的目录),前提是要做好SSH免密码登录. (略过)
 

  
#!/bin/bash -x  #used for donwload logfile  down_tmp="/tmp/down_tmp"  test -e $down_tmp || mkdir $down_tmp    for i in domain1 domain2 domain3 do      test -e /tmp/$i || mkdir /tmp/$i  done    for i in a.a.a.a b.b.b.b c.c.c.c d.d.d.d  do      cd  /tmp/down_tmp/$i      test -e /tmp/unzip_tmp/$i || mkdir -p /tmp/unzip_tmp/$i      sftp root@$i:/nginx_log_temp/ << EOF          get *.tar.gz          exit      EOF      for a in ` ls -l | grep .tar.gz | awk '{print $NF}'`      do                    tar -xzf $a -C /tmp/unzip_tmp/$i      done  done 
b、每天定时分析日志     

  
[root@localhost ~]# crontab -l  0 9 * * *  /bin/bash  /root/sftp_autodown_nginx_log > /dev/null  30 9 * * *   /usr/local/awstats/tools/awstats_updateall.pl now > /dev/null

 

转载于:https://my.oschina.net/u/2316994/blog/377096

 类似资料: