您的位置:

深入了解Access_log日志分析

一、Access_log是什么

在Apache官方文档中,access log也叫做访问(access)日志、HTTP服务器请求日志,是apache服务器在处理请求时留下的一种记录,用来记录访问了网站的客户端IP地址、访问时间、请求的URL、HTTP方法和服务器响应状态等信息。

简单来说,由于服务器端不能记录所有的情况,所以需要记录重要的日志信息来监控客户端行为以及运行状态。

二、Access_log日志打印格式

默认情况下,Apache Web服务器访问日志格式是由“LogFormat”、“CustomLog”指令组合定义的。

Apache默认日志格式:Combined Log Format,定义为:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog logs/access_log combined

其中,“%h” 是客户端IP地址,“%l” 是客户端身份验证后关联的传输级别安全信息(常用于SSL/TLS传输过程),“%u” 是身份认证用户,“%t” 是服务器记下时间的时间戳,“%r” 是请求行,包括请求方法、资源定位符和HTTP协议版本, “%>s” 是服务器响应状态代码,“%b” 是HTTP响应中发送的字节数,“%{Referer}i"是http访问来源," %{User-Agent}i"是http用户代理标识信息。

三、Access_log分析工具

接下来,我们需要考虑的是如何分析access_log。让我们一起来看看几个强大的分析工具。

1. awstats

awstats是一个基于Perl的开源工具,可以分析访问日志文件,并将其转换为易于理解的图表和表格。它可以分析访问在Web服务器上找到的HTML文件、多媒体文件和其他Web页面的信息,以及浏览次数、每个页面的访问频率等数据。

LogFormat="%host %other %logname %time1 %methodurl %code %bytesd \
%refererquot %uaquot"
LoadPlugin="decodeutfkeys"
LogSeparator=" "
HostAliases="localhost 127.0.0.1"

2. GoAccess

GoAccess是一个快速、实时的日志文件分析器和交互式查看器,可以在终端中工作。它使用Web日志文件作为输入,然后在终端界面或HTML文件中显示增量式的日志数据,供管理员分析和监视服务器活动。

sudo apt-get update && sudo apt-get install goaccess
sudo goaccess -f /var/log/nginx/access.log -a -o /usr/share/nginx/html/report.html

3. ELK stack

ELK是Elasticsearch、Logstash和Kibana的缩写。这是一种强大的基于开源的日志分析平台,可以将来自各种数据来源的流式数据转换为可访问、可搜索、可视化的数据。

input {
  file {
    path => ["/my/nifty/auth/access.log"]
    tags => ['apache-access']
    }
}

filter {
  if "apache-access" in [tags] {
    grok {
      match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
    date {
      match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss ZZ" ]
      locale => en
    }
  }
}

output {
  file {
    path => "/tmp/logstash-apache-access.log"
  }
  elasticsearch {
    index => "apache-access-%{+YYYY.MM.dd}"
  }
}

四、AccessLogin

AccessLogin是一个免费的开源工具,可用于分析Nginx和Apache Web服务器访问日志文件。它提供了一个易于使用的Web界面,可以查看统计信息、了解关键性能指标、监视客户端使用情况和快速检测常见的网络瓶颈。

下面是accesslogin的安装和使用方法:

sudo apt-get update
sudo apt-get install git
sudo apt-get install python
sudo apt-get install python-pip
pip install psutil
git clone https://github.com/dmpayton/accesslog.git
cd accesslog && python accesslog.py --help

五、AccessLog Report Success

除了使用上述工具对access log进行分析,我们还可以根据其中的数据生成一些统计报告,以更好地了解客户端的使用情况。

让我们生成一个成功的请求报告。首先,我们需要在access log中提取成功的请求和时间戳。下面是脚本的示例:

awk '$9 ~ /200/ { print $7,$9 }' access.log > access.success.log

现在我们可以使用GNUplot 创建一个报告,显示请求的成功率和时间戳。下面是脚本的示例:

echo '
set autoscale
set terminal png size 600,400
set output "access.png"
set xdata time
set timefmt "%d:%b:%Y:%T"
set xrange ["30/Apr/2018:00:00:00" : "15/May/2018:00:00:00"]
set format x "%d/%m %H:%M"
set xlabel "Date/Time"
set ylabel "HTTP Responses"
set title "Successful HTTP Requests"
plot "access.success.log" using 1:(1) smooth freq with boxes \
       title "Success"
' | gnuplot

六、苹果手机AccessLog怎么查看

如果你是苹果手机用户,想要查看AccessLog,则需要执行以下步骤:

第1步:开启设备管理器

在iPhone/iPad或iPod Touch上的“设置”>“开发人员”中将“Device Management”设置为“On”状态,如下所示:

Settings > Developer > Device Management

第2步:查看日志

启动应用程序和操作,将生成相应的日志。在开发机上使用Xcode,打开“Window”>“Devices and Simulators”,将设备连接到Mac上,在左侧下拉菜单中选择要检查的设备。在“Device Information”>“View Device Logs”中显示各种日志。

七、Access日志记录选取

最后,我们需要考虑的是在记录Access日志时该选取哪些内容。记录Access日志信息可能会影响服务器性能并占用存储空间,因此我们应该选择一些重要的数据来记录,例如IP地址、时间戳、请求URL和响应状态等。

下面是一个记录自定义的Access日志示例:

LogFormat "%v:%p %h %l %u %{%Y-%m-%d %H:%M:%S}t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" "%{X-Forwarded-For}i"" vhost_combined

CustomLog "/var/log/apache2/vhost.log" vhost_combined

结语

Access_log日志分析工具的使用可以让我们更好地了解客户端的使用情况,从而提高我们的网站性能以及安全性。 希望本文对大家有所帮助。