其他分享
首页 > 其他分享> > GoAccess操作手册

GoAccess操作手册

作者:互联网

名字

GoAccess - 可视化 Web 日志分析工具。

语法

                    goaccess [filename] [ options ... ] [-c][-M][-H][-q][-d][...]
                

描述

                GoAccess 是一款开源(MIT许可证)的且具有交互视图界面的实时 Web 日志分析工具,通过你的 Web 浏览器或者 *nix 系统下的终端程序即可访问。                

                能为系统管理员提供快速且有价值的 HTTP 统计,并以在线可视化服务器的方式呈现。                   GoAccess 解析指定的 Web 日志文件并将统计结果输出到 X 终端。功能如下:                 

存储

                GoAccess 支持三种类型的存储方式。请根据你的需要和系统环境进行选择。              

默认哈希表

                  内存哈希表可以提供较好的性能,缺点是数据集的大小受限于物理内存的大小。GoAccess 默认使用内存哈希表。如果你的内存可以装下你的数据集,那么这种模式的表现非常棒。此模式具有非常好的内存利用率和性能表现。                 

Tokyo Cabinet 磁盘 B+ 树

                  使用这种模式来处理巨大的数据集,大到不可能在内存中完成任务。当数据提交到磁盘以后,B+树数据库比任何一种哈希数据库都要慢。但是,使用 SSD 可以极大的提高性能。往后您可能需要快速载入保存的数据,那么这种方式就可以被使用。                 

Tokyo Cabinet 内存哈希表

                  作为默认哈希表的替换方案。因为使用通用类型在内存表现以及速度方面都很平均。               


配置

                GoAccess 拥有多个配置选项。获取完整的最新配置选项列表,请运行:*./configure --help*                

选项

                下面的选项可以通过命令行使用,如果是长选项则通过配置文件。               

日志/日期/时间 格式

用户交互选项

服务器选项

FILE OPTIONS

解析选项

地理位置选项

其他选项

磁盘存储选项

