浏览文章

文章信息

Nginx 日志分析工具GoAccess 10798

1、安装依赖

yum -y install glib2 glib2-devel ncurses ncurses-devel GeoIP-devel.x86_64 tokyocabinet-devel openssl-devel

2、安装主程序

wget http://tar.goaccess.io/goaccess-1.2.tar.gz

tar -zvxf ./goaccess-1.2.tar.gz

cd ./goaccess-1.2

./configure --enable-utf8 --enable-geoip=legacy

make

make install

ln /usr/local/bin/goaccess /usr/bin/

安装完成后,相关目录:

可执行程序:/usr/local/bin/goaccess

配置文件:/usr/local/etc/goaccess.conf

其它文件:/usr/local/share/doc/goaccess

手册:/usr/local/share/man/man1

自定议日志/日期格式

3.1使用方式

3.1.1最简单且最快速的用法:

# goaccess access.log
 

3.1.2生成一个HTML报告:

# goaccess access.log -a -o report.html
 

3.1.3生成一个JSON报告:

# goaccess access.log -a -d -o report.json
 

3.1.4生成一个CSV报告:

# goaccess access.log --no-csv-summary -o report.csv
 

 

 

3.1.5如果我们想为GoAccess增加更多的灵活性,可以使用一系列的管道。例如:

另一个有用的管道是根据日期过滤web日志。

如下命令将得到日志文件中2017年07月31日的所有HTTP请求:

# sed -n '/31\/Jul\/2017/,$ p' access.log | goaccess -a

如果想仅解析从日期a到日期b的一个特定时限的日志,则可以:

# sed -n '/30\/Jul\/2017,/31\/Jul\/2017/ p' access.log | goaccess -a

注意这一命令依赖于sed的速度,可能需要更长的解析时间。

另外,值得指出,如果想以更低的进程调度优先级运行GoAccess,可以这样执行:

# nice -n 19 goaccess -f access.log -a

3.1.6实时HTML输出

# goaccess access.log -o /usr/share/nginx/html/site/report.html --real-time-html
或者,对于Httpd:
# goaccess access.log -o /usr/www/html/report.html --real-time-html

 

默认情况下,GoAccess监听端口是7890,您可以通过—port=xxx修改端口。

# goaccess access.log -o report.html --real-time-html --port=xxx

 

3.2 交互式菜单

  • F1 主帮助页面
  • F5 重绘主窗口
  • q 退出程序或者当前{详细视图}(窗口)
  • 打开当前激活模块的详细视图
  • c 设置或改变配色方案
  • TAB 向前迭代模块。从当前激活模块开始。
  • SHIFT + TAB 向后迭代模块。从当前激活模块开始。
  • RIGHT ARROW 打开当前激活模块的详细视图
  • 0-9 激活模块,这样用户就可以使用^o^或^RIGHT ARROW^打开{详细视图}
  • SHIFT + 0-9 激活超过10的模块
  • s 根据日期进行独立访客排序。仅在独立访客模块(1)有效。
  • S 根据点击数进行独立访客排序。仅在独立访客模块(1)有效。
  • / 向前在任意{详细视图}窗口搜索输入模式(pattern)。
  • n 在任意{详细视图}窗口中找到下一次出现的位置。
  • t 跳到第一个条目或屏幕顶端
  • b 跳到最后一个条目或者屏幕底部

 

 

3.3 日期格式(date_format)

空格之后的date_format变量指定了包含常规字符和特殊格式说明符的任意组合。这些字符都以百分号(%)开始。详见:man strftime

  • %a    星期几的简写形式
  • %A   星期几的全称
  • %b   月份的简写形式
  • %B   月份的全称
  • %c    日期和时间
  • %d   月份中的日期,0-31
  • %H   小时,00-23
  • %I     12进制小时钟点,01-12
  • %j     年份中的日期,001-366
  • %m  年份中的月份,01-12
  • %M  分,00-59
  • %p   上午或下午
  • %S    秒,00-60
  • %u   星期几,1-7
  • %w   星期几,0-6
  • %x    当地格式的日期
  • %X   当地格式的时间
  • %y    年份中的最后两位数,00-99
  • %Y   年
  • %Z   地理时区名称

3.4 日志格式(log_format)

日志格式(log_format)

空格之后的date_format变量指定了日志格式字符串。

  • %x 与时间格式和日期格式变量匹配的日期和时间字段。当使用时间戳而不是日期和时间在两个单独的变量中时使用这个。
  • %t 时间字段匹配time_format变量。
  • %d 匹配date_format变量的日期域。
  • %D 服务请求所用的时间,以微秒为单位。
  • %e 这是通过HTTP认证确定请求文档的人的用户ID。
  • %h 主机(客户端IP地址,IPv4或IPv6)。
  • %r 来自客户端的请求行。这需要围绕请求的特定分隔符(单引号,双引号等)可解析。否则,请使用特殊格式说明符(如%m,%U,%q和%H)的组合来解析各个字段。
  • %m 请求方式。
  • %U请求的URL路径。
  • %q查询字符串。
  • %H请求协议。
  • %s 服务器返回给客户端的状态码。
  • %b 返回给客户端的对象大小。
  • %R RefererHTTP请求头。
  • %u 用户代理HTTP请求头。
  • %^ 忽略该域。
  • %T 服务请求所需的时间,以秒为单位,以毫秒为单位。
  • %L 服务请求所需的时间,以毫秒为单位,为十进制数。
  • %~ 向前移动日志字符串,直到找到一个非空格(!isspace)字符
  • ~h X-Forwarded-For(XFF)字段中的主机(客户端IP地址,IPv4或IPv6)。


原创