GoAccess :一款出色的开源网络日志分析工具

news/2025/2/28 15:26:18/文章来源:https://www.cnblogs.com/o-O-oO/p/18601329

GoAccess 是一款出色的开源网络日志分析工具。它支持多种主流软件日志格式,如 Apache、Nginx 等。基于 C 语言构建,具备实时分析能力,能快速处理日志数据并生成可视化报告,无论是终端展示还是 HTML、JSON、CSV 格式输出,都为网络运维与业务优化提供有力支持。

官网地址:https://goaccess.io/

一、多日志格式支持与解析

能够处理多种常见网络服务器及相关服务的日志格式,包括 Apache 的通用日志格式(Common Log Format)和组合日志格式(Combined Log Format)、Nginx 日志格式、Amazon S3 日志格式、Elastic Load Balancing 日志格式、CloudFront 日志格式以及 Caddy 日志格式等。可以精准解析日志中的各类关键信息,如客户端 IP、访问时间、请求页面、响应状态码、用户代理等,为后续深入分析奠定基础。

二、实时分析能力

基于 C 语言编写,拥有出色的实时处理性能,能够以毫秒 / 秒级的速度更新分析结果。在数据持续产生的过程中,可实时监测网络日志的动态变化,让管理员能即时掌握服务器的运行状态变化、用户访问行为的波动等情况,迅速对异常情况作出响应,有效提升网络运维的时效性和效率。

三、可视化呈现

提供多种可视化方式:
终端输出:默认的终端显示简洁直观,以文本形式清晰展示关键数据和分析结果,便于管理员快速进行初步诊断和查看基本信息,如访问量排名、资源请求分布等。

HTML 报告生成:可创建完整自足的实时 HTML 报告,将分析数据转化为精美的可视化图表,如柱状图展示不同时间段的访问量对比、饼图呈现各种资源请求的占比、折线图反映响应时间的变化趋势等。这些可视化图表有助于深入洞察访问趋势、流量分布、用户行为模式等复杂信息,为决策制定提供有力的数据支撑和直观依据。

JSON 与 CSV 格式报告:支持输出 JSON 和 CSV 格式的报告,方便与其他数据分析工具或系统进行集成与数据交换,便于进行更深入的二次开发和数据挖掘工作,例如与数据仓库系统对接进行长期数据存储和综合分析,或者导入到专业统计软件中进行高级统计分析。

四、便捷部署与低依赖特性

仅依赖 ncurses 库,避免了复杂的软件依赖关系,使得其在类 Unix 系统(如各种 Linux 发行版、MacOS 等)上的部署极为简便。无论是在本地服务器环境还是云端服务器环境中,都能快速安装并投入使用,减少了因软件依赖问题导致的安装失败风险和部署时间成本,提高了工具的可用性和可操作性。

五、安装使用:

安装

# Debian/Ubuntu
apt-get install goaccess
# Fedora
yum install goaccess
# Arch Linux
pacman -S goaccess
# OS X / Homebrew
brew install goaccess
# Docker
docker pull allinurl/goaccess:latest

使用

确定你的网络日志文件路径,例如,如果是 Nginx 的访问日志,路径可能是 /var/log/nginx/access.log。

goaccess /var/log/nginx/access.log -a -o report.html --log-format=COMBINED
-a 表示启用实时分析模式,
-o report.html 生成 HTML 报告,用于可视化呈现数据;
-o report.json 输出 JSON 格式便于数据集成;
-o report.csv 生成 CSV 格式利于数据分析与处理。
--log-format=COMBINED 是指定日志格式为 Nginx 的 COMBINED 格式。如果是其他类型的日志,如 Apache 的通用日志格式,则需要相应调整 --log-format 参数。

docker使用

# 基本报告
cat access.log | docker run --rm -i -e LANG=$LANG allinurl/goaccess -a -o html --log-format COMBINED - > report.html
# 实时报告
tail -F access.log | docker run -p 7890:7890 --rm -i -e LANG=$LANG allinurl/goaccess -a -o html --log-format COMBINED --real-time-html - > report.html

具体参数可以参考文档

文档地址:https://goaccess.io/man

原创 字节航海家

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/851172.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

canvas生成图片有没有跨域问题?如果有如何解决?

