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

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/154926.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-17 02:37
下一篇 2024-11-17 02:37

相关推荐

  • Cron执行日志用法介绍

    本文将从多个方面对cron执行日志进行详细阐述,包括cron执行日志的定义、cron执行日志的产生原因、cron执行日志的格式以及如何解读cron执行日志。 一、定义 Cron是一…

    编程 2025-04-29
  • Hibernate日志打印sql参数

    本文将从多个方面介绍如何在Hibernate中打印SQL参数。Hibernate作为一种ORM框架,可以通过打印SQL参数方便开发者调试和优化Hibernate应用。 一、通过配置…

    编程 2025-04-29
  • 使用Snare服务收集日志:完整教程

    本教程将介绍如何使用Snare服务收集Windows服务器上的日志,并将其发送到远程服务器进行集中管理。 一、安装和配置Snare 1、下载Snare安装程序并安装。 https:…

    编程 2025-04-29
  • Log4j日志打印到Systemout.log

    Log4j是Apache的一个强大的日志组件,可以帮助开发者更好地管理日志。在Java应用程序中,很多开发者都会选择使用Log4j来实现日志输出。本文将介绍如何使用Log4j将日志…

    编程 2025-04-28
  • 如何将Linux系统日志发送到日志服务器

    本文将介绍如何将Linux系统日志发送到日志服务器,以方便管理和监控系统状态。 一、安装rsyslog软件包 rsyslog是Linux系统上默认的系统日志软件,用于收集系统事件和…

    编程 2025-04-27
  • SpringBoot如何设置不输出Info日志

    本篇文章将带您了解如何在SpringBoot项目中关闭Info级别日志输出。 一、为什么要关闭Info日志 在开发中,我们经常会使用Log4j、Logback等框架来输出日志信息,…

    编程 2025-04-27
  • 深入解析Vue3 defineExpose

    Vue 3在开发过程中引入了新的API `defineExpose`。在以前的版本中,我们经常使用 `$attrs` 和` $listeners` 实现父组件与子组件之间的通信,但…

    编程 2025-04-25
  • 深入理解byte转int

    一、字节与比特 在讨论byte转int之前,我们需要了解字节和比特的概念。字节是计算机存储单位的一种,通常表示8个比特(bit),即1字节=8比特。比特是计算机中最小的数据单位,是…

    编程 2025-04-25
  • 深入理解Flutter StreamBuilder

    一、什么是Flutter StreamBuilder? Flutter StreamBuilder是Flutter框架中的一个内置小部件,它可以监测数据流(Stream)中数据的变…

    编程 2025-04-25
  • 深入探讨OpenCV版本

    OpenCV是一个用于计算机视觉应用程序的开源库。它是由英特尔公司创建的,现已由Willow Garage管理。OpenCV旨在提供一个易于使用的计算机视觉和机器学习基础架构,以实…

    编程 2025-04-25

发表回复

登录后才能评论