GoAccess 是一个开源的实时 Web 日志分析工具,它能够将 Web 服务器的访问日志转换成易于阅读的报告和交互式仪表板。
注意
不是所有发行版都提供最新的 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 了
相关信息
./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
COMBINED
Nginx
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 /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。启动后
如果使用了后台运行,退出运行可以找到端口占用, kill 掉
# 这里 7890 为设置的端口 lsof -i:7890 # kill 掉程序 kill [pid]
goaccess 默认使用系统默认语言
根据使用的系统,安装中文语言包
修改系统默认语言(可选,此处以 Centos 为例)
# 查看当前语言 echo $LANG # 查看系统支持的语言 locale -a # 修改文件中语言为 zh_CN.UTF-8 vim /etc/locale.conf # 应用语言更改 source /etc/locale.conf # 查看当前语言 echo $LANG
如果启动后仍然没有改变语言,可以在启动命令后增加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; }
需要地理位置功能,可以先去下个geoip数据包 https://dev.maxmind.com/geoip/geoip2/geolite2/
# goaccess.conf geoip-database /usr/share/GeoIP/GeoLite2-City.mmdb
本文作者:Silon汐冷
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!