goaccess

2025-12-11 0 449

goaccess

这是什么?

goaccess是一种开源实时Web日志分析仪和交互式查看器,它在 *NIX系统或通过浏览器的终端中运行。它为系统管理员提供快速而有价值的HTTP统计信息,这些系统管理员需要视觉服务器报告。更多信息,网址:https://goaccess.io。

特征

goaccess解析了指定的Web日志文件,并将数据输出到X终端。功能包括:

  • 完全实时
    所有面板和指标均应定时每200毫秒对终端输出进行一次更新,每秒在HTML输出上每秒更新。

  • 需要最小的配置
    您只需在访问日志文件上运行它,选择日志格式并让goaccess解析访问日志并向您显示统计信息。

  • 跟踪申请响应时间
    跟踪为请求服务所花费的时间。如果您想跟踪正在放慢网站的页面,则非常有用。

  • Websocket身份验证:
    goaccess提供了增强的Websocket身份验证,并具有安全的令牌刷新功能以及与外部身份验证系统的无缝集成,以支持本地和外部JWT验证。

  • 几乎所有网络日志格式
    goaccess允许任何自定义日志格式字符串。预定义的选项包括Apache,Nginx,Amazon S3,弹性负载平衡,CloudFront,等。

  • 增量日志处理
    需要数据持久性吗? goaccess具有通过磁盘持久性选项逐步处理日志的能力。

  • 只有一个依赖
    goaccess用C编写。为了运行它,您只需要ncurses作为依赖项即可。就是这样。它甚至具有自己的Web套接字服务器-http://*gw*s*ocket.io/。

  • 访客
    确定按小时或日期最慢的运行请求的命中量,访问者,带宽和指标的数量。

  • 每个虚拟主机的指标
    有多个虚拟主机(服务器块)吗?它具有一个面板,该面板显示了虚拟主机消耗大多数Web服务器资源的面板。

  • ASN(自主系统编号映射)
    非常适合检测恶意交通模式并相应地阻止它们。

  • 配色方案可自定义
    量身定制的goaccess适合您自己的颜色口味/方案。通过终端,或者只需在HTML输出上应用样式表即可。

  • 支持大数据集
    goaccess具有通过优化的内存散列表,能够解析大量日志。它具有很好的记忆使用量和相当不错的性能。该存储也支持对盘的持久性。

  • Docker支持
    能够从上游构建goaccess的Docker图像。您仍然可以使用音量映射和编辑goaccess .conf完全配置它。请参阅下面的Docker部分。还有文档如何使用Docker-Compose。

几乎所有Web日志格式…

goaccess允许任何自定义日志格式字符串。预定义的选项包括但不限于:

  • Amazon Cloudfront(下载分发)。
  • 亚马逊简单存储服务(S3)
  • AWS弹性负载平衡
  • 组合日志格式(XLF/Elf)Apache | nginx
  • 通用日志格式(CLF)apache
  • Google云存储。
  • Apache虚拟主机
  • 鱿鱼天然格式。
  • W3C格式(IIS)。
  • Caddy的JSON结构化格式。
  • Traefik的CLF风味

为什么要goaccess ?

goaccess被设计为基于终端的快速日志分析仪。它的核心想法是实时快速分析和查看Web服务器统计信息,而无需使用浏览器(如果您想通过SSH快速分析访问日志,或者您只是喜欢在终端工作)。

尽管终端输出是默认输出,但它具有生成完整,独立的,实时的HTML报告以及JSONCSV报告的能力。

您可以看到它比其他任何东西都更像是监视器命令工具。

安装

从发布中构建

goaccess可以在 *NIX系统上编译并使用。

下载,提取和编译goaccess :

goaccess-1.9.4.tar.gz
$ tar -xzvf goaccess -1.9.4.tar.gz
$ cd goaccess -1.9.4/
$ ./configure –enable-utf8 –enable-geoip=mmdb
$ make
# make install\”>

 $ wget https://tar.*goac*ce*ss.io/ goaccess -1.9.4.tar.gz
$ tar -xzvf goaccess -1.9.4.tar.gz
$ cd goaccess -1.9.4/
$ ./configure --enable-utf8 --enable-geoip=mmdb
$ make
# make install

从GitHub(开发)构建

