Bacysoft.cn
标题:
详解 GoAccess 日志分析工具典型应用场景
[打印本页]
作者:
bacy001
时间:
2017-8-24 21:48
标题:
详解 GoAccess 日志分析工具典型应用场景
GoAccess 是一款高效的 Web 服务日志分析工具,允许任意自定义日志格式。 可预定义的格式包括: Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, 等等。并可以通过自定义日志格式去实现更灵活的日志格式。
有关 GoAccess 的下载、安装、配置以及基本操作方法请移步
GoAccess 中文站
查阅相关手册(
英文原站
)。
本文着重介绍如何在项目中部署 GoAccess 以及相关的应用场景。相关环境为:Ubuntu Server 16.04 LTS + Apache2.4 + GoAccess 1.2
一、实时分析,此应用场景主要用于遭遇突发流量后,需要通过日志分析来找出流量的来源和访问对象。
tail -f access.log | goaccess -a -
复制代码
详细描述:遭遇突发流量的表现通常是服务器资源消耗直线上升,在此场景下主要是 CPU 或者出口带宽被快速消耗,当然也有可能是两者同时占用。检查 2 号面板可以迅速定位访问量最高的 URL;3 号面板定位访问量最高的静态资源(如果开启了CDN,此面板的访问量应该比较少,如果很高则有可能是CDN出故障了);5 号面板可以迅速定位访问量最高的 IP 地址;10、 11 号面板可以辅助定位流量来源。在查看以上面板的指标时注意除了关注 hits,还应该关注 Bandwidth 指标,很多时候访问量高的对象并不一定是消耗资源最多的。
二、历史数据分析,此场景主要用于日常业务流量分析,通过日志分析找出各个业务模块中的热点模块,如果是内容站点,则可以反应出用户喜欢什么内容;如果是业务站点则可以看出业务流量是否符合预期。
goaccess -a access.log access.log.1
复制代码
如果有多个文件,直接添加到命令行后面即可。如果是自动压缩的格式,则:
zcat access.log.*.gz | goaccess -a -
复制代码
三、与模式匹配工具配合,比如过滤特定IP,特定时间段等等
sed -n '/05\/Dec\/2010/,$ p' access.log | goaccess -a -
复制代码
此命令将获取从 05/Dec/2010 开始并直到文件结束的所有的 HTTP 请求。
或者使用相对日期,比如昨天或者明天:
sed -n '/'$(date '+%d\/%b\/%Y' -d '1 week ago')'/,$ p' access.log | goaccess -a -
复制代码
又比如只看某个 IP 的访问日志:
zcat access.log.*.gz | grep "192.168.1.1" | goaccess -a -
复制代码
四、部署建议
小型业务系统,比如服务器数量不是很多,则可以单台分别部署,优点是使用简单,缺点也很明显只能看到单台服务器的数据。大中型业务系统,则建议日志集中部署,这样可以看到全局信息,同时也支持单台独立分析。这里以阿里云为例,介绍一下如何使用 GoAccess 分析多台服务器上的日志。
将分散于多台 Web 服务器上的访问日志归集到一台服务器,并使用 GoAccess 或者类似软件统一分析。最简单的方案是使用 NAS 系统,每台 Web 服务器将日志目录挂载到 NAS,这样每台 Web 服务器产生的日志就直接写到了 NAS 上。同时运行 GoAccess 的服务器也将目录挂载到 NAS 上对应的日志目录。然后就可以像在单机上分析日志一样了。
假设在 NAS 服务器上每台 Web 服务器都有自己的目录,然后使用 GoAccess 统一分析,参考如下命令行:
tail -f ./*/access.log | goaccess -a -
复制代码
其中 * 表示每台 Web 服务器的日志目录。
欢迎光临 Bacysoft.cn (http://bacysoft.cn/)
Powered by Discuz! X3.3