为了查看本站点的健康状况以及用户访问情况,就需要定期的分析服务器的 access 日志。但是由于没有使用日志分析工具,只能使用 cat、awk、sed 等命令做一些简单的日志分析统计,这样分析结果不理想也不全面,方法也极不高效。作为个人站点更适合引入轻量级的日志分析工具,例如 GoAccess ,其使用简单且分析效果较好,见这里。
Nginx配置
为了提高 GoAccess 分析准确度,需要配置 nginx.conf
的 log_format 项。
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' |
安装GoAccess
安装详见 GoAccess 文档。
$ wget http://tar.goaccess.io/goaccess-1.2.tar.gz |
在 configure 的时候可能会因为缺少一些依赖而失败。例如:
checking for GeoIP_new in -lGeoIP... no |
此时,根据提示安装对应依赖即可。
$ yum install GeoIP-devel |
配置
安装完成后,默认将配置文件goaccess.conf
放置于/usr/local/etc
路径,为了统一管理,使用mv /usr/local/etc/goaccess.conf /etc/
命令将其移动到/etc
目录下。
对配置文件做一些主要配置:
time-format %H:%M:%S |
其中,log-format 与 access.log 的 log_format 格式对应,每个参数以空格或者制表符分割。参数说明如下:
%t 匹配time-format格式的时间字段 |
命令
查看 GoAccess 命令参数,如下:
$ goaccess -h |
控制台模式
$ goaccess -a -d -f /data/logs/fanhaobai.com.access.log -p /etc/goaccess.conf |
控制台下的操作方法:
F1 主帮助页面 |
HTML模式
$ goaccess -a -d -f /data/logs/fanhaobai.com.access.log -p /etc/goaccess.conf -o /data/html/hexo/public/go-access.html |
本站分析出的报表效果,见这里。这个分析报表是通过手动执行命令生成,所以需要实现 GoAccess 自动地创建报表。
daemonize
GoAccess 已经为我们考虑到这点了,它可以以 daemonize 模式运行,并提供创建实时 HTML 的功能,只需要在启动命令后追加--real-time-html --daemonize
参数即可。
$ goaccess -a -d -f /data/logs/fanhaobai.com.access.log -p /etc/goaccess.conf -o /data/html/hexo/public/go-access.html --real-time-html --daemonize |
以守护进程启动 GoAccess 后,使用 Websocket 建立长连接,它默认监听 7890 端口,可以通过--port
参数指定端口号。
由于我的站点启用了 HTTPS,所以 GoAccess 也需要使用 openssl,在配置文件
goaccess.conf
中配置ssl-cert
和ssl-key
项,并确保在安装过程中 configure 时已添加--with-openssl
项来支持 openssl 。当使用 HTTPS 后 Websocket 通信时也应该使用 wss 协议,需要将ws-url
项配置为wss://www.domain.com
。
crontab
在某些场景下,没有这样的实时性要求,可采用 crontab 机制实现定时更新 HTML 报表。
# 每天执行 |
问题
到这里,唯一让我困惑且还未实践的是,当 access 日志被切割后,怎么合理使用 GoAccess 分析日志,--keep-db-files
这个功能倒是可以尝试,这样就可以只分析新生产的日志文件了。
高阶
尽管 GoAccess 很强大,但是它无法制定自定义监控规则,无法满足对站点更细粒度更全面的监控需求。到 2017 年底,本站已经使用 ELK 日志平台 来分析站点的访问情况和流量分析了,效果见 ELK 集中式日志平台。
相关文章 »
- ELK集中式日志平台之一 — 平台架构 (2017-12-16)
- ELK集中式日志平台之二 — 部署 (2017-12-22)
- ELK集中式日志平台之三 — 进阶 (2017-12-22)
- 本文作者: 樊浩柏科学院
- 本文链接: https://www.fanhaobai.com/2017/06/go-access.html
-
版权声明:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议
,转载请注明出处!