GoAccess分析Nginx日志详解
一、为了提高 GoAccess 分析准确度,建议配置 nginx.conf 的 log_format 项如下:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$request_body"';
二、安装GoAccess
$ wget http://tar.goaccess.io/goaccess-1.2.tar.gz
$ tar -xzvf goaccess-1.2.tar.gz
#安装依赖
$ yum install GeoIP-devel
$ cd goaccess-1.2/
# --with-openssl项开启openssl,HTTPS时需要
$ ./configure --enable-utf8 --enable-geoip=legacy --with-openssl
$ make
$ make install
安装完成后,默认配置文件goaccess.conf放置于/usr/local/etc下,为了方便管理,使用mv /usr/local/etc/goaccess.conf /etc/命令将其移动到/etc目录下
对配置文件做一些主要配置:
time-format %H:%M:%S
date-format %d/%b/%Y
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
其中,log-format 与 access.log 的 log_format 格式对应,每个参数以空格或者制表符分割。参数说明如下:
%t 匹配time-format格式的时间字段
%d 匹配date-format格式的日期字段
%h host(客户端ip地址,包括ipv4和ipv6)
%r 来自客户端的请求行
%m 请求的方法
%U URL路径
%H 请求协议
%s 服务器响应的状态码
%b 服务器返回的内容大小
%R HTTP请求头的referer字段
%u 用户代理的HTTP请求报头
%D 请求所花费的时间,单位微秒
%T 请求所花费的时间,单位秒
%^ 忽略这一字段
查看 GoAccess 命令参数,如下:
$ goaccess -h
# 常用参数
-a --agent-list 启用由主机用户代理的列表。为了更快的解析,不启用该项
-d --with-output-resolver 在HTML/JSON输出中开启IP解析,会使用GeoIP来进行IP解析
-f --log-file 需要分析的日志文件路径
-p --config-file 配置文件路径
-o --output 输出格式,支持html、json、csv
-m --with-mouse 控制面板支持鼠标点击
-q --no-query-string 忽略请求的参数部分
--real-time-html 实时生成HTML报告
--daemonize 守护进程模式,--real-time-html时使用
1、控制台模式
goaccess -a /usr/local/nginx/logs/access.log -p /etc/goaccess.conf

控制台下的操作方法:
F1 主帮助页面
F5 重绘主窗口
q 退出
- 跳转到对应编号的模块位置
o 打开当前模块的详细视图
j 当前模块向下滚动
k 当前模块向上滚动
s 对模块排序
/ 在所有模块中搜索匹配
n 查找下一个出现的位置
g 移动到第一个模块顶部
G 移动到最后一个模块底部
如果不修改配置文件/etc/goaccess.conf,输入下面指令,然后选择日志文件类型也可以:
[root@host1 logs]# goaccess -f access.log

Nginx日志是属于Combined Log Format (XLF/ELF)类型的,所以我们选择第三个,用上下光标移动,空格选中,回车确定。
2、HTML模式
[root@host1 logs]# goaccess -a /usr/local/nginx/logs/access.log -p /etc/goaccess.conf -o /usr/local/nginx/html/ao-access.html