goaccess
$ autoreconf -fiv
$ ./configure –enable-utf8 –enable-geoip=mmdb
$ make
# make install\”>

 $ git clone https://github.c*o**m/allinurl/goaccess.git
$ cd goaccess
$ autoreconf -fiv
$ ./configure --enable-utf8 --enable-geoip=mmdb
$ make
# make install

分布

使用GNU+Linux发行版的首选软件包管理器在GNU+Linux上安装goaccess是最简单的。请注意,并非所有发行版都具有最新版本的goaccess 。

Debian/Ubuntu

 # apt-get install goaccess

注意:这很可能会安装过时的goaccess版本。要确保您正在运行最新稳定版本的goaccess ,请参阅下面的替代选项。

官方的goaccess Debian和Ubuntu存储库

goaccess.gpg >/dev/null
$ echo \”deb [signed-by=/usr/share/keyrings/ goaccess .gpg arch=$(dpkg –print-architecture)] https://deb.go**acc*ess.io/ $(lsb_release -cs) main\” | sudo tee /etc/apt/sources.list.d/ goaccess .list
$ sudo apt-get update
$ sudo apt-get install goaccess \”>

 $ wget -O - https://deb.*goacce*s*s.io/gnugpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/ goaccess .gpg >/dev/null
$ echo \"deb [signed-by=/usr/share/keyrings/ goaccess .gpg arch=$(dpkg --print-architecture)] https://deb.go**acc*ess.io/ $(lsb_release -cs) main\" | sudo tee /etc/apt/sources.list.d/ goaccess .list
$ sudo apt-get update
$ sudo apt-get install goaccess

笔记

  • 官方存储库中的.deb软件包也可以通过HTTPS获得。您可能需要安装apt-transport-https

软呢帽

 # yum install goaccess

 # pacman -S goaccess

Gentoo

 # emerge net-analyzer/ goaccess

OS X / Homebrew

 # brew install goaccess

freebsd

goaccess/ && make install clean
# pkg install sysutils/ goaccess \”>

 # cd /usr/ports/sysutils/ goaccess / && make install clean
# pkg install sysutils/ goaccess

OpenBSD

goaccess && make install clean
# pkg_add goaccess \”>

 # cd /usr/ports/www/ goaccess && make install clean
# pkg_add goaccess

Opensuse

goaccess\”>

 # zypper ar -f obs://server:http http
# zypper in goaccess

openindiana

 # pkg install goaccess

PKGSRC(Netbsd,Solaris,Smartos,…)

 # pkgin install goaccess

视窗

goaccess可以通过Cygwin在Windows中使用。请参阅Cygwin的包裹。或通过Windows 10上的GNU+Linux子系统。

Docker

Docker映像已更新,能够从访问日志中引导输出。如果您只想输出报告,则可以将日志从外部环境中输送到基于Docker的过程:

goaccess -a -o report.html –log-format COMBINED -\”>

 touch report.html
cat access.log | docker run --rm -i -v ./report.html:/report.html -e LANG=$LANG allinurl/ goaccess -a -o report.html --log-format COMBINED -

或实时

 tail -F access.log | docker run -p 7890:7890 --rm -i -e LANG=$LANG allinurl/ goaccess -a -o report.html --log-format COMBINED --real-time-html -

还有文档如何使用Docker-Compose。

建在孤立的容器中

您还可以在孤立的容器环境中为基于Debian的系统构建二进制系统,以防止使用开发库将本地系统混乱:

goaccess-master
$ docker build -t goaccess /build.debian-12 -f Dockerfile.debian-12 .
$ docker run -i –rm -v $PWD:/ goaccess goaccess /build.debian-12 > goaccess \”>

 $ curl -L \"https://github.co**m*/allinurl/goaccess/archive/refs/heads/master.tar.gz\" | tar -xz && cd goaccess -master
$ docker build -t goaccess /build.debian-12 -f Dockerfile.debian-12 .
$ docker run -i --rm -v $PWD:/ goaccess goaccess /build.debian-12 > goaccess

您可以在docker.md中阅读有关使用Docker Image的更多信息。

分销软件包

goaccess的要求很少,它以C编写,仅需要Ncurses。但是,以下是某些发行版中一些可选依赖性的表,可以从源来构建goaccess 。

