说起日志分析工具,我们通常想起 ELK 日志分析工具,但不要为了 ELK 而使用 ELK,应该要看实际环境和业务需求而定,如果你的业务量是海量 + 分布式,日志分散难以查找,查询速度慢,并希望实时显示日志,那么才要考虑使用 ELK,否则,一般的小型的日志分析工具,甚至直接登录服务器看 log 也跟方便。
本文将介绍如何在 Ubuntu 下安装和使用 GoAccess。
1. 安装
GoAccess 是用 C 语言写的一个日志分析工具,Github 地址是:allinurl/goaccess,官网网站是:GoAccess 官网。
注意:
- 更加详细的安装方式请参考 github。本文以 Ubuntu 为例;
- Ubuntu 下使用 apt-get install 安装,只能安装旧版本(v0.6),不建议使用这种方式直接安装;
- 安装时,可能会提示没有 GeoIP 这个库
Missing development files for the GeoIP library
,可以检查一下,提前安装好,可以参考 Install GeoIP。
我们直接从 Debian & Ubuntu 的仓库获取最新的 GoAccess 的安装包来安装:
1 | $ echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list |
安装完成之后,运行:
1 | goaccess --version |
查看版本,我写这篇文章时,最新版是 1.2。
2. 使用
GoAccess 的使用也是非常简单,并且支持输入多种格式。
输出 html:
1 | goaccess /var/log/nginx/access.log -a > report.html |
注意:输出报告时,请记得看终端提示,是否提示有 log-format
,time-format
等格式错误,如果有,到 /etc/goaccess.conf
里面修改。
这样,我们把 report.html
放在可访问的 web 目录下面,就可以通过浏览器访问,可以查看这个 Live Demo。
从 404 这一栏可以看出,服务器经常都会遭受到一些机器的嗅探,他们经常会使用一些开源框架/系统的一些常用路径,来嗅探你的服务器的数据库/管理员的路径等,如果服务器返回的是 200
,那么攻击者可能就会采取进一步的行动。
除了 html 报告,像 cvs/json 这些常用的格式也可以输出,同样,GoAccess 也支持实时日志访问:
1 | goaccess /xxx/xxx/access.log -o /www/xxx/real_time_report.html --real-time-html |
这样,你就可以访问 real_time_report.html
来查看实时的日志情况了。
3. 小结
对于日志分析工具,个人建议适合自己的业务和需求就好,在不同的阶段,做不同的事情,ELK 是十分强大,但在业务刚刚起步时,并不一定适合我们。围绕自己的业务,去解决事情,不要为了使用工具而使用工具。
前文也说过,在日志量相对较小时,直接登录服务器查看,或者写个脚本定期抓取分类也是可以的,这里就不在过多地说明了。
另外,有一款用 Rubu 写的超级 Geek 的日志分析工具:glTail.rb 官网 和 glTail.rb Github,也许以后有机会再尝试一下。