GoAccess日志分析工具,适用于Nginx/Apache/IIS 等

    最近了解到一款Nginx日志分析工具GoAccess ,这里记录一下。

1 介绍

    GoAccess 是一款开源(MIT许可证)的且具有交互视图界面的实时 Web 日志分析工具,通过你的 Web 浏览器或者 *nix 系统下的终端程序即可访问。

     能为系统管理员提供快速且有价值的 HTTP 统计,并以在线可视化服务器的方式呈现。 GoAccess 解析指定的 Web 日志文件并将统计结果输出到 X 终端。功能如下:

  • 通用统计: 此面板展示了几个主要指标,比如:有效和无效请求的数量,分析这些数据所花费的时间,独立访客的情况,请求的文件,静态文件(CSS, ICO, JPG 等)的完整URL,404错误,被解析的日志文件的大小以及消耗的带宽。
  • 独立访客: 此面板按照日期展示了访问次数,独立访客数,以及累计消耗的带宽等指标。具有相同IP,相同访问时间,相同的 UserAgent 的 HTTP 请求将会被识别为独立访客。默认情况下包含了网络爬虫。 
    您也可以选择使用 --date-spec=hr 参数将按照日期分析修改为按照小时,例如:05/Jun/2016:16 。这对于希望在小时级别去跟踪每日流量非常有帮助。
  • 请求的文件: 此面板展示您服务器上被请求次数最多的文件。包含访问次数,独立访客数,百分比,累计消耗带宽,使用的协议,请求方式。
  • 请求的静态文件: 列出请求频率最高的静态文件类型,例如: JPGCSSSWFJSGIF, 和 PNG , 以及和上一个面板一样的其他指标。 另外静态文件可以被添加到配置文件中。
  • 404 或者文件未找到: 展示内容与之前的面板类似,但是其数据包含了所有未找到的页面,以及俗称的 404 状态码。
  • 主机: 此面板展示主机自身的详细信息。能够很好的发现不怀好意的爬虫以及识别出是谁吃掉了你的带宽。 
    扩展面板将向您展示更多信息,比如主机的反向DNS解析结果,主机所在国家和城市。如果开启了 参数,选择想查看的 IP 地址并按回车,将会显示 UserAgent 列表。
  • 操作系统: 此面板将显示主机使用的操作系统的信息。GoAccess 将尽可能尝试为每一款操作系统提供详细的信息。
  • 浏览器: 此面板将显示来访主机使用的浏览器信息。GoAccess 将尽可能尝试为每一款浏览器提供详细的信息。
  • 访问次数: 此面板按小时报告。因此将显示24个数据点,每一个均对应每一天的某一个小时。 
    使用 --hour-spec=min 参数可以设定为按每十分钟报告,并将以 16:4 的格式显示时间。这对发现服务器的峰值访问时段很有帮助。
  • 虚拟主机: 此面板将显示从访问日志中解析出来的不同的虚拟主机的情况。此面板仅在日志格式中启用了 %v 参数时显示。
  • 来路URL: 如果问题主机通过其他的资源访问了你的站点,以及通过从其他主机上的链接或者跳转到你的站点,则这些来路URL将会被显示在此面板。可以在配置文件中通过 `--ignore-panel` 开启此功能。(默认关闭)
  • 来路站点: 此面板将仅显示主机的部分,而不是完整的URL。
  • 关键字: 报告支持用在谷歌搜索,谷歌缓存,谷歌翻译上使用关键字。目前仅支持通过 HTTP 使用谷歌搜索。 可以在配置文件中通过 `--ignore-panel` 开启此功能。(默认关闭)
  • 地理位置: 根据 IP 地址判断地理位置。统计数据按照大洲和国家分组。需要地理位置模块的支持。
  • HTTP 状态码: 以数字表示的 HTTP 请求的状态编码。
  • 远程用户(HTTP验证) 通过 HTTP 验证来确定访问文档的权限。如果文档没有被密码保护起来,这部分将会显示为 “-”。此面板默认为开启,除非在日志格式变量中设置了参数 %e 。

 

标题

      GoAccess 是一款轻量、快速的日志分析工具,可以很方便的用于 Nginx/Apache/IIS 等的日志分析上,可以直接在控制台中方便的查看分析结果,也可以将结果导出成 html、csv、json 等格式,甚至还可以支持控制台和 html 的实时刷新!可谓是非常之强大。