发行版 ncurses Geoip(OPT) geoip2(opt) OpenSSL(OPT)
Ubuntu/Debian libncurses-dev libgeoip-dev libmaxminddb-dev libssl-dev
Rhel/Centos ncurses-devel Geoip-Devel libmaxminddb-devel Openssl-Devel
ncurses 地理 libmaxminddb Openssl
Gentoo sys-libs/ncurses Dev-libs/geoip dev-libs/libmaxminddb Dev-libs/openssl
Slackware ncurses 地理 libmaxminddb Openssl

注意:您可能需要安装构建工具,例如gccautoconfgettextautopoint等,以从源来编译/构建软件。例如, base-develbuild-essential \"Development Tools\"

贮存

默认哈希表

内存存储提供更好的性能,以将数据集大小限制为可用物理内存的数量。 goaccess使用内存中的哈希表。它具有很好的记忆使用量和相当不错的性能。该存储也支持对盘的持久性。

命令行 /配置选项

请参阅可以提供给命令或在配置文件中指定的选项。如果在配置文件中指定,则需要在不预先准备的情况下使用长选项--

用法 /示例

注意:将管道数据输入goaccess不会提示日志/日期/时间配置对话框,您将需要在配置文件或命令行中定义它。

入门

输出到终端并生成交互式报告:

 # goaccess access.log

生成HTML报告:

 # goaccess access.log -a > report.html

生成JSON报告文件:

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

为了生成CSV报告以进行STDOUT:

 # goaccess access.log --no-csv-summary -o csv

goaccess还可以极大地灵活地进行实时过滤和解析。例如,自goaccess启动以来,通过监视日志快速诊断问题:

 # tail -f access.log | goaccess -

甚至更好的是,要在维护开放管道以保留实时分析的同时过滤,我们可以使用tail -f和匹配的模式工具,例如grepawksed等::

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

或从文件开头解析,同时保持管道打开并应用过滤器

 # tail -f -n +0 access.log | grep -i --line-buffered \'firefox\' | goaccess -o report.html --real-time-html -

多个日志文件

有几种用goaccess解析多个日志的方法。最简单的是将多个日志文件传递到命令行:

 # goaccess access.log access.log.1

甚至可以在阅读常规文件时从管道中解析文件:

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

注意:将单个破折号附加到命令行上,以使goaccess知道它应该从管道中读取。

现在,如果我们想为goaccess添加更大的灵活性,我们可以使用zcat --force读取压缩和未压缩的文件。例如,如果我们想处理所有日志文件access.log* ,我们可以做:

 # zcat --force access.log* | goaccess -

注意:在Mac OS X上,使用gunzip -c而不是zcat

多线程支持

使用--jobs=<count> (或-j )启用多线程解析。例如:

 # goaccess access.log -o report.html -j 4

并使用--chunk-size=<256-32768>以调整块尺寸,默认块大小为1024。例如:

 # goaccess access.log -o report.html -j 4 --chunk-size=8192

实时HTML输出

goaccess具有HTML报告中输出实时数据的能力。您甚至可以通过电子邮件发送HTML文件,因为它由一个没有外部文件依赖性的单个文件组成,这是多么整洁!

生成实时HTML报告的过程与创建静态报告的过程非常相似。仅需要--real-time-html才能实时。

 # goaccess access.log -o /usr/share/nginx/html/your_site/report.html --real-time-html

要查看报告,您可以导航到http://*y**our_site/report.html

默认情况下, goaccess将使用生成报告的主机名。可选地,您可以指定客户端浏览器将连接到的URL。有关一个更详细的示例,请参见常见问题。

goaccess .io\”>

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

默认情况下, goaccess在端口7890上听,要使用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

注意:要通过TLS/SSL连接输出实时数据,您需要使用--ssl-cert=<cert.crt> and --ssl-key=<priv.key>

过滤

与日期合作

另一个有用的管道将是从网络日志中过滤日期

以下将从05/Dec/2010开始,直到文件结束。

 # 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 -

如果我们只想保留一定量的数据和回收存储,我们只能保留一定数期。例如,要保留并显示过去的5天:

 # goaccess access.log --keep-last=5

