设为首页 收藏本站
查看: 615|回复: 0

[经验分享] awstats tomcat linux

[复制链接]

尚未签到

发表于 2018-11-30 12:23:51 | 显示全部楼层 |阅读模式
首先:常使用web服务器的朋友大都了解,一般的web server有两部分日志:
一是运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息
二是访问日志信息,它记录的访问的时间,IP,访问的资料等相关信息。

我们要统计的便是访问日志数据。   下面是具体的搭建步骤:
  

  1,下载awstats和perl(windows环境下,linux自带的perl环境)环境:
  2,linux的工作目录在/home/tomcat,将tomcat6复制到工作目录下,将awstats复制到tomcat6的webapps下,在awstats目录下建立一个WEB-INF目录,将awstats包里的docs、tools、wwwroot下的classes、js、css、icon等目录(除了cgi-bin目录)下的内容拷贝到tomcat6下的awstats目录下,
  将cgi-bin目录及其内容拷贝到WEB-INF目录下,在WEB-INF中建立一个web.xml文件,
  awstats的目录结构为:
     awstats
         classes
         css
         docs
         icon
         js
         tools
         WEB-INF
             cgi-bin
             web.xml
            
  3,将WEB-INF中的web.xml中的内容修改为:
  
  
  
  cgi
  org.apache.catalina.servlets.CGIServlet
  
  debug
  0
  
  
  cgiPathPrefix
  WEB-INF/cgi-bin
  
  5
  
  
  cgi
  /cgi-bin/*
  
  
  index.html
  
  index.htm
  index.jsp
  
   
  

  4,修改tomcat的server.xml,配置tomcat访问日志数据,默认情况下tomcat的访问日志没有打开,配置的方式如下:
  编辑 ${catalina}/conf/server.xml文件.注:${catalina}是tomcat的安装目录

  将注释:
  打开,将内容修改为:
  其中 directory是产生的目录 tomcat安装${catalina}作为当前目录。
  

  5,放开tomcat的cgi权限,在tomcat的context.xml的内容修改为:
   
  

      
      WEB-INF/web.xml
  

      
      
  

      
      
   
  

  

  

  6,修改/home/tomcat/tomcat6/webapps/awstats/WEB-INF/cgi-bin/awstats.model.conf的名称为
  awstats.www.seegoo.com.conf(cp awstats.model.conf awstats.www.seegoo.com.conf),即awstats.${mydomain}.conf 这种形式。
     修改文件awstats.www.seegoo.com.conf的内容,将LogFile修改为/home/tomcat/tomcat6/logs/localhost.%YYYY-0-%MM-0-%DD-0.log(即tomcat访问日志存放的目录);(如果想在当前统计前一天的数据,则配置成/home/tomcat/tomcat6/logs/localhost.%YYYY-24-%MM-24-%DD-24.log
  7,在/home/tomcat/tomcat6/webapps/awstats/WEB-INF/cgi-bin中建立一个目录data,
    设置awstats.www.seegoo.com.conf的文件的
  拷贝并改名 awstats/wwwroor/cgi-bin 目录到 你的 /WEB-INF/cgi 目录
  编辑awstats.${mydomain}.conf 配置文件,配置以下几项:
  LogFile="E:/Tomcat/logs/localhost_access_log.%YYYY-%MM-%DD.log"
  SiteDomain="${mydomain}"
  HostAliases="${mydomain} www.${mydomain} 127.0.0.1 localhost"
  DefaultFile="index.jsp"
  LogType = W     //指定了分析的是web日志文件
  DirData="data"   //指定了存放分析结果文件的目录,根据配置文件的配置,在/WEB-INF/cgi目录建立一个空文件夹data存放分析后的数据。

  DirData为./data
  8,多日志合并分析(例:新浪播客其中两台服务器2月6日的日志30.0206.vblog.log与31.0206.vblog.log)
LogFile="/opt/awstats/tools/logresolvemerge.pl /var/apachelogs/30.0206.vblog.log /var/apachelogs/31.0206.vblog.log|"

LogFile="/opt/awstats/tools/logresolvemerge.pl /var/apachelogs/*.0206.vblog.log|"   9,访问:http://192.168.5.8:8080/awstats/cgi-bin/awstats.pl?config=www.seegoo.com
  

  

  10,awstats分析多个日志,有时候,如果有多个主机生成的日志文件,需要合并处理的话,我是这样处理的:
  写一个调度:30 3 * * * sh /home/tomcat/shell/merge.sh,每天凌晨三点,合并前一天所有的主机传过来的日志。
    #!/bin/sh
year_month=`date -d yesterday "+%Y-%m-%d"`
echo $year_month
LOGDIR17=/home/tomcat/account/log17/
LOGDIR18=/home/tomcat/account/log18/
  LOGDIR=/home/tomcat/account/logs/
  prefix='localhost_access_log.'
suffix='.log'
fileName17=$LOGDIR17$prefix$year_month$suffix
echo $fileName17
fileName18=$LOGDIR18$prefix$year_month$suffix
echo $fileName18
  filesName=$LOGDIR$prefix$year_month$suffix
echo $filesName
  sort -m -t " " -k 4 -o $filesName $fileName17 $fileName18
  echo "end..."
然后加上两个调度:0 5 * * * sh /home/tomcat/shell/awstat.sh
30 4 * * * sh /home/tomcat/shell/awstat_day.sh进行正常的日志分析即可。

   

11)awstats 如何统计以前的日志?
awstats.pl 脚本支持在命令行指定logfile,这样简单了,改变这个参数就可以了。不过要注意的是,如果你的data里面已经处理新的日志,那么指定logfile也没用了,以前的没办法更新进来了。只能是删掉data里面的内容,然后重新从最早的开始生成一遍。我写了一个脚本来做这个事情。
按照月份:

  #!/bin/bash
awstats_dir=/home/tomcat/tomcat6/webapps/awstats/WEB-INF/cgi-bin
logfile_dir="/home/tomcat/account/logs"
cd $awstats_dir
for file in `find $logfile_dir -name "localhost_access_log.2012-05-*" | sort`;do
        #echo "$file"
        ./awstats.pl -update -config=seegooReport -LogFile=$file
done



按照天生成:
    #!/bin/bash
awstats_dir=/home/tomcat/tomcat6/webapps/awstats/WEB-INF/cgi-bin
logfile_dir="/home/tomcat/account/logs"
cd $awstats_dir
for file in `find $logfile_dir -name "localhost_access_log.2012-05-*" | sort`;do
        #echo "$file"
        ./awstats.pl -update -config=seegooReport -LogFile=$file -databasebreak=day
done



  

生成以前的按月的分析日志:

  #!/bin/bash
awstats_dir=/home/tomcat/tomcat6/webapps/awstats/WEB-INF/cgi-bin
logfile_dir="/home/tomcat/account/logs"
cd $awstats_dir
for file in `find $logfile_dir -name "localhost_access_log.$1-*" | sort`;do#$1为调用shell脚本的年-月参数
        #echo "$file"

        ./awstats.pl -update -config=seegooReport -LogFile=$file
done

  生成以前的按天进行统计的分析日志:

  #!/bin/bash
awstats_dir=/home/tomcat/tomcat6/webapps/awstats_day/WEB-INF/cgi-bin
logfile_dir="/home/tomcat/account/logs"
cd $awstats_dir
for file in `find $logfile_dir -name "localhost_access_log.$1-*" | sort`;do
        #echo "$file"
        ./awstats.pl -update -config=seegooReport -LogFile=$file -databasebreak=day
done


假如脚本运行正常,出现:
Create/Update database for config "./awstats.seegooReport.conf" by AWStats version 7.0 (build 1.971)
From data in log file "/opt/tomcat/logs/localhost_access_log.2013-01-17.log"...
Phase 1 : First bypass old records, searching new record...
Direct access to last remembered record is out of file.
So searching it from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 316
Found 0 dropped records,
Found 0 comments,
Found 0 blank records,
Found 0 corrupted records,
Found 249 old records,
Found 67 new qualified records.
而通过浏览器访问,要生成的访问数据仍然没有生成,那么应该删除webapps/awstats/WEB-INF/cgi-bin/data/awstats012013.seegooReport.txt文件中的
LastLine 20130117154428 316 97118 20376852288363
FirstTime 20130101090526
LastTime 20130117154425
几个参数,就可以了。(事实上,我是直接将整个awstats012013.seegooReport.txt文件都删除了,所有的数据重新用脚本生成一遍。)



  




  注:tomcat日志格式如下: %h %l %u %t "%r" %s %b %T
  其中:
  * %h 访问的用户IP地址
* %l 访问逻辑用户名,通常返回'-'
* %u 访问验证用户名,通常返回'-'
* %t 访问日时
* %r 访问的方式(post或者是get),访问的资源和使用的http协议版本
* %s 访问返回的http状态
* %b 访问资源返回的流量
* %T 访问所使用的时间
  

  

  

  

    %...a: 远程IP地址
%...A: 本地IP地址
%...B: 已发送的字节数,不包含HTTP
%...b: CLF格式的已发送字节数量,不包含HTTP头。
例如当没有发送数据时,写入‘-’而不是0
%e: 环境变量FOOBAR的内容
%...f: 文件名字
%...h: 远程主机
%...H 请求的协议
%i: Foobar的内容,发送给服务器的请求的标头行。
%...l: 远程登录名字(来自identd,如提供的话)
%...m 请求的方法
%n: 来自另外一个模块的注解“Foobar”的内容
%o: Foobar的内容,应答的标头行
%...p: 服务器响应请求时使用的端口
%...P: 响应请求的子进程ID
%...q 查询字符串(如果存在查询字符串,则包含“?”后面的
部分;否则,它是一个空字符串。)
%...r: 请求的第一行
%...s: 状态。对于进行内部重定向的请求,这是指*原来*请求
的状态。如果用%...>s,则是指后来的请求。
%...t: 以公共日志时间格式表示的时间(或称为标准英文格式)
%t: 以指定格式format表示的时间
%...T: 为响应请求而耗费的时间,以秒计
%...u: 远程用户(来自auth;如果返回状态(%s)是401则可能是伪造的)
%...U: 用户所请求的URL路径
%...v: 响应请求的服务器的ServerName
%...V: 依照UseCanonicalName设置得到的服务器名字






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-641590-1-1.html 上篇帖子: Java Servlet & Tomcat 下篇帖子: tomcat 的基本概念和安装配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表