编辑
2023-03-27
安装与配置
00
请注意,本文编写于 605 天前,最后修改于 604 天前,其中某些信息可能已经过时。

目录

goaccess
安装
从软件源安装
手动安装
基本使用
配置文件常用配置
log-format 说明
启动 goaccess
退出 goaccess
高级使用
汉化
更详细的日志
反向代理
收集详细 ip 归属地区
其他

goaccess

官方网址

GoAccess 是一个开源的实时 Web 日志分析工具,它能够将 Web 服务器的访问日志转换成易于阅读的报告和交互式仪表板。

  • 支持多种日志格式,并提供了许多功能,如过滤、排序、统计等,使用户可以深入了解其网站的流量和访问情况。
  • 还支持在终端中实时监控日志流,这使得它成为一种快速轻便的实时监控工具。
  • 可以以图像化的方式通过WebSoxket协议实时的把access.log的变迁反应到浏览器提供查看

安装

从软件源安装

注意

不是所有发行版都提供最新的 goaccess 版本,有些软件库中只有 1.3 版本

# 安装 yum install goaccess # 或使用 sudo apt-get install goaccess

手动安装

官方最新版本版本指引

# 从 GoAccess 的官方网站下载源代码包。 wget https://tar.goaccess.io/goaccess-1.7.1.tar.gz # 解压缩源代码包。 tar -xzvf goaccess-1.7.1.tar.gz cd goaccess-1.7.1/ # 安装依赖 yum install ncurses ncurses-devel # 增加对 utf8 支持 # 增加对 geoip 数据库,支持,类型为 mmdb(geoip2) # socket server 添加 opessl 支持(ws-url) ./configure --enable-utf8 --enable-geoip=mmdb --with-openssl make make install

将安装路径添加到 $PATH 环境变量

# vim ~/.bashrc export PATH="/home/goaccess:$PATH"

这样就可以直接在命令行调用 goaccess 了

image.png

相关信息

./config 过程可能会出现缺少依赖的情况

请根据具体提示安装相应的库

# configure: error: ssl library missing sudo yum install openssl-devel # configure: error: # *** Missing development files for libmaxminddb library. sudo yum install libmaxminddb-devel # configure: error: *** Missing development libraries for ncursesw sudo yum install ncurses-devel

基本使用

配置文件常用配置

goaccess 在启动的时候也可以使用 命令参数 --param="xxx" 来补充本次运行的配置

如果是每次运行都使用相同的参数,则可以直接写在配置文件中,这样可以很方便的启动

默认配置文件路径:/etc/goaccess/goaccess.conf

# 指定了时间格式 time-format %H:%M:%S # 指定日期格式 date-format %d/%b/%Y # 日志文件的格式,与分析的日志文件格式对应。例如 access.log # 与 access.log 的 log_format 格式对应,每个参数以空格或者制表符分割 log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u" %^ %T %^ # 启用实时 HTML 输出模式 real-time-html true # 监听端口 port 7890 # 存放 goaccess html 目录 output /home/goaccess/ # https 相关 ssl-cert ssl-key ws-url

log-format 说明

  1. 如果没有改动过 Apache 或者 nginx 等的日志格式,则可以使用默认 log-format 值
  • Apache 的默认值为 COMBINED
  • nginx 的默认值为Nginx
  1. 如果自定义了日志格式,则需要自己对应填写匹配的 log-format
GoAccess日志格式变量nginx日志格式变量变量说明
%h$remote_addr主机(客户端的 IPv4 或 IPv6 地址)
%d:%t$time_local访问日期和时间(服务器本地时间)
%r$request客户端的请求路径(location)
%M$sent_http_content_type请求的资源类型(MIME-type)
%s$status服务器返回客户端的状态代码
%b$body_bytes_sent对象返回客户端的大小
%T$request_time服务器响应请求的时间(毫秒计量)
%K$ssl_protocol建立连接的 TLS 加密协议类型
%k$ssl_cipher建立连接的 TLS 加密算法类型
%R$http_referer请求标头中的来源(Referer)信息
%u$http_user_agent请求标头中的 user-agent 信息
%v$host虚拟主机名称
%e$remote_user通过 HTTP 身份认证访问网站的用户标识
%C$upstream_cache_status服务器返回对象的缓存状态

启动 goaccess

goaccess /var/log/nginx/access.log -o /home/goaccess/index.html --real-time-html --config-file=/etc/goaccess/goaccess.conf --daemonize
  • --real-time-html:启用实时 HTML 输出模式。
  • -o /home/goaccess/index.html:将报告保存到指定的 HTML 文件路径。
  • --daemonize:启用守护进程模式,在后台运行 GoAccess。

启动后

退出 goaccess

如果使用了后台运行,退出运行可以找到端口占用, kill 掉

# 这里 7890 为设置的端口 lsof -i:7890 # kill 掉程序 kill [pid]

高级使用

汉化

goaccess 默认使用系统默认语言

  1. 根据使用的系统,安装中文语言包

  2. 修改系统默认语言(可选,此处以 Centos 为例)

# 查看当前语言 echo $LANG # 查看系统支持的语言 locale -a # 修改文件中语言为 zh_CN.UTF-8 vim /etc/locale.conf # 应用语言更改 source /etc/locale.conf # 查看当前语言 echo $LANG
  1. 重新启动 goaccess

如果启动后仍然没有改变语言,可以在启动命令后增加LC_TIME=zh_CN.utf8

更详细的日志

# nginx.conf log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$sent_http_content_type $status $body_bytes_sent ' '$request_time $ssl_protocol/$ssl_cipher "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
# goaccess.conf log-format %h %^[%d:%t %^] "%r" %M %s %b %T %K/%k "%R" "%u"

反向代理

# nginx.conf location /goaccess { alias /home/goaccess/; index index.html; }

收集详细 ip 归属地区

需要地理位置功能,可以先去下个geoip数据包 https://dev.maxmind.com/geoip/geoip2/geolite2/

image.png

image.png

# goaccess.conf geoip-database /usr/share/GeoIP/GeoLite2-City.mmdb

其他

参考信息

本文作者:Silon汐冷

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!