虚拟主机

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

 vhost.io:80 8.8.4.4 - - [02/Mar/2016:08:14:04 -0600] \"GET /shop HTTP/1.1\" 200 615 \"-\" \"Googlebot-Image/1.0\"

您想将虚拟主机附加到请求中,以查看哪个虚拟主机最高URL属于:

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

这样做,但也使用实时过滤和解析:

 tail -f  access.log | unbuffer -p awk \'$8=$1$8\' | goaccess -a -

为了排除虚拟主机列表,您可以执行以下操作:

 # grep -v \"`cat exclude_vhost_list_file`\" vhost_access.log | goaccess -

文件,状态代码和机器人

在请求中解析特定页面,例如,例如页面视图, htmlhtmphp等。

 # awk \'$7~/\\.html|\\.htm|\\.php/\' access.log | goaccess -

请注意, $7是通用和组合日志格式(无虚拟主机)的请求字段,如果您的日志包含虚拟主机,则您可能要使用$8 。最好检查您要拍摄的字段,例如:

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

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

 # awk \'$9~/500/\' access.log | goaccess -

或多个状态代码,例如,所有3xx和5xx:

 # tail -f -n +0 access.log | awk \'$9~/3[0-9]{2}|5[0-9]{2}/\' | goaccess -o out.html -

并估计概述了多少个机器人(爬行者)撞到了您的服务器:

 # tail -F -n +0 access.log | grep -i --line-buffered \'bot\' | goaccess -

尖端

另外,值得指出的是,如果我们想以较低的优先级运行goaccess ,我们可以将其运行为:

 # nice -n 19 goaccess -f access.log -a

而且,如果您不想将其安装在服务器上,则仍然可以从本地计算机运行它!

 # ssh -n root@server \'tail -f /var/log/apache2/access.log\' | goaccess -

注意: SSH需要-n因此goaccess可以从Stdin阅读。另外,请确保使用SSH键进行身份验证,因为如果需要密码,它将无法工作。

故障排除

我们收到许多以前已经回答的问题。

  • 日期/时间匹配问题?检查您的日志格式和运行goaccess匹配的系统语言环境。参见#1571
  • 模式匹配问题?空间通常是一个问题,例如#136,#1579
  • 其他问题匹配日志条目:请参阅>关于日志/日期/时间格式的200个封闭问题
  • 日志处理问题?请参阅有关日志处理的111个问题

增量日志处理

goaccess具有通过其内部存储逐渐处理日志并将其数据倒入磁盘的能力。它以以下方式工作:

  1. 必须首先将数据集持续使用--persist ,然后可以加载相同的数据集。
  2. --restore 。如果传递新数据(管道或通过日志文件),则将其附加到原始数据集。
笔记

goaccess跟踪所有处理的文件的inodes(假设文件将保留在同一分区上),此外,它还从日志中提取数据段,以及每个文件的最后一行和最后一行的时间戳。例如, inode:29627417|line:20012|ts:20171231235059

首先,它比较摘要是否匹配要解析的日志,如果这样做,则假定日志没有发生巨大变化,例如,尚未被截断。如果Inode与当前文件不匹配,则将解析所有行。如果当前文件与Inode匹配,则它读取其余行并更新解析行和时间戳的线计数。作为一种额外的预防措施,它不会用时间戳≤与存储的日志≤分析。

管道数据基于最后一行读取的时间戳。例如,它将解析并丢弃所有传入条目,直到找到时间戳> =比存储的时间戳> =。

例子

goaccess access.log.1 –persist\”>

 // last month access log
# goaccess access.log.1 --persist

然后,加载它

goaccess access.log –restore –persist\”>

 // append this month access log, and preserve new data
# goaccess access.log --restore --persist

仅读取持续的数据(无需解析新数据)

 # goaccess --restore

贡献

欢迎对goaccess的任何帮助。最有用的方法是尝试并提供反馈。请随时使用GitHub问题跟踪器,并提取请求讨论和提交代码更改。

您可以通过直接在github上编辑.po文件或使用视觉界面inlang.com来为我们的翻译做出贡献。

享受!

下载源码

通过命令行克隆项目:

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 goaccess https://www.zuozi.net/34266.html

luban
上一篇: luban
dtm
下一篇: dtm
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务