网站日志分析利器goaccess部署安装教程
1 goaccesss特色:
GoAccess 还支持生成完整的实时 HTML 报告 (这对分析、监控以及数据可视化都是极好的),以及 JSON 和 CSV 格式的报告。
1.0.1 关键功能 —完整功能列表
- 快速, 实时, 毫秒 / 秒级更新, C 语言编写
- 仅依赖 ncurses 模块
- 几乎支持所有 Web 日志 格式 (Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, 等等)
- 简单设置即可支持自定义格式日志
- 漂亮的终端以及 bootstrap 风格控制面板 (易于将 GoAccess 调整为您自己的颜色搭配和风格)
- 当然,我们还支持 Valgrind 测试。
1.0.2 特色功能速览…
- 完全实时:所有面板以及指标均按照指定时间间隔更新,在终端 (Terminal) 下是 200ms,HTML 则是每秒。
- 支持几乎所有 Web 日志格式:GoAccess 允许任意自定义日志格式。 可预定义的格式包括: Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, 等等
- 跟踪应用响应时间:跟踪处理请求的时间消耗。对于解决站点页面访问速度下降非常有用。
- 增长日志处理:需要持续保持数据?GoAccess 有能力处理在磁盘上以 B+Tree 数据库存储并且不断增长的日志。
- 仅依赖一个模块:GoAccess 是用 C 语言编写的。 仅仅需要 ncurses 这一个模块即可运行。同时 GoAccess 甚至还拥有自己的兼容 RFC6455 协议的 Web Socket 服务器。
- 易于使用:您可以直接运行 GoAccess 去处理您的访问日志文件,仅需选取日志格式然后让 GoAccess 解析日志内容并将统计结果展示出来。
- 访客画像:可以按照小时或者指定日期确定最慢请求的访问次数,访客数量,带宽以及其他相关度量值。
- 支持虚拟主机:拥有多个虚拟主机?在控制面板中能够显示出哪一个虚拟主机消耗 Web 服务器上最多的资源。
- 配色风格可定制:GoAccess 的配色风格十分易于定制化。无论是通过终端,还是仅仅通过简单修改 HTML 页面的层叠样式表。
2 goaccess安装部署
2.1 Build from release
GoAccess can be compiled and used on *nix systems.
Download, extract and compile GoAccess with:
|
|
GoAccess has minimal requirements, it’s written in C and requires only ncurses. However, below is a table of some optional dependencies in some distros to build GoAccess from source.
Distro | NCurses | GeoIP (opt) | GeoIP2 (opt) | OpenSSL (opt) |
---|---|---|---|---|
Ubuntu/Debian | libncursesw6-dev | libgeoip-dev | libmaxminddb-dev | libssl-dev |
RHEL/CentOS | ncurses-devel | geoip-devel | libmaxminddb-devel | openssl-devel |
Arch | ncurses | geoip | libmaxminddb | openssl |
Gentoo | sys-libs/ncurses | dev-libs/geoip | dev-libs/libmaxminddb | dev-libs/openssl |
Slackware | ncurses | GeoIP | libmaxminddb | openssl |
Note: You may need to install build tools like gcc
, autoconf
, gettext
, autopoint
etc. for compiling/building software from source. e.g., base-devel
, build-essential
, "Development Tools"
.
2.1.1
2.1.2 Debian/Ubuntu
|
|
Note: It is likely this will install an outdated version of GoAccess. To make sure that you’re running the latest stable version of GoAccess see alternative option below.
2.1.3 Official GoAccess Debian & Ubuntu repository
|
|
Note:
.deb
packages in the official repo are available through HTTPS as well. You may need to installapt-transport-https
.
2.1.4 Fedora
|
|
2.1.5 Arch
|
|
2.1.6 Gentoo
|
|
2.1.7 OS X / Homebrew
|
|
2.1.8 FreeBSD
|
|
2.1.9 OpenBSD
|
|
2.1.10 openSUSE
|
|
2.1.11 OpenIndiana
|
|
2.1.12 pkgsrc (NetBSD, Solaris, SmartOS, …)
|
|
2.1.13 Windows
GoAccess can be used in Windows through Cygwin. See Cygwin’s packages. Or through the GNU+Linux Subsystem on Windows 10.
3
3.1 解析日志文件
对于 Web
服务器的日志输出,是由我们指定的,既可以更多的记录站点的信息也可以大致的做一下记录。当然,最重要信息肯定也是必不可少的。如下,列出了比较重要的日志记录信息。
IP
地址- 用户访问时间戳
- 请求方式
URL
地址- 浏览器版本
- 服务器返回状态
- 返回字节长度
referer
UserAgent
3.2 3.2 分析日志文件
通过对于 Nginx
日志的分析,我们可以得到很多东西,不只是我下面表格列出的这几条。分析得到的结果,可以有助于我们来优化网站性能、统计网站访问量以及实时展示有很大的帮助。
编号 | 获取到的内容 | 如果统计 | 如何展示 |
---|---|---|---|
1 | 平均时间的流量 | sum | line char |
2 | 平均响应时间 | sum | line char |
3 | top 10 URL | count | bar chat |
4 | top 10 IP | count | bar char |
5 | top 10 UserAgent | count | bar char |
6 | 响应状态的分布 | group by | pie chat or stack chat |
7 | UserAgent 的分布 | group by | pie chat or stack chat |
8 | HTTP 版本的分布 | group by | pie chat or stack chat |
4 goaccess日志格式
一般的选择COMBINED
–log-format=COMBINED
|
|
各个字段含义如下:
%h
: 客户端 IP 地址%l
: 远程登录名(在大多数现代设置中通常为空-
)%u
: 已认证的用户(如果适用的话,否则也是-
)%t
: 时间戳,通常是[%d/%b/%Y:%H:%M:%S %z]
或类似的格式"%r"
: 请求行,包括方法、URI 和协议版本%>s
: 响应状态码%b
: 发送给客户端的响应体大小(不包括头部),以字节表示;如果未知,则显示-
"%{Referer}i"
: 请求头中的 Referer 字段内容"%{User-Agent}i"
: 请求头中的 User-Agent 字段内容
对于 Nginx,它的默认 Combined 日志格式可能稍有不同,但与这个格式非常相似:
Code
|
|
GoAccess 使用 --log-format=COMBINED
选项时,会自动识别这种标准格式,并能正确解析基于此格式的日志文件。
5 定制goaccess日志格式
|
|
|
|
参考:
基于 Amazon Security Lake 打造统一日志分析平台 方案设计与实践 | 亚马逊AWS官方博客
可视化GC日志分析工具 — 我的技术知识分享 (niocoder.com)