Nginx日志分析工具:GoAccess使用详解。

GoAccess是一个基于终端的快速日志分析器。其核心思想是实时快速分析和查看Web服务器统计信息,支持命令行及web页面输出,终端输出是默认输出,但它能够生成完整的,独立的实时 HTML报告(非常适合分析,监控和数据可视化),以及a JSON和CSV报告。

  • 所有面板和指标都定时在终端输出上每200毫秒更新一次,在HTML输出上每秒更新一次;
  • GoAccess允许任何自定义日志格式字符串。预定义选项包括Apache,Nginx,Amazon S3,Elastic Load Balancing,CloudFront等;
  • 跟踪提供请求所需的时间。如果您想跟踪减慢网站速度的网页,则非常有用;
  • 数据持久性强,GoAccess能够通过磁盘上的B + Tree数据库逐步处理日志;
  • GoAccess是用C语言编写的,要运行它,你只需要将ncurses作为依赖项,它甚至还具有自己的RFC6455兼容Web Socket服务器;
  • 您可以针对访问日志文件运行它,选择日志格式并让GoAccess解析访问日志并显示统计信息;
  • 按小时或日期确定最慢运行请求的匹配数,访问者数,带宽数和指标数;
  • 多个虚拟主机,一个面板,显示哪个虚拟主机正在消耗大部分Web服务器资源;
  • 定制GoAccess以适合您自己的色彩品味。通过终端,或者只是更新HTML输出上的样式表。

部署方案:源码安装,

1、yum安装依赖包:
yum install glib2 glib2-devel GeoIP-devel ncurses-devel zlib zlib-devel
yum install gcc -y(如已安装此包,可选执行步骤)
rpm -Uvh https://dl.Fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm(可选执行步骤)
yum -y install GeoIP-update(可选执行步骤)

2、下载goaccess源码包,并解压编译安装:
wget https://tar.goaccess.io/goaccess-1.2.tar.gz
tar xzvf goaccess-1.2.tar.gz
cd goaccess-1.2/

./configure --enable-geoip --enable-utf8

make && make install

注:configure配置时,可能会报错:

configure: error: png library not found.. please install libpng

configure: error: gd library not found.. please install libgd

解决办法:

yum install libpng libpng-devel

yum -y install gd gd-devel

如果没有交叉编译器的话需要:yum  install  gcc-c++  libstdc++-devel  -y

3、修改/etc/nginx/nginx.conf文件的日志存储格式:
log_format main 
'$remote_addr - $remote_user [$time_local] "$request" '           

           '$status $body_bytes_sent "$http_referer" '

         '"$http_user_agent" "$http_x_forwarded_for" '

         '$connection $upstream_addr '

         '$upstream_response_time $request_time';

4、修改文件/usr/local/etc/goaccess/goaccess.conf改成goaccess格式标准对应为:

(注:goaccess时间格式必须与nginx日志格式相同,否则执行goaccess日志分析命令会报错)
time-format %T
date-format %d/%b/%Y
log-format 
%h - %^ [%d:%t %^] "%r" %s %b "%R" "%u" "%^" %^ %^ %^ %T

注解:

%h:客户端ip地址,%^:忽略此字段,%d:date字段匹配日期格式变量,%t:time字段匹配时间格式变量,%r:客户端的请求行,%s:服务器发送回客户端的状态码,

%b:返回给客户端的对象的大小,%R:“Referer”HTTP请求标头,%u:用户代理HTTP请求标头,%T:以毫秒级分辨率提供服务所需的时间(秒),%U:请求的URL路径,~h:X-Forwarded-For(XFF)字段中的主机(客户端IP地址,IPv4或IPv6)。 

5、后台实时生成数据到goaccess页面:

/usr/local/bin/goaccess -f /var/log/nginx/access.log -o /usr/share/nginx/html/index.html -p /usr/local/etc/goaccess/goaccess.conf --real-time-html &

###nohup ./goaccess -f access.log -p /opt/goaccess/nginxlog.conf -o day-report.html --real-time-html --ws-url=report.xxx.com &    

--ws-url=report.xxx.com           #绑定一个域名

 6、修改nginx配置文件,

  location  /  {

          root /opt/share/nginx/html;                       #指定静态文件路径为上述goaccess生成html路径
          }

补充:

goaccess 1.3版本后支持中文页面,如何让goaccess的dashboard界面显示中文?

1、修改goaccess所在服务器的系统语言为中文,

#vi /etc/sysconfig/i18n

SYSFONT="latarcyrheb-sun16"       #系统字体格式
LANG="zh_CN.UTF-8"

#source /etc/sysconfig/i18n

2、制定crontab计划任务,周期性生成html文件,同时把中文输出放在shell脚本里,但此方法会有问题,会造成web页面间断性无法访问,

LANG="zh_CN.UTF-8"
/usr/local/bin/goaccess -f /usr/local/nginx-1.9.6/logs/access.log -o /opt/share/nginx/html/index.html --real-time-html -p /usr/local/etc/goaccess/goaccess.conf

过一会再刷新得到中文页面,如下图所示:

 

转载于:https://www.cnblogs.com/cxq20190307/p/10716734.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值