查看原文
其他

GoAccess——开源日志分析利器

老李头 运维研习社 2022-11-05

Goaccess是一款开源、实时运行在命令端下的web日志分析工具,该工具可以提供快速、多样的HTTP状态统计,结果分析,领略过goaccess之后,再也不用sed、awk命令分析日志了。

安装

安装依赖包

  • yum groupinstall 'Development Tools'

  • yum install glib2 glib2-devel ncurses-devel

  • yum install GeoIP GeoIP-devel GeoIP-data

安装GoAccess

  • $ wget http://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

或者从git下载

  • $ git clone https://github.com/allinurl/goaccess.git

  • $ cd goaccess

  • $ autoreconf -fi

  • $ ./configure --enable-geoip --enable-utf8

  • $ make

  • make install

编译安装的配置选项:

  • --enable-debug

  • 编译调试符号并关闭编译器优化。

  • --enable-utf8

  • 编辑广泛的字符支持。需要Ncursesw

  • --enable-geoip=<legacy|mmdb>

  • 编译GeoLocation支持。MaxMind的GeoIP是必需的。legacy将利用原始的GeoIP数据库。mmdb将利用增强型GeoIP2数据库。

  • --enable-tcb=<memhash|btree>

  • 编译与东京橱柜存储支持。memhash将利用东京内阁哈希数据库。btree将利用东京内阁的磁盘B +树数据库。

  • --disable-zlib

  • 禁用B + Tree数据库上的zlib压缩。

  • --disable-bzip

  • 禁用B + Tree数据库上的bzip2压缩。

  • --with-getline

  • 动态扩展行缓冲区,以解析全行请求,而不是使用4096的固定大小的缓冲区。

  • --with-openssl

  • 使用OpenSSL对WebSocket服务器编译GoAccess。

使用

使用GoAccess分析日志时,只需要指定要分析的日志文件即可。這里用apache的日志做分析。

goaccess -f /var/log/httpd/access_log

启动之后,你将会看到如下的屏幕输出,需要你选择日期及日志格式,按空格键进行选择,上下键切换,回车或者F10确认。

确认之后就开始读取分析日志,读取过程中有进度显示

读取完成后展示日志分析结果如下:

GoAccess分析日志输出默认有十几项内容,按向下的箭头滚动页面查看。

1、每天唯一访客(来自同样IP、同一日期和同一浏览器的请求)

2、请求的文件

3、请求的静态文件

4、HTTP 404 URL

5、主机地址(客户端IP地址)

6、访客操作系统

7、访客浏览器

8、引荐网址(访问入口)

9、HTTP 状态代码

10、客户端地域

其他使用方法:

1、生成HTML报告:

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

2、生成JSON报告:

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

3、生成CSV文件:

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

4、实时过滤和解析

  • tail -f access.log | goaccess -

5、同时保持打开的管道保持实时分析过滤,利用尾-f和匹配模式工具如grep,awk,sed,等:

  • tail -f access.log | grep -i -line-buffered'firefox'| goaccess --log-format =COMBINED -

6、从文件的开始解析,同时保持管道打开并应用过滤器

  • tail -f -n +0 access.log | grep --line-buffered'Firefox'| goaccess -o out.html - real-time-html -

7、多个日志文件

  • goaccess access.log access.log.1

8、在阅读常规文件时从管道中解析文件:

  • cat access.log.2 | goaccess access.log access.log.1 -

注意:单个破折号将附加到命令行以让GoAccess知道它应该从管道读取。

9、处理access.log.*.gz除当前日志文件之外的所有压缩日志文件

  • zcat access.log。*。gz | goaccess access.log -

10、实时HTML输出

  • goaccess access.log -o /usr/share/nginx/html/site/report.html - real-time-html

11、默认情况下,GoAccess将使用生成的报告的主机名。可以指定客户端浏览器连接到的URL

  • goaccess access.log -o report.html - real-time-html --ws-url = goaccess.io

12、默认情况下,GoAccess侦听端口7890,使用7890以外的其他端口,可以将其指定为(确保端口已打开):

  • goaccess access.log -o report.html - real-time-html --port = 9870

13、将WebSocket服务器绑定到0.0.0.0以外的其他地址,可以将其指定为:

  • goaccess access.log -o report.html --real-time-html --addr = 127.0.0.1

14、从日志中过滤日期,从05/Dec/2017文件开始直到所有HTTP请求开始。

  • sed -n'/ 05 \ / Dec \ / 2017 /,$ p'access.log | goaccess -a -

15、使用相对日期,如昨天或明天:

  • sed -n'/'$(date'+%d \ /%b \ /%Y' -d '1 week ago')'/,$ p'access.log | goaccess -a -

16、如果我们只想从DATE a到DATE b解析一段时间,我们可以做:

  • sed -n '/5\/Nov\/2017/,/5\/Dec\/2017/ p' access.log | goaccess -a -

17、假设您的日志包含虚拟主机字段。例如:

vhost.com:80 10.131.40.139 - - [02 / Mar / 2017:08:14:04 -0600]“GET / shop / bag-p-20 HTTP / 1.1”200 6715“ - ”“Apache )”

并且您想要将虚拟主机附加到请求中,以查看顶级URL属于哪个虚拟主机

  • awk'$ 8 = $ 1 $ 8'access.log | goaccess -a -

18、要排除虚拟主机列表,您可以执行以下操作:

  • grep -v“`cat exclude_vhost_list_file`”vhost_access.log | goaccess -

19、文件和状态码

解析请求中的特定页面,例如页面浏览,html,htm,php等:

  • awk'$ 7〜/ \。html | \ .htm | \ .php /'access.log | goaccess -

注意:$7是通用日志格式的请求字段(不带虚拟主机),如果您的日志包含虚拟主机,那么您可能需要改用$8,例如:

  • tail -10 access.log | awk'{print $ 8}'

或者解析特定的状态代码,例如500(内部服务器错误):

  • awk'$ 9〜/ 500 /'access.log | goaccess -




往期精彩内容推荐

【环境配置】如何建立你的HTTPS站点

【开源技术】浅谈Rabbitmq

【环境配置】趣玩nginx——限速

【硬件配置】Matrix RAID

【运维开发】运维必备服务器分析shell

【nginx优化】使用socket方式链接Nginx优化php-fpm性能

【开源技术】Redis原理与实践浅析

【网络基础】CIsco设备基础配置

【运维安全】Clam AV——linux杀毒利器

【环境配置】Postfix2.10+ssl+dovecot搭建邮件服务器

【实践分享】Linode VPS和Vultr VPS使用体检对比

【开源技术】Jenkins系列——简介及安装

【开源技术】Jenkins系列——管理及配置

【开源技术】Jenkins系列——项目构建






您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存