2 安装

      GoAccess 的安装非常之简单,CentOS/Fedore 下直接执行 yum install goaccess 即可,Debian/Ubuntu 下使用 apt-get install goaccess,OS X 可以用 brew install goaccess 安装。

2.1、安装依赖包。

如果需要启用 IP 解析支持需要安装 geoip 库。CentOS 下执行:

  • $ yum install geoip-devel

GeoIP 在 Ubuntu 下的包名为 libgeoip-dev,其它系统详见官网下载页最后面的 Distribution Packages

2.2、下载源码并解压

       https://goaccess.io/download

  • $ wget http://tar.goaccess.io/goaccess-1.0.2.tar.gz

2.3、配置并安装

  • $ ./configure --enable-geoip --enable-utf8
  • $ make
  • # make install

3 基本用法

3.1 直接在控制台查看日志分析结果

  • $ goaccess -f xxxx.log

或者

  • $ goaccess -a -d -f /data/logs/access.log -p /etc/goaccess.conf

会弹出来一个窗口选择日志格式,如果是 Nginx 标准的日志格式直接选择第一项即可(空格选中,回车确认)。

3.2 输出分析结果到 html 文件

下面的命令会使用默认的配置文件导出到 HTML,如果需要使用自己的配置文件,请添加 -p 参数。

  • $ goaccess -f xxxx.log -o xxxxx.html

或者
       $ goaccess -a -d -f /data/logs/access.log -p /etc/goaccess.conf -o /data/html/public/go-access.html

3.3 实时监控

    需要在启动命令后追加--real-time-html --daemonize参数。

$ goaccess -a -d -f /data/logs/access.log -p /etc/goaccess.conf -o /data/html/public/go-access.html --real-time-html --daemonize

# 监听端口7890
$ netstat -tunpl | grep "goaccess"
tcp   0   0 0.0.0.0:7890      0.0.0.0:*     LISTEN      21136/goaccess

  以守护进程启动 GoAccess 后,使用 Websocket 建立长连接,它默认监听 7890 端口。

3.4 crontab定时监控

    在某些场景下,没有这样的实时性要求,可采用 crontab 机制实现定时更新 HTML 报表。

# 每天执行
0 0 1 * * goaccess -a -d -f /data/logs/fanhaobai.com.access.log -p /etc/goaccess.conf -o /data/html/hexo/public/go-access.html 2> /data/logs/go-access.log

3.5 历史监控

   当 access 日志被切割后,怎么合理使用 GoAccess 分析日志?

    可以试试磁盘存储选项

  • --keep-db-files

    在磁盘上保存已解析的数据。如果数据库文件存在,则文件将被覆盖。此参数应用于第一个数据集。如果设置此参数为 false 则在退出程序时将删除所有数据库。示例见下文。

    仅在设置了 --enable-tcb=btree 时有效。

  • --load-from-disk

    从磁盘载入之前存储过的数据。如果仅读取已保存的数据,则需要退出数据库文件。参考 keep-db-files 即相关示例见下文。

    仅在设置了 --enable-tcb=btree 时有效。

  • --db-path <dir>

    设置磁盘数据库文件的存储路径。默认值为 /tmp 目录。

    仅在设置了 --enable-tcb=btree 时有效。

4 常用选项

4.1 文件选项

  • -f --log-file=<logfile> 指定日志文件的路径。 
  • -p --config-file=<configfile> 指定配置文件的路径。 默认的配置文件位于 /usr/local/etc/goaccess.conf

4.2 解析选项

  • -d --with-output-resolver 在导出成 HTML 或 JSON 格式时启用 IP 地址解析
  • -e --exclude-ip <IP|IP-range> 排除的 IP 或 IP 段
  • -o --output=<json|csv|html> 指定输出的文件路径,根据后缀判定输出格式
  • -q --no-query-string 忽略 URL 后的面查询字符串
  • --ignore-crawlers 忽略爬虫

配置 HTML 实时刷新

演示地址

 

参考:

https://goaccess.cc/?mod=man

https://icewing.cc/post/goaccess-basic.html

https://www.fanhaobai.com/2017/06/go-access.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值