Canvas 生成图片本身不会直接导致跨域问题,但是如果 Canvas 使用的图片资源来自不同的域,就会出现跨域问题。 这是因为浏览器出于安全考虑,限制了从一个域加载的脚本访问另一个域的资源。 具体来说,如果你的 Canvas 画布绘制了来自其他域的图片,然后你试图使用 toDataURL…

如何垂直居中`img`?

有多种方法可以垂直居中 <img> 元素,选择哪种方法取决于 <img> 元素的上下文以及你想要达到的具体效果。以下是一些常用的技巧: 1. Flexbox: 这是现代布局中最推荐的方法,因为它简洁且灵活。 <div style="display: flex; align-items: center; justify…

ubuntu20.04.6配置虚拟VCAN

开启vcan设备的命令: sudo ip link add dev vcan0 type vcan 如果没有vcan模块,则先用modprobe命令生成vcan模块: sudo modprobe vcan 如果模块/lib/modules/linux-headers-$(uname -r)下没有vcan.ko,则无法创建vcan模块,需安装linux-headers-$(uname -r): sudo apt inst…

ubuntu20.04.6虚拟机workstation网络配置

步骤1: 设置VMware workstation的虚拟网络编辑器,添加NAT网络:步骤2: 在本地真实主机上设置设置虚拟网络共享,允许其他机器通过本机访问网络。步骤3: 将在创建的虚拟机上配置网络,如下图:图中位置鼠标右键选择设置,将网络改为custom自定义-nat模式

新型知识付费生态系统

新型知识付费生态系统作为教育与软件行业的融合产物,已经成为推动知识传递与商业成功的核心驱动力之一。该生态系统通过一系列前沿科技应用来提升学习体验并实现资源的最佳匹配,从而重塑了在线教育行业的面貌。下面对知识付费在线教育系统的背景、现状和未来趋势进行全面分析…

转载:【AI系统】LLVM 架构设计和原理

在上一篇文章中,我们详细探讨了 GCC 的编译过程和原理。然而,由于 GCC 存在代码耦合度高、难以进行独立操作以及庞大的代码量等缺点。正是由于对这些问题的意识,人们开始期待新一代编译器的出现。在本文,我们将深入研究 LLVM 的架构设计和原理,以探索其与 GCC 不同之处。 …

山西在线教育系统公司

山西在线教育系统行业在近年来展现出蓬勃的发展态势。众多企业在这一领域积极探索并不断推陈出新。以山西交通在线教育培训平台为例,该平台不仅为交通运输系统的党员干部提供了高质量的线上直播培训课程,还显著提高了其学习效果与便捷度。山西在线教育系统作为教育的重要组成…

论文解读-A Comprehensive Survey on Graph Neural Networks

论文介绍论文是2019年定稿的,算是比较陈旧的论文,综述性质的论文。 论文发表于IEEE Transactions on Neural Networks and Learning Systems, 2021。质量挺高的。 论文主要工作论文提出了一个新的图神经网络的分类方法,把图神经网络分为四类:循环图神经网络,卷积图神经网…

基于GoogleNet深度学习网络的手语识别算法matlab仿真

1.算法运行效果图预览 (完整程序运行后无水印)手语How are you,测试识别结果如下:手语I am fine,测试识别结果如下:手语I love you,测试识别结果如下: 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)%% Dataset = imageDat…

vxe-table 实现任意列拖拽排序

vxe-table 实现任意列拖拽排序,通过 column-drag-config.isCrossDrag 启用任意列拖拽排序,除了自身之外。 官网:https://vxetable.cn启用后可以在不同表头直接任意拖拽,需要注意所有列必须有 field 属性 <template><div><vxe-grid v-bind="gridOptions…

医疗花费预测(保姆级教程)

目标 想要一开始快速抓住一个实验的方向,我觉得一个好方法就是抓住实验目的。 本实验:根据一个人的年龄、性别、BMI、子女个数、是否吸烟和生活地区,预测这个人在医疗方面花费的金额。 线性回归 这里我想问个问题,线性回归是什么,或者说针对于DBSCAN聚类算法之后得到的样本…

在CodeBolcks+wxWidgets+wxSmith下的C++编程教程——用向导创建一个wxWidgets项目(sTetris)

0.前言 我想通过编写一个完整的游戏程序方式引导读者体验程序设计的全过程。我将采用多种方式编写具有相同效果的应用程序,并通过不同方式形成的代码和实现方法的对比来理解程序开发更深层的知识。 了解我编写教程的思路,请参阅体现我最初想法的那篇文章中的“1.编程计划”:…