首页 > 应用开发 > Java > GoAccess 开源日志轻工具部署与分析
1 前言
今天给大家介绍一款开源轻量化的日志分析神器,名叫 GoAccess。它是一款基本终端的快速日志分析工具,核心功能是能够实时快速分析和查看 Web 服务器统计信息,最主要是针对中间件 ACCESS 访问日志来分析系统的行为。而无需使用您的浏览器,但它能够生成完整的,独立的实时 HTML 报告(非常适合分析,监控和数据可视化)以及 a JSON 和 CSV 报告。这款工具能对大日志量文件进行分析,降低工程师分析日志的难度,提升问题定位效率。
2 GoAccess 介绍
GoAccess 是一个开源的实时网络日志分析器和交互式查看器,可以在Linux/Unix 系统中的终端或通过浏览器运行。它为需要动态可视化服务器报告的系统管理员提供快速且有价值的 HTTP 统计信息。
3 GoAccess 功能
快速, 实时, 毫秒/秒级更新, C 语言编写
仅依赖 ncurses 模块
几乎支持所有 Web 日志 格式 (Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, 等等)
简单设置即可支持自定义格式日志
漂亮的终端以及 bootstrap 风格控制面板 (易于将 GoAccess 调整为您自己的颜色搭配和风格)
支持 Valgrind 测试
4 GoAccess 指标
GoAccess 解析指定的 Web 日志文件并将统计结果输出到 X 终端。功能如下:

5 GoAccess工具安装
5.1 软件安装
1、 部署依赖包
GoAccess 软件安装需要依赖一些软件包,需要提前将下面的软件包安装好。
|
yum install glib2 glib2-devel GeoIP-devel ncurses-devel zlib zlib-devel yum install gcc –y yum -y install GeoIP-update |
2、 源码安装GoAccess
这里使用源码安装 GoAccess 软件,软件官方下载地址 https://goaccess.io/download ,这里以 1.3 版本为例来安装。
|
wget https://tar.goaccess.io/goaccess-1.3.tar.gz tar xzvf goaccess-1.3.tar.gz cd goaccess-1.3/ ./configure --enable-utf8 --enable-geoip=legacy make make install |
3、
GoAccess
配置变更
|
修改配置 /usr/local/etc/goaccess/goaccess.conf 文件 并将以下配置项的注释符去掉 date-format %d/%b/%Y time-format %H:%M:%S html-report-title date-spec hr
面板使用如下几个面板,将将以下几个面板的注释符去掉 ignore-panel REQUESTS_STATIC ignore-panel NOT_FOUND ignore-panel OS ignore-panel VIRTUAL_HOSTS ignore-panel KEYPHRASES ignore-panel GEO_LOCATION
在配置文件中新增日志模式标准 log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u" "%T" "%e" |
以上GoAccess算是安装完成……………………………………………..
为了使用 GOACCESS 工具监控应用的性能情况,对使用的应用 nginx 或 tomcat 中间件服务的日志输出进行标准化设置。
|
# 修改 /etc/nginx/nginx.conf 文件的日志存储格式 log_format main '$remote_addr - $remote_user [$time_local] requesthost:"$http_host"; "$request" requesttime:"$request_time"; ' '$status $body_bytes_sent "$http_referer" - $request_body' '"$http_user_agent" "$http_x_forwarded_for"'; 然后重启 nginx 服务 |
最终日志输出格式标准内容如下
安装与配置准备工作都已经完成后,接下来需要对报告进行实时呈现分析,采用定时脚本方式将对被监控服务日志进行实时更新分析并生成 html 报告。
|
/usr/local/bin/goaccess /opt/nginx/logs/access.log -o /usr/local/nginx/html/monitor.html -p /usr/local/etc/goaccess/goaccess.conf --real-time-html --daemonize |
Nginx 日志文件按天自动生成
|
#!/bin/bash log_files_path="/usr/local/nginx/logs/" log_files_dir=${log_files_path} log_files_name=(access ) nginx_sbin="/usr/local/nginx/sbin/nginx" save_days=30 log_files_num=${#log_files_name[@]} for((i=0;i<$log_files_num;i++));do mv ${log_files_path}${log_files_name[i]}.log ${log_files_dir}${log_files_name[i]}.log_$(date -d "yesterday" +"%Y-%m-%d") done find $log_files_path -mtime +$save_days -name "*.log" -exec rm -rf {} \; $nginx_sbin -s reload ps -ef|grep goaccess |grep -v grep |awk '{print $2}'|xargs kill -9 /usr/local/bin/goaccess /usr/local/nginx/logs/access.log -o /opt/nginx/html/devopsrpt.html -p /usr/local/etc/goaccess/goaccess.conf --real-time-html –daemonize
00 00 * * * /opt/logmonitor /cut_nginx_logs.sh |
为了能让浏览器能实时的访问日志分析结果,需要配置一个 nginx 来访问这个静态 html 页面。
|
#nginx 源码安装 useradd -s /sbin/nologin -M nginx Wget http://nginx.org/download/nginx-1.13.6.tar.gz ./configure --prefix=/opt/nginx --user=nginx --group=nginx --without-http_gzip_module make && make install 修改配置文件 /opt/nginx/conf/nginx.conf 新增配置如下 location / { root /opt/nginx/html/; expires 30d; } |
5.4 GoAccess 报告分析
1 、以下是采用GoAccess分析工具对nginx中间件应用日志分析结果如下:
2
、日志分析结果报告概览信息

3 、每日独立访问客
每日的访问量与每日访客数

4、URL 请求文件
显示了访问量最大的 URL ,这对于合理调整网站结构很有帮助。同时能分析到哪些 URL 文件平均响应时间最长,性能最差。

5 、访客主机名和 IP 地址
显示访问的 IP ,有时候如果某个 IP 异常飚高是需要注意的

6 、浏览器
通过浏览器报告可以分析哪些用户使用的浏览器频率最高,体验最好的浏览器。

7 、 HTTP 状态码
对 HTTP 的状态码 200 , 302 , 404 , 500 进行聚合统计, 404 页面不友好,如果 500 太多说明服务器性能很慢,需要优化改进。

有需要的朋友可以关注我的公众号,文章每日一更
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28833846/viewspace-2724921/ ,如需转载,请注明出处,否则将追究法律责任。