GoAccess(https://GoAccess.io/) 是一个日志分析工具,并不只是为nginx
使用的。你也可以用它来分析apache
,IIS
的日志,甚至你自己写的web
服务,当然前提是你需要定义好解析的日志格式。
诚如见到一个美女,你会一眼喜欢上它的几个功能有:
- 1、解析速度快
- 2、使用简单
- 3、能生成
html
,json
,csv
利用 crontab
让 GoAccess
定时自动生成日志分析报告
本来明月在 Debian Linux
下使用的参照【Nginx日志分析/图表生成工具 - goaccess】一文使用很正常的,加入 crontab
里的定时任务也可以正常的运行,但是自从下载安装最新版的 GoAccess 1.2
版以后, crontab
定时任务里总是运行失败。真是百思不得其解呀!
在查阅了众多文章后尝试各种奇葩的 crontab
定时任务的写法以及看了 GoAccess for GitHub
上的众多 issue
后,终于让我总结出正确的 crontab
定时任务的写法了,并且在 Centos 7.2
下测试成功。具体的 crontab
定时任务的写法如下:
00 00 * * * /usr/local/bin/goaccess -f /home/wwwlogs/access.log -p /root/goaccess-1.2/.goaccessrc -a > /html/access.html
其中的 -p /root/goaccess-1.2/.goaccessrc
好像是 GoAccess 1.2
特有的用来指定日志格式配置文档,具体内容如下:
time-format %T date-format %d/%b/%Y log-format %h %^[%d:%t %^] "%r" %s
%b "%R" "%u"
只需要 vim .goaccessrc
编辑保存即可,记得保存的路径一定要写对了。
至此既可以定时每天凌晨00分自动生成指定日志的日志分析报告了。
这也算是我自己的一次学习笔记了,还是很有收获的。下面附赠GoAccess
的一些相关参数等,就当是笔记了。
控制台使用GoAccess
F1
主帮助页面F5
重绘主窗口q
退出程序或者当前{详细视图}(窗口)o
打开当前激活模块的详细视图c
设置或改变配色方案TAB
向前迭代模块。从当前激活模块开始。SHIFT + TAB
向后迭代模块。从当前激活模块开始。RIGHT ARROW
打开当前激活模块的详细视图0-9
激活模块,这样用户就可以使用^o^
或^RIGHT ARROW^
打开{详细视图}SHIFT + 0-9
激活超过10
的模块s
根据日期进行独立访客排序。仅在独立访客模块(1)有效。S
根据点击数进行独立访客排序。仅在独立访客模块(1)有效。/
向前在任意{详细视图}窗口搜索输入模式(pattern)。n
在任意{详细视图}窗口中找到下一次出现的位置。t
跳到第一个条目或屏幕顶端b
跳到最后一个条目或者屏幕底部
启动参数介绍
-b
流量消耗统计,如果想要提高解析速度,不要开启这个选项。缺省值为不开启此选项-f
日志文件路径。-s
HTTP
状态码报告,为了能够更好的解析日志,选项被默认关闭。-e
指定IP
地址的访问统计。-a
通过代理的请求统计。-d --with-output-resolver
在HTML
输出或者json
输出中开启IP
解析,如果开启了-d
,GoAccess
就会使用GEOIP
来进行IP
解析。-e --exclude-ip=<ip address>
Host
模块中不需要被统计的IP
,比如可以将爬虫的IP
过滤掉-h --help
帮助文档-H --http-protocol
显示的时候是否带上HTTP
协议信息-m --with-mouse
控制面板开启支持鼠标点击,带上了m
之后,双击鼠标就相当于回车的操作-M --http-method
是否带上HTTP方法信息-o --output-format=csv|json
输出为csv
或者json
形式-p --conf-file=<filename>
指定配置文件,如果你有配置文件,配置文件中又恰巧设置了log-format
和date
,那么你就不会被强制进入到format
对话框了。如果你没有设置的话,默认使用~/.goacessrc
。-q --no-query-string
忽略请求的参数部分-r --no-term-resolver
在Host
模块中是否进行IP的解析。加上-r
是禁止IP
解析。--no-color
输出无颜色标示--real-os
展示真实的操作系统。在Operation System
模块中,是否展示更详细的操作系统信息。
8 条评论
我也装的是goaccess1.2 命令行可以执行,拿到cron里怎么都执行不了。
!/bin/bashroot@xin:/home/tools# cat goaccess.sh
Dir=/home/access_log
goaccess=/usr/bin/goaccess
goaccess_conf=/etc/goaccess.conf
cd $Dir
cat access_$(date +"%Y%m%d")* | $goaccess -p $goaccess_conf -a > /home/docker/nginx/yixiuku/public/report.html
我是用apt-get安装的goaccess。没有.goaccessrc这个文件,是在goaccess.conf配置的。
求解。。这个小东西已经折磨我好几天了OωO
我文中的crontab 里的代码是参考goAccess官网的文档的,目前我的是正常的!你这个代码我感觉会存在找不到Goaccess执行程序和环境变量的问题!还有我使用的是GoAccess官网的最新版本,系统自带的源里不建议用!
不好意思,首行少复制了一个#
你可以通过查阅crontab 定时任务执行日志来看看问题出在哪里了!无非是变量、参数缺失的问题而已!
最近更新少了,好像。。然后以前的文章丢了太可惜了。
是呀,最近更新确实是慢了很多,主要是现在都折腾的差不多了,再折腾就太复杂了,所以进展就慢了!
文章丢失确实很可惜,不过,毕竟刚开始不久嘛!
ヾ(≧∇≦*)ゝ期待你将以前的文章补回来,哈哈!
这个估计不可能了!只能是随着我的折腾需求来更新了!呵呵!OωO