标签:ace crypto sock 基于 geo mkdir 应用 定义 make
目录
GoAccess 是一款开源的且具有交互视图界面的实时 Web 日志分析工具,通过你的 Web 浏览器或者 *nix 系统下的终端程序(terminal)即可访问。
能为系统管理员提供快速且有价值的 HTTP 统计,并以在线可视化服务器的方式呈现。
GoAccess 被设计成快速的并基于终端的日志分析工具。其核心理念是不需要通过 Web 浏览器就能快速分析并实时查看 Web 服务器的统计数据(这对于需要使用 SSH 来对访问日志进行快速分析或者就是喜欢在终端环境下工作的人来说是超赞的)。
终端输出仅仅是默认的输出方式,GoAccess 还支持生成完整的实时 HTML 报告(这对分析、监控以及数据可视化都是极好的),以及 JSON 和 CSV 格式的报告。
GoAccess 解析指定的 Web 日志文件并将统计结果输出到 X 终端。功能如下:
--ignore-panel
开启此功能。(默认关闭)--ignore-panel
开启此功能。(默认关闭)安装有两种方式:源码编译安装和yum
安装
本机环境
# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
下载包并编译
# wget -c https://tar.goaccess.io/goaccess-1.3.tar.gz
# tar -xzvf goaccess-1.3.tar.gz
# cd goaccess-1.3/
# ./configure --prefix=/usr/local/goaccess --enable-utf8 --enable-geoip=legacy --with-openssl
根据错误提示依次解决依赖关系
报错一:
configure: error:
*** Missing development files for the GeoIP library
# yum install -y GeoIP-devel
报错二:
configure: error: *** Missing development libraries for ncursesw
# yum install -y ncurses-devel
再次编译安装
# ./configure --prefix=/usr/local/goaccess --enable-utf8 --enable-geoip=legacy --with-openssl
...
Your build configuration:
Prefix : /usr/local/goaccess
Package : goaccess
Version : 1.3
Compiler flags : -pthread
Linker flags : -lnsl -lncursesw -lGeoIP -lcrypto -lssl -lpthread
Dynamic buffer : no
Geolocation : GeoIP Legacy
Storage method : In-memory Hash Database (Default)
TLS/SSL : yes
Bugs : goaccess@prosoftcorp.com
# make && make install
...
make[3]: Entering directory `/root/goaccess-1.3'
/usr/bin/mkdir -p '/usr/local/goaccess/bin'
/usr/bin/install -c goaccess '/usr/local/goaccess/bin'
/usr/bin/mkdir -p '/usr/local/goaccess/etc/goaccess'
/usr/bin/install -c -m 644 config/goaccess.conf config/browsers.list '/usr/local/goaccess/etc/goaccess'
/usr/bin/mkdir -p '/usr/local/goaccess/share/man/man1'
/usr/bin/install -c -m 644 goaccess.1 '/usr/local/goaccess/share/man/man1'
make[3]: Leaving directory `/root/goaccess-1.3'
make[2]: Leaving directory `/root/goaccess-1.3'
make[1]: Leaving directory `/root/goaccess-1.3'
通过yum
安装可以自动的解决依赖问题
# yum install goaccess -y
# echo "export PATH=/usr/local/goaccess/bin:$PATH" >>/etc/profile
# source /etc/profile
# goaccess -V
GoAccess - 1.3.
For more details visit: http://goaccess.io
Copyright (C) 2009-2016 by Gerardo Orellana
Build configure arguments:
--enable-utf8
--enable-geoip=legacy
--with-openssl
GoAccess
可以解析虚拟的任意Web
日志格式。
预定义的选项包括:通用日志格式,联合日志格式,包含虚拟主机,W3C
格式以及亚马逊CloudFront
(分布式下载)。
GoAccess
允许任意的自定义格式字符串。
有两种方法配置日志格式。最简单的方式是运行 GoAccess
时使用-c
显示一个配置窗口。但是这种方式不是永久有效的,因此你需要在配置文件中设定格式。
配置文件位于:%sysconfdir%/goaccess.conf
或者~/.goaccessrc
注意:%sysconfdir%
可能是/etc/
, /usr/etc/
或者/usr/local/etc/
time-format
参数time-format
后跟随一个空格符,指定日志的时间格式,包含普通字符与特殊格式说明符的任意组合。他们都由百分号(%)开始。参考 man strftime
。 %T
或者%H:%M:%S
.
注意: 如果给定的时间戳以微秒计算,则必须在 time-format
中使用参数%f
。
date-format 参数 date-format 后跟随一个空格符,指定日志的日期格式,包含普通字符与特殊格式说明符的任意组合。他们都由百分号 (%)开始。参考 man strftime
。
注意: 如果给定的时间戳以微秒计算,则必须在 time-format
中使用参数%f
。
log-format
参数log-format
后跟随一个空格符或者制表分隔符(\t),用于指定日志字符串格式。
特殊格式说明符
~h 在 X-Forwarded-For (XFF) 字段中的主机(客户端 IP 地址,IPv4 或者 IPv6)。
修改配置文件
# vim /usr/local/goaccess/etc/goaccess/goaccess.conf
time-format %H:%M:%S
date-format %d/%b/%Y
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
本文示例用来分析nginx
的日志,为了分析的精准度,配置一下nginx
的log_format
为通用格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_cookie" "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
常用参数说明
# pwd
/var/log/nginx
# goaccess -a -d -f nginx_access.log-20191216 -p /usr/local/goaccess/etc/goaccess/goaccess.conf
控制台操作方法按键
效果如下
# pwd
/var/log/nginx
# goaccess -a -d -f nginx_access.log-20191216 -p /usr/local/goaccess/etc/goaccess/goaccess.conf -o /usr/local/nginx/html/www.ssgeek.com/go-access.html
Parsing... [9,692] [692/s]s]
此处生成的html
直接定向到了站点目录下,因此分析并生成html
文件后即可进行访问,不多说此处上大图!
使用daemonize
模式运行,生成实时HTML
报告的过程与创建静态报告的过程非常相似,只需要在启动命令后添加--real-time-html
和--daemonize
参数即可
# goaccess -a -d -f nginx_access.log-20191216 -p /usr/local/goaccess/etc/goaccess/goaccess.conf -o /usr/local/nginx/html/www.ssgeek.com/go-access.html --real-time-html --daemonize
Daemonized GoAccess: 13308
默认监听的是7890端口,可以使用--port
指定端口号启动后会提示WebSocket
服务器已准备接收来自客户的连接
# netstat -lntup|grep 7890
tcp 0 0 0.0.0.0:7890 0.0.0.0:* LISTEN 13333/goaccess
如果网站开启了HTTPS
功能,就需要GoAccess
启用openssl
,在配置文件goaccess.conf
中配置ssl-cert
和ssl-key
来支持openssl
,还需要将ws-url
指定为https
的域名
也可以通过定时任务的方式实现定时更新HTML
报表,每30分钟刷新一次
# crontab -e
*/30 * * * * goaccess -a -d -f nginx_access.log-20191216 -p /usr/local/goaccess/etc/goaccess/goaccess.conf -o /usr/local/nginx/html/www.ssgeek.com/go-access.html
处理不断增长的日志指的是当日志按照某些规则进行切割,例如nginx
日志每天切割一份的情况。这个时候GoAccess
通过磁盘B+树
数据库能够处理不断增长的日志。工作原理如下:
示例:
// 上个月的访问日志
goaccess access.log.1 --keep-db-files
然后,载入
// 添加这个月的新日志,并保存为新数据
goaccess access.log --load-from-disk --keep-db-files
读取已经保存的数据(不解析新数据)
goaccess --load-from-disk --keep-db-files
# goaccess -a -d -f nginx_access.log-20191216 -p /usr/local/goaccess/etc/goaccess/goaccess.conf -o json > report.json
# goaccess -a -d -f nginx_access.log-20191216 -p /usr/local/goaccess/etc/goaccess/goaccess.conf -o csv > report.csv
# tail -f nginx_access.log | goaccess -p /usr/local/goaccess/etc/goaccess/goaccess.conf -
# goaccess -p /usr/local/goaccess/etc/goaccess/goaccess.conf access.log.1 access.log.2
参考:
https://goaccess.cc/
https://github.com/allinurl/goaccess
标签:ace crypto sock 基于 geo mkdir 应用 定义 make
原文地址:https://www.cnblogs.com/ssgeek/p/12114667.html