goaccess 日志收集
Go Access
goaccess - 快速网络日志分析器和交互式查看器。
描述:
goaccess是一个免费的(MIT许可)和开源实时网络日志分析器和交互式查看器,可以在* nix系统中的终端或通过浏览器运行。
它为需要动态可视化服务器报告的系统管理员提供快速且有价值的HTTP统计信息。GoAccess解析指定的Web日志文件并将数据输出到X终端。
功能:
常规统计: 此面板提供了几个指标的摘要,其中一些是:有效和无效请求的数量,分析数据集所花费的时间,唯一访问者,请求的文件,静态文件(CSS,ICO,JPG等)HTTP引用,404,已解析日志文件的大小和带宽消耗。
唯一 身份访问者:此面板显示点击次数,唯一身份访问者和每个日期的累积带宽等指标。包含相同IP,相同日期和相同用户代理的HTTP请求被视为唯一访问者。默认情况下,它包括网络爬虫/蜘蛛。
(可选)可以使用--date-spec = hr将日期特异性设置为小时级别,这将显示日期,例如05 / Jun / 2016:16。如果您想跟踪小时级别的每日流量,这非常棒。
请求的文件: 此面板显示Web服务器上请求最多的文件。它显示了匹配,唯一身份访问者和百分比,以及累积带宽,协议和使用的请求方法。
请求的静态文件: 列出了最常用静态文件,如:JPG,CSS,SWF,JS,GIF,和PNG文件类型,使用相同的指标作为最后的面板一起。可以将其他静态文件添加到配置文件中。
404或未找到: 显示与先前请求面板相同的指标,但是,其数据包含服务器上未找到的所有页面,或通常称为404状态代码。
主持人: 此面板包含有关主机本身的详细信息。这非常适合发现攻击性爬虫,并确定谁在吃你的带宽。
扩展面板可以显示更多信息,例如主机的反向DNS查找结果,原产国和城市。如果-a启用了参数,则可以通过选择所需的IP地址,然后按Enter来显示用户代理列表。
操作系统: 此面板将报告主机在到达服务器时使用的操作系统。它试图提供每个操作系统的最具体版本。
浏览器: 此面板将报告主机在到达服务器时使用的浏览器。它试图提供每个浏览器的最具体版本。
访问时间: 此面板将显示每小时报告。此选项显示24个数据点,每天一小时一个。
可选地,可以使用--hour-spec = min将小时特异性设置为十分之一水平,其将小时显示为16:4如果您想要发现服务器上的流量峰值,这很好。
虚拟主机: 此面板将显示从访问日志中解析的所有不同虚拟主机。如果在日志格式字符串中使用%v,则会显示此面板。
推荐人网址: 如果相关主机通过其他资源访问了该网站,或者是从其他主机链接/转移给您,则会在此面板中提供他们引用的网址。请参阅--ignore-panel
配置文件以启用它。 (默认禁用)
引用站点: 此面板仅显示主机部分,但不显示整个URL。请求来自的URL。
关键字:它报告用于Google搜索,Google缓存和Google翻译的关键字,这些关键字已经导致您的网络服务器。目前,它仅通过HTTP支持Google搜索查询。请参阅--ignore-panel
配置文件以启用它。 (默认禁用)
地理位置: 确定IP地址在地理位置的位置。统计数据按大陆和国家分列。它需要使用GeoLocation支持进行编译。
HTTP状态代码: HTTP请求的数字状态代码的值。
远程用户(HTTP身份验证) 这是HTTP身份验证确定的请求文档的人员的用户ID。如果文档没有密码保护,则此部分将为“ - ”,就像前一个部分一样。除非%e在log-format变量中给出,否则不会启用此面板。
注意: 可选,如果已配置,所有面板都可以显示为请求提供服务所需的平均时间。
存储:
GoAccess可以使用三种存储选项。选择一个将取决于您的环境和需求。
默认哈希表
内存存储以将数据集大小限制为可用物理内存量为代价提供更好的性能。默认情况下,GoAccess使用内存中的哈希表。如果您的数据集可以适合内存,那么这将表现良好。它具有非常好的内存使用和相当不错的性能。
Tokyo Cabinet On-Disk B + Tree
将此存储方法用于大型数据集,其中无法将所有内容都放在内存中。B +树数据库比任何哈希数据库都要慢,因为必须将数据提交到磁盘。但是,使用SSD可以大大提高性能。如果需要数据持久性以便在以后快速加载统计信息,也可以使用此存储方法。
东京内阁内存哈希数据库
默认哈希表的替代方法。它使用泛型类型,因此它在内存和速度方面的性能是平均的。
操作
可以通过命令行提供以下选项,也可以通过配置文件提供长选项。
日志/日期/时间格式
--time-format
时间格式变量后跟空格,指定包含常规字符和特殊格式说明符的任意组合的日志格式时间。它们都以百分比(%)开头。见man strftime
。%T或%H:%M:%S。
--date-format
日期格式变量后跟空格,指定包含常规字符和特殊格式说明符的任意组合的日志格式日期。它们都以百分号(%)开头。见man strftime
。
--log-format
log-format变量后跟空格或\t制表符分隔,指定日志格式字符串。
除了指定原始日志/日期/时间格式之外,为简单起见,可以将以下任何预定义的日志格式名称提供给日志/日期/时间格式变量。GoAccess还可以在一个变量中处理一个预定义名称,在另一个变量中处理另一个预定义名称。
合并| 组合日志格式
VCOMBINED | 组合日志格式与虚拟主机
COMMON | 通用日志格式
VCOMMON | 虚拟主机
W3C的通用日志格式| W3C扩展日志文件格式
SQUID | 原生鱿鱼日志格式
CLOUDFRONT | Amazon CloudFront Web Distribution
CLOUDSTORAGE | Google云端存储
AWSELB | Amazon Elastic Load Balancing
AWSS3 | 亚马逊简单存储服务(S3)
注意:通常,您需要围绕包含空格,逗号,管道,引号和/或括号的值的引号。内部报价必须转义。
注意:将数据导入GoAccess不会提示日志/日期/时间配置对话框,您需要先在配置文件或命令行中定义它。
Go access安装
yum install glib2 glib2-devel GeoIP-devel ncurses-devel zlib zlib-develyum install gcc
wget https://tar.goaccess.io/goaccess-1.3.tar.gz
tar -xzvf goaccess-1.3.tar.gz
cd goaccess-1.3 /
./configure --enable-geoip --enable-utf8
make
make install
修改/etc/nginx/nginx.conf文件的日志存储格式
log_format main '$remote_addr - \(remote_user [\)time_local] requesthost:"\(http_host"; "\)request" requesttime:"\(request_time"; ' '\)status \(body_bytes_sent "\)http_referer" - \(request_body' '"\)http_user_agent" "$http_x_forwarded_for"';
修改文件/usr/local/etc/goaccess.conf改成goaccess格式标准对应为
time-format %T
date-format %d/%b/%Y
log-format %h - %^ [%d:%t %^] requesthost:"%v"; "%r" requesttime:"%T"; %s %b "%R" - %^"%u"
测试生成页面
/usr/local/bin/goaccess -f /var/log/nginx/access.log -c -a>/usr/share/nginx/html/go.html
后台实时生成数据到goaccess页面
/usr/local/bin/goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/go.html --real-time-html &
[root@localhost ~]# cat /opt/nginx/conf.d/go.conf
server {
listen 8092;
server_name junzhuan.info;
root /opt/nginx/html;
error_log /var/log/nginx/goaccess_erro.log warn;
access_log /var/log/nginx/goaccess.log main;
index index.htm index.html index.php go.html;
location ~ .*.(php|php5)?$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_connect_timeout 120;
fastcgi_send_timeout 120;
fastcgi_buffers 8 128k;
fastcgi_param SCRIPT_FILENAME \(document_root\)fastcgi_script_name;
include fastcgi_params;
}
}
配置
可以使用多个选项配置GoAccess。有关配置选项的完整最新列表,请运行./configure --help
--enable-debug
使用调试符号进行编译并关闭编译器优化。
--enable-utf8
编译具有广泛的字符支持。Ncursesw是必需的。
--enable-geoip=<legacy|mmdb>
使用GeoLocation支持进行编译。MaxMind的GeoIP是必需的。legacy将使用原始的GeoIP数据库。mmdb将使用增强的GeoIP2数据库。
--enable-tcb=<memhash|btree>
与Tokyo Cabinet存储支持一起编译。memhash将利用Tokyo Cabinet的内存中哈希数据库。btree将利用Tokyo Cabinet的磁盘B + Tree数据库。
--disable-zlib
在B + Tree数据库上禁用zlib压缩。
--disable-bzip
禁用B + Tree数据库上的bzip2压缩。
--with-getline
动态扩展行缓冲区以解析整行请求,而不是使用4096的固定大小缓冲区。
--with-openssl
使用OpenSSL编译GoAccess,支持其WebSocket服务器.
自定义日志/日期格式
GoAccess几乎可以解析任何Web日志格式。
预定义选项包括通用日志格式(CLF),组合日志格式(XLF / ELF),包括虚拟主机,W3C格式(IIS)和Amazon CloudFront(下载分发)。
GoAccess也允许任何自定义格式字符串。
有两种方法可以配置日志格式。最简单的方法是运行GoAccess -c以提示配置窗口。但是,这不会使其永久化,因为您需要在配置文件中指定格式。
配置文件位于: %sysconfdir%/goaccess.conf或~/.goaccessrc
注意 %sysconfdir%是 /etc/,/usr/etc/或/usr/local/etc/
time-format时间格式变量后跟空格,指定包含常规字符和特殊格式说明符的任意组合的日志格式日期。它们都以百分比(%)开头。见man strftime
。%T或 %H:%M:%S。
注意:如果以微秒为单位给出时间戳,则%f必须将其用作时间格式
date-format日期格式变量后跟空格,指定包含常规字符和特殊格式说明符的任意组合的日志格式日期。它们都以百分比(%)开头。见man strftime
。
注意:如果以微秒为单位给出时间戳,则%f必须将其用作日期格式
log-format log-format变量后跟空格或\t制表符分隔,指定日志格式字符串。
符
%x与时间格式和日期格式变量匹配的日期和时间字段。当给出时间戳而不是日期和时间在两个单独的变量中时使用。
%t时间字段匹配时间格式变量。
%d与日期格式变量匹配的日期字段。
%v服务器名称根据规范名称设置(服务器块或虚拟主机)。
%e这是HTTP身份验证确定的请求文档的人的用户标识。
%hhost(客户端IP地址,IPv4或IPv6)
%r来自客户端的请求行。这需要围绕请求的特定分隔符(单引号,双引号等)可解析。否则,使用特殊的格式说明符,如组合%m,%U,%q和%H解析各个字段。
注意:使用或者%r获得完整的请求OR %m,%U,%q并%H形成你的要求,不要同时使用。
%m请求方法。
%U请求的URL路径。
注意:如果查询字符串在%U,则无需使用%q。但是,如果URL路径不包含任何查询字符串,则可以使用%q并将查询字符串附加到请求中。
%q查询字符串。
%H请求协议。
%s服务器发送回客户端的状态代码。
%b返回给客户端的对象大小。
%R“Referer”HTTP请求标头。
%u用户代理HTTP请求标头。
%D服务请求所需的时间,以微秒为单位。
%T服务请求所需的时间,以毫秒为单位,分辨率为毫秒。
%L 服务请求所用的时间,以毫秒为单位的十进制数。
%^忽略此字段。
%~向前移动日志字符串,直到找到非空格(!isspace)char。
~hX-Forwarded-For(XFF)字段中的主机(客户端IP地址,IPv4或IPv6)。
注意
对于XFF,GoAccess使用一个特殊的说明符,它由主机说明符之前的波浪号组成,后跟分隔XFF字段的字符,这些字符用花括号括起来(即~h{,"})。
例如,~h{," }用于解析 "11.25.11.53, 17.68.33.17"由双引号,逗号和空格分隔的字段。
注意
为了获得GoAccess中提供的平均,累积和最长时间,您需要在Web服务器中开始记录响应时间。在Nginx中,您可以添加$request_time到日志格式或%DApache中。
要点:
如果同时使用多个时间服务说明符,则格式字符串中指定的第一个选项将优先于其他说明符。
GoAccess 需要以下字段:
有效的IPv4 / 6 %h
有效日期 %d
请求 %r
交互式密钥
F1或h主要帮助。
F5重绘主窗口。
q退出程序,当前窗口或折叠活动模块
o或ENTER展开所选模块或打开窗口
0-9并将Shift + 0所选模块设置为活动状态
j在展开的模块中向下滚动
k在扩展模块中向上滚动
c设置或更改方案颜色
^ f在活动模块中向前滚动一个屏幕
^ b在活动模块中向后滚动一个屏幕
TAB迭代模块(转发)
SHIFT + TAB迭代模块(向后)
s对活动模块的排序选项
/搜索所有模块(允许正则表达式)
n找到下一个出现的位置
g移至屏幕的第一个项目或顶部
G移动到屏幕的最后一项或底部