GoAccess,一款来自国外的免费开源可部署在服务器端实现实时日志分析的工具。而且GoAccess日志分析可以实现实时可视化WEB显示,这个优秀的交互功能比有些仅仅是数据化显示更为体验友好。GoAccess可以实现WEB浏览器端HTML、CSV、JSON报告,比较适合有需要强化运维能力和数据分析的项目。
GoAccess采用C语言编写,可实现毫秒级的更新,支持Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront等WEB日志格式。可以实现漂亮的终端以及 bootstrap 风格控制面板。在这篇文章中,笔者就和大家一起探索GoAccess日志软件的部署和功能。
如果我们初次使用和体验GoAccess工具,请使用测试服务器体验,切勿在生产环境中直接安装和测试。
第一、GoAccess 部署安装
目前,GoAccess支持在Apache、Nginx、 Amazon S3、 Elastic Load Balancing、CloudFront等服务器环境中进行日志分析。安装可以编译安装或者直接服务器发行版安装。
1、编译安装
wget http://tar.goaccess.io/goaccess-1.2.tar.gz
tar -xzvf goaccess-1.2.tar.gz
cd goaccess-1.2/
./configure --enable-utf8 --enable-geoip=legacy
make
make install
目前官方版本最新是1.2版本,直接下载编译安装。如果需要使用实时 HTML 报告, 请确保开放 7890 端口。同时我们还可以查看配置选项。GoAccess 拥有多个配置选项。获取完整的最新配置选项列表,请运行:./configure --help
。
--enable-debug
使用调试标志编译且关闭编译器优化。
--enable-utf8
宽字符支持。依赖 Ncursesw 模块。
--enable-geoip=<legacy|mmdb>
地理位置支持。依赖 MaxMind GeoIP 模块。legacy 将使用原始 GeoIP 数据库。mmdb 将使用增强版 GeoIP2 数据库。
--enable-tcb=<memhash|btree>
Tokyo Cabinet 存储支持。 memhash 将使用 Tokyo Cabinet 的内存哈希数据库。 btree 将使用 Tokyo Cabinet 的磁盘 B+Tree 数据库。
--disable-zlib
禁止在 B+Tree 数据库上使用 zlib 压缩。
--disable-bzip
禁止在 B+Tree 数据库上使用 bzip2 压缩。
--with-getline
使用动态扩展行缓冲区用来解析完整的行请求,否则将使用固定大小(4096)的缓冲区。
--with-openssl
使 GoAccess 与其 WebSocket 服务器之间的通信能够支持 OpenSSL。
2、直接安装
apt-get install goaccess
这个是基于Debian/Ubuntu直接安装,也可以先升级至最新版本安装。
echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install goaccess
同时,GoAccess 可以通过 Cygwin 运行在 Windows 系统下。
然后我们通过命令看看是否成功:
goaccess -V
可以看到已经安装到最新版本1.2.
第二、GoAccess 怎么运转的
1、简单使用
goaccess access.log
我们可以直接上述标准检测当前的access.log日志。
然后我们可以设置日志格式。
goaccess access.log -a -o report.html
命令生成HTML页面。
goaccess access.log -a -d -o report.json
生成JSON格式文件。
2、实时HTML输出
GoAccess 有能力在 HTML 报告中展示实时数据。您甚至可以通过电子邮件发送 HTML 报告,因为它是由没有外部文件依赖的单个文件组成。
goaccess access.log -o /usr/share/nginx/html/site/report.html --real-time-html
GoAccess 默认使用生成报告的主机名。您也可以指定 URL 用于客户端浏览器访问。
goaccess access.log -o report.html --real-time-html --ws-url=goaccess.io
GoAccess 默认侦听端口 7890,如下使用其他端口可以这样操作(确保端口已经打开):
goaccess access.log -o report.html --real-time-html --port=9870
绑定 WebSocket 服务器到不同于 0.0.0.0 的另外一个地址,可以这样操作:
goaccess access.log -o report.html --real-time-html --addr=127.0.0.1
3、实践使用
如果我们当前网站需要使用分析日志。
goaccess -d -f /www/wwwlogs/laobuluo_com_nginx.log --log-format=COMBINED
直接日志展示。
goaccess -d -f /www/wwwlogs/laobuluo_com_nginx.log --log-format=COMBINED -a > /www/wwwroot/laobuluo.com/logs.html
这样我们可以生成HTML,在网站根目录的一个自定义HTML文件,然后我们打开即可看到。不过上面的HTML展示是固定的,我们需要刷新怎么办?
goaccess -d -f /www/wwwlogs/laobuluo.com_nginx.log --log-format=COMBINED -a > /www/wwwroot/laobuluo.com/logs.html --real-time-html --port=7999 --daemonize
GoAccess 默认侦听端口 7890,上面我们自定义7999端口,同时我们有设置安全组的需要开放。
第三、GoAccess小结
GoAccess日志分析工具,我们可以看到功能还是非常强大的。如果我们初次使用的话,需要在生成环境的服务器备份数据,然后再安装,然后再实时监控日志且可以HTML可视化自动化刷新。但是我们要注意端口默认是7890端口,如果自定义端口需要额外开放。
部分内容参考文献:https://www.goaccess.cc/?mod=man。