goaccess分析nginx日志

最近想用goaccess来分析下nginx日志,但是苦于nginx日志配置格式不是按照正常格式来的,完全是我们按照自己的需求来写的,所以导致goaccess分析不了,需要自己重新定义下格式;但是网上虽然介绍goaccess的很多,但是大多都是就重避轻,将格式的自定义忽略掉,因此我就来把自定义这块说下,希望能够帮助到大家。

首先附上goaccess的官方使用说明及参数介绍,直接安装官方文档来配置才最省事。

http://goaccess.io/manual.php#synopsis

1.安装

yum install glib2 glib2-devel GeoIP-devel  ncurses-devel

下载源码文件goaccess-0.7.1.tar.gz并编译安装

cd /usr/local/src

tar -zxvf goaccess-0.7.1.tar.gz

cd /usr/local/src/goaccess-0.7.1

./configure –enalbe-geoip –enable-utf8

make && make install

2.下面我们就可以直接使用了

goaccess -f access.20141215-17.log -H -M -a

输入命令后,会出现一个提示框,如下:

我们只需要选定适合nginx日志的第三行的格式,选定后“Log Format”会有相应的日志格式出现,我们只需在此基础上编辑或重新按照我们日志的格式来重新定义即可;而日志格式就直接用“Date Format”中定义的即可,下面我用我的nginx日志格式为例来具体介绍下。

nginx日志格式:

log_format main ‘$time_local - $upstream_addr $server_addr:$server_port ‘

‘$request_method $uri $args ‘

‘- $remote_addr $server_protocol [$http_user_agent] [$http_cookie] $http_referer ‘

‘$host $status 0 0 $bytes_sent $request_length 0‘

‘"$upstream_cache_status"‘;

nginx日志内容为:

10/Dec/2014:16:54:59 +0800 - - 192.168.3.124:80 GET /1.html - - 192.168.3.123 HTTP/1.0 [ApacheBench/2.3] [-] - 192.168.3.124 200 0 0 235 87 0 "-"

我自定义的“Log Format”为:

%d:%^:%^:%^ %^ %^ %^ %^:%^ %m %r %^ %^ %h %H [%u] [%^] %R %^ %s %^ %^ %^ %^ %^ "%^"

其中 %^为忽略此字段

%d为年月日

(1)%d为调用“Date Format”中设定的日期格式,10/Dec/2014

%d:%^:%^:%^对应日志中 10/Dec/2014:16:54:59

%d:%^:%^:%^ %^对应日志中 10/Dec/2014:16:54:59 +0800,也就是配置文件中的$time_local字段

(2)所有的 - 用%^,表示忽略此字段,下面就不再重复

$upstream_addr用%^,表示忽略此字段

$server_addr:$server_port用%^:%^,表示忽略这两个字段,注意保留配置文件中的冒号“:”

(3) GET 用%m,表示$request_method,也就是get,post,head等方法

(4) /1.html用%r,表示$uri 请求的内容

(5) $args用%^,表示忽略此字段

(6)192.168.3.123 用%h,表示$remote_addr 客户端ip地址

(7)HTTP/1.0 用%H,表示$server_protocol

(8) [ApacheBench/2.3]用[%u] ,表示[$http_user_agent] ,注意保留配置文件中的[ ]

(9)[$http_cookie],用[%^],表示忽略此字段,注意保留配置文件中的[ ]

(10)-用%R,表示$http_referer,虽然内容为空,但不能用%^忽略掉字段

(11)200用%s,表示$status,状态码为200

(12)后面的字段全都忽略,用%^,注意有几个字段就用几个%^,注意保留配置文件中的“ ”

上面也就是$time_local字段需要特别注意下,少一段字段就可能导致goaccess分析出的日志有很大区别,例如我少字段后导致无法分析文件和分析出的文件中“Failed Requests 233390” 和总共的请求数差不多,影响我们分析。

设置完毕后,我们就可以回车,让goaccess正常工作了:

快捷键说明:

数字1-9依次对应1-9个模块

0表示第10个模块

shift+1 表示第11个模块

选定模块后,“o”键可以进入模块,查看详细内容

j和k键是在进入模块后,上下选择具体的行

q键退出当前模块和goaccess

好了,就让我们来根据自己的日志格式来查看吧。如有不清楚的参数,直接查看官网文档说明。

