美文网首页
用goaccess 分析 jboss 的access 日志

用goaccess 分析 jboss 的access 日志

作者: 墨鱼丸子 | 来源:发表于2016-03-14 15:18 被阅读0次

    GoAccess是一款开源的网站日志实时分析工具。

    GoAccess 的工作方式就是读取和解析 Apache/Nginx/Lighttpd/jboss 的访问日志文件 access

    log,然后以更友好的方式把统计信息显示出来。统计的内容包括:访问概况、动态页面请求、静态页面请求(如图片、样式表、脚本等)、访客排名,访客使用

    的操作系统,访客使用的浏览器,来路域名,404 错误,搜索爬虫,搜索关键词等等。

    GoAccess 的性能比较不错,据官方测试,在一台 Intel Xeon CPU @ 2.40ghz CPU, 2GB 内存的机器上处理日志文件的速度是97000行每秒。

    下面采用源代码安装的方式:

    在 CentOS 上安装编译 GoAccess 时需要的工具和库:

    # yum groupinstall 'Development Tools'

    # yum install glib2 glib2-devel ncurses-devel

    另外在 Ubuntu 12.04 上安装编译 GoAccess 时需要的工具和库:

    $ sudo apt-get install build-essential

    $ sudo apt-get install libglib2.0-dev libncursesw5-dev

    下载 GoAccess 的源代码、编译和安装:

    $ wget http://downloads.sourceforge.net/project/goaccess/0.7.1/goaccess-0.7.1.tar.gz

    $ tar -xzvf goaccess-0.7.1.tar.gz

    $ cd goaccess-0.7.1/

    $ ./configure --enable-utf8

    $ make

    $ sudo make install

    运行 GoAccess,选择 NCSA Combined Log Format:

    $ goaccess -f /usr/local/nginx/logs/access.log

    由于工作需要,服务器用的是JBOSS,所以出现不匹配的问题

    JBOSS access 打开方法:

    在默认的情况下,JBoss7.1是没有开启access_log的,如果要开启这项功能,就需要修改$JBOSS_HOME\standalone\configuration\standalone.xml这个文件

    <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">

    <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>

    <virtual-server name="default-host" enable-welcome-root="true">

    <alias name="localhost"/>

    <alias name="example.com"/>

    <access-log pattern="%v %a %t %r %s %b %u %m" rotate="true">

    <directory path="."/>

    </access-log>

    </virtual-server>

    </subsystem>

    添加以上黑体部分就可以打开jboss的acess日志功能。其中 pattern="%v %a %t %r %s %b %u %m"用于日志记录。

    参数内容如下:

    %a    远端IP

    %A 本地IP

    %b    发送的字节数,不包含HTTP头,如果为0,使用”-”

    %B    发送的字节数,不包含HTTP头

    %h    远端主机名(如果resolveHosts=false),远端的IP

    %H    请求协议

    %l    从identd返回的远端逻辑用户名,总是返回’-’

    %m    请求的方法

    %p    收到请求的本地端口号

    %q    查询字符串

    %r    请求的第一行

    %s 响应的状态码

    %S    用户的sessionID

    %t    日志和时间,使用通常的log格式

    %u    认证以后的远端用户(如果存在的话,否则为’-’)

    %U    请求的URI路径

    %v    本地服务器的名称

    %D 处理请求的时间,以毫秒为单位

    %T    处理请求的时间,以秒为单位

    由于goaccess 适用于Apache/Nginx  对于JBOSS的日志支持不是特别好 下面是apche参数与jboss参数比较

    %a 远端IP地址                                                                                    %a    远端IP 

    %A 本机IP地址                                                                                    %A 本地IP

    %B 除HTTP头以外传送的字节数                                                                      %B    发送的字节数,不包含HTTP头

    %b 以CLF格式显示的除HTTP头以外传送的字节数,也就是当没有字节传送时显示’-'而不是0。                %b    发送的字节数,不包含HTTP头,如果为0,使用”-”

    %{Foobar}C 在请求中传送给服务端的cookieFoobar的内容。

    %D 服务器处理本请求所用时间,以微为单位。                                                        %D 处理请求的时间,以毫秒为单位

    %{FOOBAR}e 环境变量FOOBAR的值

    %f 文件名

    %h 远端主机                                                                                    %h    远端主机名(如果resolveHosts=false),远端的IP

    %H 请求使用的协议                                                                                %H    请求协议

    %{Foobar}i 发送到服务器的请求头Foobar:的内容。

    %l 远端登录名(由identd而来,如果支持的话),除非IdentityCheck设为"On",否则将得到一个"-"。        %l    从identd返回的远端逻辑用户名,总是返回’-’

    %m 请求的方法                                                                                      %m    请求的方法

    %{Foobar}n 来自另一个模块的注解Foobar的内容。

    %{Foobar}o 应答头Foobar:的内容。

    %p 服务器服务于该请求的标准端口。                                                              %p    收到请求的本地端口号

    %P 为本请求提供服务的子进程的PID。

    %{format}P 服务于该请求的PID或TID(线程ID),format的取值范围为:

    %q 查询字符串(若存在则由一个"?"引导,否则返回空串)                                                  %q    查询字符串

    %r 请求的第一行                                                                                     %r    请求的第一行

    %s 状态。对于内部重定向的请求,这个状态指的是原始请求的状态,—%>s则指的是最后请求的状态。          %s 响应的状态码

    %t 时间,用普通日志时间格式(标准英语格式)                                                        %t    日志和时间,使用通常的log格式

    %{format}t 时间,用strftime(3)指定的格式表示的时间。(默认情况下按本地化格式)

    %T 处理完请求所花时间,以秒为单位。                                                              %T    处理请求的时间,以秒为单位

    %u 远程用户名(根据验证信息而来;如果返回status(%s)为401,可能是假的)                            %u    认证以后的远端用户(如果存在的话,否则为’-’)

    %U 请求的URL路径,不包含查询字符串。                                                              %U    请求的URI路径

    %v 对该请求提供服务的标准ServerName。                                                            %v    本地服务器的名称

    %V 根据UseCanonicalName指令设定的服务器名称。

    %X 请求完成时的连接状态:X= 连接在应答完成前中断。

    += 应答传送完后继续保持连接。

    -= 应答传送完后关闭连接。

    (在1.3以后的版本中,这个指令是%c,但这样就和过去的SSL语法:%{var}c冲突了)

    %I 接收的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio模块。

    %O 发送的字节数,包括请求头的数据,并且不能为零。要使用这个指令你必须启用mod_logio模块

    %S    用户的sessionID

    goaccess使用方法

    1、goaccess -f  access.log

    2、goaccess -f access.log -p ~/.goaccess  -a > report.html  用于输出html报表。

    其中.goaccess 为配置文件 内容如下:

    time-format %T

    date-format %d/%b/%Y

    log-format %v %h [%d:%t %^] %m %U %H %^ %s %b %^ %D

    其中log-format 中%d 为 date-format   %t 为time-format

    %^为忽略字段,在goaccess参数中 %r 为 %m %U %H 合集。

    所以此处%r 用 %m %U %H 代替。

    相关文章

      网友评论

          本文标题:用goaccess 分析 jboss 的access 日志

          本文链接:https://www.haomeiwen.com/subject/ygjdkttx.html