自定义 日志/日期 格式

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`),用于指定日志字符串格式。                 

特殊格式说明符

操作热键



示例

不同的输出

                输出到终端且生成一个可交互的报告:               
                    # goaccess access.log
                
                生成一份 HTML 报告:               
                    # goaccess access.log -a -o report.html
                
                生成一份 JSON 报告:               
                    # goaccess access.log -a -d -o report.json
                
                生成一份 CSV 文件:                
                    # goaccess access.log --no-csv-summary -o report.csv
                
                GGoAccess 非常灵活,支持实时解析和过滤。例如:需要通过监控实时日志来快速诊断问题:              
                    # tail -f access.log | goaccess -
                
                更厉害的是,还可以使用 tail -f 和一个模式匹配工具一起工作,比如: `grep`, `awk`, `sed` 等等               
                    # tail -f access.log | grep -i --line-buffered 'firefox' | goaccess --log-format=COMBINED -
                
                又或者可以在管道打开的状态下从头开始解析文件,并同时应用一个过滤器:              
                    # tail -f -n +0 access.log | grep --line-buffered 'Firefox' | goaccess -o out.html --real-time-html -
                

多日志文件

                有多种方法可以实现让 GoAccess 同时解析多个日志文件。最简单的方法是直接将多个文件通过命令行传给 GoAccess:              
                    # goaccess access.log access.log.1
                
                甚至在正常读取文件的时候也可以同时通过管道解析文件:              
                    # cat access.log.2 | goaccess access.log access.log.1 -
                
                注意 添加到命令行末尾的破折号是为了告诉 GoAccess 应该从管道中读取数据。               

                要更加灵活的使用 GoAccess,我们可以使用一系列的管道。例如,我们希望处理所有压缩过的日志文件 `access.log.*.gz` 并附加到当前日志文件中,则我们可以这样做:              
                    # zcat access.log.*.gz | goaccess access.log -
                
                注意: 在 Mac OS X 上, 请使用 `gunzip -c` 代替 `zcat`。                

实时 HTML 输出

                GoAccess 有能力在 HTML 报告中展示实时数据。您甚至可以通过电子邮件发送 HTML 报告,因为它是由没有外部文件依赖的单个文件组成,是不是很酷!              

                生成实时 HTML 报告的过程和生成静态报告的过程非常相似。实时报告仅仅需要使用参数 `--real-time-html` 。                 
                    # goaccess access.log -o /usr/share/nginx/html/site/report.html --real-time-html
                
                GoAccess 默认使用生成报告的主机名。您也可以指定 URL 用于客户端浏览器访问。参考 [FAQ](https://www.goaccess.cc/FAQ.html) 上更详细的示例。                 
                    # goaccess access.log -o report.html --real-time-html --ws-url=goaccess.io
                
                GoAccess 默认侦听端口 7890,如下使用其他端口可以这样操作(确保端口已经打开):              
                     # goaccess access.log -o report.html --real-time-html --port=9870
                
                绑定 WebSocket 服务器到不同于 0.0.0.0 的另外一个地址,可以这样操作:                
                    # goaccess access.log -o report.html --real-time-html --addr=127.0.0.1
                
                注意:                     如果需要在加密连接上输出实时数据,则需要使用 `--ssl-cert=<cert.crt>` 和 `--ssl-key=<priv.key>`。                

日期处理

                另一个强大的管道应该是从 Web 日志中过滤日期。               

                下面的命令将获取从 `05/Dec/2010` 开始并直到文件结束的所有的 HTTP 请求。              
                    # sed -n '/05\/Dec\/2010/,$ p' access.log | goaccess -a -
                
                或者使用相对日期,比如昨天或者明天:              
                    # sed -n '/'$(date '+%d\/%b\/%Y' -d '1 week ago')'/,$ p' access.log | goaccess -a -
                
                如果需要解析一个固定的时间段,则可以这样写:              
                    # sed -n '/5\/Nov\/2010/,/5\/Dec\/2010/ p' access.log | goaccess -a -
                

虚拟主机

                假定您的日志中包含虚拟主机字段。比如:                 
                    vhost.com:80 10.131.40.139 - - [02/Mar/2016:08:14:04 -0600] "GET /shop/bag-p-20 HTTP/1.1" 200 6715 "-" "Apache (internal dummy connection)"
                
                并且您希望查看最高访问量的 URL 属于哪一台虚拟主机。                
                    awk '$8=$1$8' access.log | goaccess -a -
                
                当然,您可以可以排除不想看的虚拟主机:                 
                    # grep -v "`cat exclude_vhost_list_file`" vhost_access.log | goaccess -
                

文件 & 状态码

                解析特定页面,比如:页面访问数,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 -
                

服务器

                值得一提的是,如果希望 GoAccess 运行在一个较低优先级,可以这样做:              
                    # nice -n 19 goaccess access.log -a
                
                如果您不希望在服务器上安装 GoAccess,那在本地机器运行就好了:                 
                    # ssh root@server 'cat /var/log/apache2/access.log' | goaccess -a -
                

处理不断增长中的日志

                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
                

注意事项

                每一个活动面板上最多有 366 个对象,如果是实时 HTML 报告则为 50 个对象。对象上限可以通过最大对象数自定义,但是只有 CSV 和 JSON 格式的输出允许超过默认值,即 366 对象每面板。               

                在使用磁盘B+树(使用参数 `--keep-db-files` 和 `--load-from-disk`)加载了同一个日志两次,则 GoAccess 会将每个请求也计算两次。问题[#334](https://github.com/allinurl/goaccess/issues/334) 详细说明了此问题。              

                一次访问就是一次请求(访问日志中的每一行),例如,10 次请求 = 10 次访问。具有相同 IP,日期,和 UserAgent 的 HTTP 请求将被认为是一个独立访问。               

BUGS

                如果您认为您发现了一个 Bug,请发送电子邮件到                    ![GoAccess' email](GoAccess操作手册.assets/genemail.php)                

作者

                [Gerardo Orellana](https://github.com/allinurl). 获取更多信息以及最新软件版本,请访问 https://goaccess.io

标签:GoAccess,goaccess,log,操作手册,access,格式,日志
来源: https://www.cnblogs.com/sanduzxcvbnm/p/11322131.html