时间: 2024-10-14 19:05:54

goaccess分析nginx日志的相关文章

使用GoAccess分析Nginx日志以及sed/awk手动分析实践

前言 使用Nginx的网站可能会遇到访问流量异常.被友情检测.程序出现Bug等各种突然情况,这时大家的反应想必都是第一时间分析日志,然后发现日志有几十GB之多,又需要按照时间.错误类型或者关键字段检索信息时会不会有种醍醐灌顶.菊花一紧的错觉.文中介绍的方法不管是GoAccess还是sed/awk虽然可以解决一时的问题但未必能够治本,也许ELK(Logstash+ElasticSearch+Kibana)对我们大多数人来说是更合理的集中化日志管理解决方案. 日志固然重要,但努力建设适合业务发展的集

goaccess 分析nginx日志例子

格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; 日志 127.0.0.1 - - [25/Sep/2018:12:02:10 +0800] &quo

在Linux中使用GoAccess分析Nginx的日志

一 GoAccess简介 GoAccess是一款日志分析工具,可以用来分析Apache,IIS,Nginx的日志,或者一些其他web服务的日志.其特点是安装简单,使用方便,分析速度快 二 GoAccess的安装 (1)下载: [[email protected] src]# wget http://sourceforge.net/projects/goaccess/files/0.7.1/goaccess-0.7.1.tar.gz (2)安装依赖的库文件: [[email protected] 

用GoAccess分析Nginx的日志

GoAccess是什么? GoAccess是一款开源.实时,运行在命令行终端下的web日志分析工具.该工具提供快速.多样的HTTP状态统计,可以令管理员不再纠结于统计各类数据和繁杂的指令以及一大堆管道/正则表达式. GoAccess功能一览 生成统计数据,带宽统计等 每个请求的时间统计 最高访问ip 请求的文件统计 请求的静态文件.图片.flash.js文件等 各HTTP状态码统计 Hosts,反向DNS,IP所在地 操作系统 浏览器/蜘蛛 引用的网站 引用的URLs 关键词组 地理位置 (大陆

shell脚本分析nginx日志

第一版,比较粗糙,仅限于能用 正在写入的文件不能用tar进行压缩 --------压缩日志---------------------- 94 access.log 95 tar: access.log: file changed as we read it 96 #### 压缩日志失败 #### #!/bin/sh #分析nginx日志 DATE=`date '+%Y%m%d-%H%M'` ARCHIVE=/usr/log_bak/nginx_$DATE.tar.gz MESSAGE=/usr/

awstats分析nginx日志文件

awstats分析nginx日志文件,将生成的结果(为txt文件)保存在/var/www/awstats目录下,通过apche来 显示生成的结果. nginx的域名为:www.a.com:80 LogFile="/usr/local/mybin/nginx/logs/access.log"  #nginx的日志文件路径 DirData="/var/www/awstats/" #awstats生成结果的保存路径 SiteDomain="www.a.com&q

烂泥:利用awstats分析nginx日志

昨天把nginx的日志进行了切割,关于如何切割nginx日志,可以查看<烂泥:切割nginx日志>这篇文章. 今天打算分析下nginx日志,要分析nginx日志,我们可以通过shell脚本和第三方软件awstats进行分析,在此我们选择的是通过第三方软件awstats进行分析. 要使用awstats分析nginx日志,我们要安装awstats,而在安装awstats之前,我们需要先来介绍下awstats是什么? 一.awstats是什么 awstats是一个免费非常简洁而且强大有个性的基于Pe

python分析nginx日志

问题:分析nginx日志并找出访问最多10个IP地址的来源以及次数 使用python模块IP 使用方法以及下载地址:https://pypi.python.org/pypi/17MonIP 相关python脚本: #!/usr/bin/env python #coding:utf8 #Auth: lad #date:2016-12-05 #desc:parser the nginx's log,the head of 10  import sys reload(sys) sys.setdefau

python 正则分析nginx日志

有个需求要分析nginx日志,也懒得去研究logstach之类的开源工具,干脆直接写一个脚本,自己根据需求来实现: 先看日志格式:我们跟别人的不太一样,所以没办法了: 12.195.166.35 [10/May/2015:14:38:09 +0800] "list.xxxx.com" "GET /new/10:00/9.html?cat=0,0&sort=price_asc HTTP/1.0" 200 42164 "http://list.zhon