这个分析报表是通过手动执行命令生成,所以需要实现 GoAccess 自动地创建报表
3、daemonize
GoAccess 已经为我们考虑到这点了,它可以以 daemonize 模式运行,并提供创建实时 HTML 的功能,只需要在启动命令后追加--real-time-html --daemonize参数即可。
[root@host1 logs]# goaccess -a /usr/local/nginx/logs/access.log -p /etc/goaccess.conf -o /usr/local/nginx/html/ao-access.html --real-time-html --daemonize
Daemonized GoAccess:
[root@host1 logs]# netstat -anptu | grep goaccess
tcp 0.0.0.0: 0.0.0.0:* LISTEN /goaccess
以守护进程启动 GoAccess 后,使用 Websocket 建立长连接,它默认监听 7890 端口,可以通过--port参数指定端口号。
如果站点启用了 HTTPS,GoAccess 需要使用 openssl,在配置文件goaccess.conf中配置ssl-cert和ssl-key项,并确保在安装过程中 configure 时已添加--with-openssl项来支持 openssl 。当使用 HTTPS 后 Websocket 通信时也应该使用 wss 协议,需要将ws-url项配置为wss://www.domain.com。
4、生成json报告:
[root@host1 logs]# goaccess -f access.log -a -d -o json > report.json
5、生成CSV报表:
[root@host1 logs]# goaccess -f access.log -o csv > report.csv
由于nginx会自动压缩日志,以下命令可以直接分析压缩后的日志:
zcat access.log.*.gz | goaccess
#或者
zcat -f access.log* | goaccess
支持管道:
[root@host1 logs]# sed -n '/30\/May\/2018/,$p' access.log | goaccess -a
[root@host1 logs]# grep "May" access.log | goaccess -a
GoAccess分析Nginx日志详解的更多相关文章
- GoAccess 分析 Nginx 日志
0x00 事件 帮助朋友搭建了博客,运行过了一段时间,准备发个网站分析报告给他. 有效的数据只有 Nginx 的访问日志,于是使用决定 GoAccess 工具对这个日志进行分析, 0x01 安装 吾使 ...
- 23、GoAccess分析Nginx日志
1.GoAccess基本概述 GoAccess是一个基于终端的快速日志分析器.其核心思想是实时快速分析和查看Web服务器统计信息. 1.安装简单: 2.操作容易: 3.界面酷炫:  2.GoAcce ...
- 用GOACCESS分析NGINX日志
参考URL: http://4b3r.com/goaccess-analyze-nginx-access-log/64/ http://jesuspan.sinaapp.com/crontab%E6% ...
- nginx 日志详解及自定义日志配置
nginx的log日志分为access log 和 error log 其中access log 记录了哪些用户,哪些页面以及用户浏览器.ip和其他的访问信息 error log 则是记录服务器错误日 ...
- Apache/Nginx/IIS 访问日志详解
Apache日志详解 1.Apache日志文件名称及所在路径 日志文件一般都是保存在在apache/logs目录下,实际情况可以根据Apache的配置文件去查找日志文件所在的路径. 例如phpstud ...
- nginx源码分析线程池详解
nginx源码分析线程池详解 一.前言 nginx是采用多进程模型,master和worker之间主要通过pipe管道的方式进行通信,多进程的优势就在于各个进程互不影响.但是经常会有人问道,n ...
- Nginx Rewrite详解
Nginx Rewrite详解 引用链接:http://blog.cafeneko.info/2010/10/nginx_rewrite_note/ 原文如下: 在新主机的迁移过程中,最大的困难就是W ...
- 烂泥:利用awstats分析nginx日志
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 昨天把nginx的日志进行了切割,关于如何切割nginx日志,可以查看<烂泥:切割 ...
- Nginx高性能服务器安装、配置、运维 (3) —— Nginx配置详解
四.Nginx 配置详解 YUM方式安装的Nginx默认配置文件放在/etc/nginx目录下,使用Vim编辑/etc/nginx/nginx.conf: ---------------------- ...
随机推荐
- Junit打包测试
在一个项目中,只写一个测试类是不可能的,我们会写出很多很多个测试类.可是这些测试类必须一个一个的执行,也是比较麻烦的事情. 鉴于此, JUnit 为我们提供了打包测试的功能,将所有需要运行的测试类集中 ...
- 【Css】Layout布局(一)
看下图: css框模型(Box Model),也有叫做盒模型的.规定了元素框处理元素内容.内边距.边框 和 外边距 的方式. element元素,也是内容的主体: padding内边距,也右称为填充的 ...
- 带双反斜杠的Json数据至单反斜杠的Json数据处理
假如你光看标题,你只能哦呵呵了!我也看不懂.还是先描述下问题吧.这里是使用微信接口返回了一些数据.因为该串数据包含html标签所以TX是对该串数据进行了编码的.所有的数据是通过Unicode编码的,然 ...
- pointer-events属性值详解
其实早知道这个属性,但是一直没有去研究过.今天正好在twitter看到这个词,就去研究了下,正好解决了目前遇到的一个小难题,所以分享下.嗯,其实这是个比较简单的CSS3属性. 在某个项目中,很多元素需 ...
- C++ 隐含的this 指针
c++primer 页数:376-379 备份, 很有嚼头 #include <iostream> #include <string> #include <fstre ...
- FileReader实现上传图片前本地预览
平时做图片上传预览时如果没有特殊的要求就直接先把图片传到后台去,成功之后拿到URL再渲染到页面上.或者使用前端插件.这篇博客使用的是HTML5的新特性——FileReader.由于兼容性,这种方法不适 ...
- Firebird 列可空非空修改
2018-12-04 至少到Firebird 3.0.4 已经添加了设置可空 和 非空的语法:如 -- 删除非空(设置为可空) ALTER TABLE TECH ALTER label drop NO ...
- BDD框架之Cucumber研究
BDD框架之Cucumber研究 引用链接:http://kongqingyun123.blog.163.com/blog/static/6377283520134158437813/ Cucumbe ...
- [javaEE] tomcat内部连接池
在META-INF的目录下,新建context.xml 在程序中获取数据源,通过jndi,这个jndi必须在Servlet中才能获取,并且需要配置web.xml使servlet一启动就拿到数据源 co ...
- openJDK的下载
http://jdk7.java.net/source.html # 失效 http://download.java.net/openjdk/jdk7 # 无效,点击文件下载跳转错误页面 http:/ ...