Bacysoft.cn

 找回密码
 邀请注册
查看: 17818|回复: 0
打印 上一主题 下一主题

详解 GoAccess 日志分析工具典型应用场景

[复制链接]
跳转到指定楼层
楼主
发表于 2017-8-24 21:48:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
GoAccess 是一款高效的 Web 服务日志分析工具,允许任意自定义日志格式。 可预定义的格式包括: Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, 等等。并可以通过自定义日志格式去实现更灵活的日志格式。

有关 GoAccess 的下载、安装、配置以及基本操作方法请移步 GoAccess 中文站 查阅相关手册(英文原站)。

本文着重介绍如何在项目中部署 GoAccess 以及相关的应用场景。相关环境为:Ubuntu Server 16.04 LTS + Apache2.4 + GoAccess 1.2

一、实时分析,此应用场景主要用于遭遇突发流量后,需要通过日志分析来找出流量的来源和访问对象。
  1. tail -f access.log | goaccess -a -
复制代码

详细描述:遭遇突发流量的表现通常是服务器资源消耗直线上升,在此场景下主要是 CPU 或者出口带宽被快速消耗,当然也有可能是两者同时占用。检查 2 号面板可以迅速定位访问量最高的 URL;3 号面板定位访问量最高的静态资源(如果开启了CDN,此面板的访问量应该比较少,如果很高则有可能是CDN出故障了);5 号面板可以迅速定位访问量最高的 IP 地址;10、 11 号面板可以辅助定位流量来源。在查看以上面板的指标时注意除了关注 hits,还应该关注 Bandwidth 指标,很多时候访问量高的对象并不一定是消耗资源最多的。

二、历史数据分析,此场景主要用于日常业务流量分析,通过日志分析找出各个业务模块中的热点模块,如果是内容站点,则可以反应出用户喜欢什么内容;如果是业务站点则可以看出业务流量是否符合预期。
  1. goaccess -a access.log access.log.1
复制代码
如果有多个文件,直接添加到命令行后面即可。如果是自动压缩的格式,则:
  1. zcat access.log.*.gz | goaccess -a -
复制代码


三、与模式匹配工具配合,比如过滤特定IP,特定时间段等等
  1. sed -n '/05\/Dec\/2010/,$ p' access.log | goaccess -a -
复制代码
此命令将获取从 05/Dec/2010 开始并直到文件结束的所有的 HTTP 请求。
或者使用相对日期,比如昨天或者明天:
  1. sed -n '/'$(date '+%d\/%b\/%Y' -d '1 week ago')'/,$ p' access.log | goaccess -a -
复制代码
又比如只看某个 IP 的访问日志:
  1. zcat access.log.*.gz | grep "192.168.1.1" | goaccess -a -
复制代码


四、部署建议
小型业务系统,比如服务器数量不是很多,则可以单台分别部署,优点是使用简单,缺点也很明显只能看到单台服务器的数据。大中型业务系统,则建议日志集中部署,这样可以看到全局信息,同时也支持单台独立分析。这里以阿里云为例,介绍一下如何使用 GoAccess 分析多台服务器上的日志。

将分散于多台 Web 服务器上的访问日志归集到一台服务器,并使用 GoAccess 或者类似软件统一分析。最简单的方案是使用 NAS 系统,每台 Web 服务器将日志目录挂载到 NAS,这样每台 Web 服务器产生的日志就直接写到了 NAS 上。同时运行 GoAccess 的服务器也将目录挂载到 NAS 上对应的日志目录。然后就可以像在单机上分析日志一样了。

假设在 NAS 服务器上每台 Web 服务器都有自己的目录,然后使用 GoAccess 统一分析,参考如下命令行:
  1. tail -f ./*/access.log | goaccess -a -
复制代码
其中 * 表示每台 Web 服务器的日志目录。
您需要登录后才可以回帖 登录 | 邀请注册

本版积分规则



京ICP备08000958号-1|腾讯云|阿里云|联系方式|Bacysoft.cn

GMT+8, 2024-12-26 03:22 , Processed in 0.013164 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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