goaccess 日志分析 nginx
分析命令:
goaccess -a -d -f /mnt/winshare/access-2023070112.log -p goaccess.conf -o /mydata/nginx/html/2023070112_new.html
分析日志时的参数
goaccess使用参数详解-a 开启 UserAgent 列表。开启后会降低解析速度
-c 在程序开始运行时显示 日志/日期 配置窗口
-d 输出 HTML 或者 JSON 报告时开启 IP 解析
-f 指定输入日志文件的路径
-p 指定使用自定义配置文件
面板统计含义:
官网描述:goaccess.io/man#description
界面测试统计地址(我本机)
Server Statistics

nginx 日志参数详解
参数 说明 示例
$remote_addr 客户端地址 172.17.0.1
$remote_user 客户端用户名称 --
$time_local 访问时间和时区 [29/Dec/2022:10:17:14 +0000]
$request 请求的URI和HTTP协议 "GET /test/nginx/proxy HTTP/1.1"
$http_host 请求地址,即浏览器中你输入的地址(IP或域名) 10.1.7.33
$status HTTP请求状态 200
$upstream_status upstream状态 200
$body_bytes_sent 发送给客户端文件内容大小 38
$http_referer url跳转来源 -
$http_user_agent 用户终端浏览器等信息 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
$http_cookie 用户cookie信息 "grafana_session=73d13d456cb4363f8a48f5501348669e"
$ssl_protocol SSL协议版本 TLSv1
$ssl_cipher 交换数据中的算法 RC4-SHA
$upstream_addr 后台upstream的地址,即真正提供服务的主机地址 "10.1.7.33:8102"
$request_time 整个请求的总时间 0.012
$upstream_response_time 请求过程中,upstream响应时间 0.012
重点说一下 request_time
$request_time是Nginx日志中的一个变量,表示请求处理时间,单位是秒,精度是毫秒。它反映了从Nginx开始接收客户端请求的第一个字节,到发送完响应数据给客户端的时间。这个时间包括了接收请求数据的时间、后端程序响应的时间、发送响应数据给客户端的时间,但不包括写日志的时间。
如果你想使用$request_time变量,你需要在Nginx的配置文件中设置log_format指令,定义你想要记录的日志格式。例如,你可以这样设置:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'"$request_time"';
这样,你就可以在每条日志中看到$request_time的值。例如:
192.168.1.100 - - [23/Sep/2023:10:15:32 +0800] "GET /index.html HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36" "-" "0.012"
这里,最后一个字段"0.012"就是$request_time的值,表示这个请求处理了12毫秒。
r e q u e s t t i m e 变量可以帮助你分析 N g i n x 的性能和吞吐量,以及后端程序的响应情况。你可以根据 request_time变量可以帮助你分析Nginx的性能和吞吐量,以及后端程序的响应情况。你可以根据 requesttime变量可以帮助你分析Nginx的性能和吞吐量,以及后端程序的响应情况。你可以根据request_time的值来判断哪些请求比较慢,是否有超时或错误发生,是否需要优化程序或调整配置等。
Nginx: PV、UV、独立IP
做网站的都知道,平常经常要查询下网站PV、UV等网站的访问数据,当然如果网站做了CDN的话,nginx本地的日志就没什么意义了,下面就对nginx网站的日志访问数据做下统计;
**UV(Unique Visitor):**独立访客,将每个独立上网电脑(以cookie为依据)视为一位访客,一天之内(00:00-24:00),访问您网站的访客数量。一天之内相同cookie的访问只被计算1次
**PV(Page View):**访问量,即页面浏览量或者点击量,用户每次对网站的访问均被记录1次。用户对同一页面的多次访问,访问量值累计
统计独立IP:00:00-24:00内相同IP地址只被计算一次,做网站优化的朋友最关心这个
goaccess中统计的指标参数解释
TX AMOUNT 是性能测试中的一个指标,表示每秒事务数(Transaction Per Second),也就是单位时间内系统能处理的事务数量。事务是指用户和系统之间的一次交互,比如登录、查询、支付等。TX AMOUNT 反映了系统的处理能力和吞吐量,与响应时间、并发数等指标有关。
HITS 是性能测试中的一个指标,表示Hits Per Second,也就是每秒请求数。HITS反映了系统的吞吐量,也就是单位时间内系统能处理的请求数量。HITS与TPS(每秒事务数)有一定的关系,但不完全相同。一个事务可能包含多个请求,比如一个网页可能包含多个图片、CSS、JS等文件的请求。因此,HITS一般会大于TPS。
AVG.T.S:Average Time Served,表示每个请求的平均服务时间,单位是秒。它反映了从Nginx开始接收客户端请求的第一个字节,到发送完响应数据给客户端的平均时间。这个时间包括了接收请求数据的时间、后端程序响应的时间、发送响应数据给客户端的时间,但不包括写日志的时间。
CUM.T.S:Cumulative Time Served,表示每个请求的累计服务时间,单位是秒。它反映了从Nginx开始接收客户端请求的第一个字节,到发送完响应数据给客户端的总时间。它是所有请求的AVG.T.S之和。
MAX.T.S:Maximum Time Served,表示每个请求的最大服务时间,单位是秒。它反映了从Nginx开始接收客户端请求的第一个字节,到发送完响应数据给客户端的最长时间。它是所有请求中最慢的一个。
要显示这三列,你需要在你的日志格式中包含服务时间字段,你可以使用%T或%D指定符来解析这个字段。 例如,如果你使用Apache的combined日志格式,你可以在字符串的末尾添加%D来启用这三列。
标准配置
如何让goaccess统计出请求的服务时间?
配置nginx日志格式如下:
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" ''$upstream_addr $request_time $upstream_response_time ';
配置goaccess log-format的格式如下
time-format %H:%M:%S
date-format %d/%b/%Y
log-format %h - %^ [%d:%t %^] "%r" %s %b "%R" "%u" "%^" %^ %T %T
nginx日志输出格式如下
192.168.56.1 - - [14/Sep/2023:03:02:53 +0000] "GET /cc/ HTTP/1.1" 200 15567 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.76" "-" 123.121.155.167:16002 0.433 0.432
192.168.56.1 - - [14/Sep/2023:03:02:56 +0000] "GET /cc/ HTTP/1.1" 200 15567 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.76" "-" 123.121.155.167:16002 0.330 0.330
192.168.56.1 - - [14/Sep/2023:03:02:57 +0000] "GET /cc/ HTTP/1.1" 200 15567 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.76" "-" 123.121.155.167:16002 0.367 0.367
以后goaccess 会支持到什么程度,以下是我在官网提出的问题并給出的答复
github.com/allinurl/goaccess/issues/2556
有关实际应用
问题:goaccess 如何做到自动分析 nginx日志,nginx日志是按天切割的。我如果想借助python去自动分析每天的日志,并输出每天的报告。并且也能通过界面的方式 分析某段时间的报告,比如将好几天的报告整合到一起 一并分析。下面提供一个详细的设计和开发方案
**回答:**goaccess是一款开源的实时Web日志分析工具,可以通过终端或浏览器查看Web服务器的统计信息。goaccess支持多种日志格式,包括nginx的日志格式,也可以自定义日志格式。goaccess可以生成静态的HTML报告,也可以生成实时的HTML报告,还可以生成JSON和CSV格式的报告。
要实现你的需求,我为你提供一个可能的设计和开发方案,如下:
-
第一步:编写python脚本。你需要编写一个python脚本,用于自动分析每天的nginx日志,并输出每天的报告。你可以参考
这篇文章
来了解如何使用python调用goaccess。你的脚本大致需要实现以下功能:
- 定义一个函数,用于根据日期获取对应的nginx日志文件名。例如,如果你的nginx日志是按天切割的,并且命名为
access.log-20210901这样的格式,那么你可以根据日期参数拼接出文件名。 - 定义一个函数,用于根据日期获取对应的报告文件名。例如,如果你想生成HTML报告,并且命名为
report-20210901.html这样的格式,那么你也可以根据日期参数拼接出文件名。 - 定义一个函数,用于调用goaccess命令,传入日志文件名和报告文件名作为参数,执行日志分析并输出报告。例如,你可以使用类似于
os.system('goaccess -f {} -o {} --log-format=COMBINED'.format(log_file, report_file))这样的语句来执行goaccess命令。 - 定义一个主函数,用于遍历指定的日期范围,对每一天的日志进行分析,并生成每一天的报告。例如,你可以使用类似于
for date in pd.date_range(start_date, end_date):这样的循环来遍历日期范围,并调用前面定义的函数来获取文件名和执行分析。
- 定义一个函数,用于根据日期获取对应的nginx日志文件名。例如,如果你的nginx日志是按天切割的,并且命名为
-
第二步:运行python脚本。你需要在服务器上运行你编写的python脚本,或者将其设置为定时任务,每天自动运行。5 这样就可以实现自动分析每天的nginx日志,并输出每天的报告了。
-
第三步:查看报告。需要在浏览器上查看生成的HTML报告,或者使用其他工具查看JSON或CSV格式的报告。12 如果你想通过界面的方式分析某段时间的报告,比如将好几天的报告整合到一起一并分析,那么你可以使用goaccess提供的增长日志处理功能。6 这个功能允许你将多个日志文件合并到一个数据库中,并从中生成一个综合报告。6
还会持续补充。。
志处理功能。](about:blank#)6 这个功能允许你将多个日志文件合并到一个数据库中,并从中生成一个综合报告。6
还会持续补充。。
相关文章:
goaccess 日志分析 nginx
分析命令: goaccess -a -d -f /mnt/winshare/access-2023070112.log -p goaccess.conf -o /mydata/nginx/html/2023070112_new.html分析日志时的参数 goaccess使用参数详解-a 开启 UserAgent 列表。开启后会降低解析速度 -c 在程序开始运行时显示 日志/日期 配…...
认养一头牛———众筹+合伙人商业模式解析
2016年成立以来,认养一头牛致力于打造数字化乳业第一品牌,只为一杯好牛奶。公司在创立三年内完成了10个亿销售目标,被业界称为新消费品牌黑马,一举闯入互联网新消费梯队的视线。未来三年,认养一头牛将着力打造全国最大…...
前端面试的话术集锦第 11 篇:高频考点(React和Vue两大框架)
这是记录前端面试的话术集锦第十一篇博文——高频考点(React和Vue两大框架),我会不断更新该博文。❗❗❗ React 和Vue应该是国内当下最火热的前端框架。当然,Angular也是一个不错的框架,但是这个产品,国内使用的人很少,因而,框架的章节中不会涉及到Angular的内容。 这…...
前端js下载zip文件异常问题解决
目录 一,本文解决问题如下 二,原下载代码 1,ajax get 下载文件 2,下载异常图: 三,成功下载的 1, JQuery 实现文件下载xhr 2,图例 引言: 本人使用的ajax 下载&…...
深度学习面试八股文(2023.9.06)
一、优化器 1、SGD是什么? 批梯度下降(Batch gradient descent):遍历全部数据集算一次损失函数,计算量开销大,计算速度慢,不支持在线学习。随机梯度下降(Stochastic gradient desc…...
Linux入门-网络基础|网络协议|OSI七层模型|TCP/IP五层模型|网络传输基本流程
文章目录 一、网络基础 二、网络协议 1.OSI七层模型 2.TCP/IP五层(或四层)模型 三、网络传输基本流程 1.网络传输流程图 2.数据包封装和分用 四、网络中的地址管理 1.IP地址 2.MAC地址 一、网络基础 网络发展最初是独立模式,即计算…...
docker系列(2) - 常用命令篇
文章目录 2. docker常用命令2.1 参数说明(tomcat案例)2.2 基本命令2.3 高级命令2.4 其他 2. docker常用命令 2.1 参数说明(tomcat案例) 注意如果分成多行,\后面不能有空格 # 拉取运行 docker run \ -d \ -p 8080:8080 \ --privilegedtrue \ --restartalways \ -m…...
Debian11安装MySQL8.0,链接Navicat
图文小白教程 1 下载安装MySQL1.1 从MySQL官网下载安装文件1.2 安装MySQL1.3 登录MySQL 2 配置Navicat远程访问2.1 修改配置2.2 Navicat 连接 end: 卸载 MySQL 记录于2023年9月,Debian11 、 MySQL 8.0.34 1 下载安装MySQL 1.1 从MySQL官网下载安装文件 打开 MySQ…...
vue项目中使用特殊字体的步骤
写在前面 在项目中使用特殊字体,需要注意,所使用的特殊字体是否被允许商用或是个人开发,以及如何使用,切记不要侵权。 首先需要在对应字体网站下载字体文件,取出里面后缀名为.ttf的文件 然后把该文件放到src -> ass…...
激光雷达检测负障碍物(附大概 C++ 代码)
检测效果如图,红色是正负的障碍物点: 障碍物根据其相对于地面的高度可以分为两类:正向障碍物和负向障碍物。在室外环境中,负障碍物是沟渠、悬崖、洞口或具有陡峭负坡度的地形,可能会造成安全隐患。 不慎通过道路坑洼处…...
【每日一题】9.13 PING是怎么工作的?
PING命令的作用是什么? PING命令是计算机网络中常用的命令之一,它的作用是测试两台计算机之间的连通性以及测量数据包往返的时间。 PING命令的工作原理是什么? PING命令的工作原理涉及到ICMP(Internet Control Message Protocol)和网络协议栈的操作: 1.发送ICMP …...
【Python百日进阶-Web开发-Peewee】Day279 - SQLite 扩展(四)
文章目录 12.2.10 class FTSModel 12.2.10 class FTSModel class FTSModel与FTS3 和 FTS4 全文搜索扩展VirtualModel一起使用的子类。 FTSModel 子类应该正常定义,但是有几个注意事项: 不支持唯一约束、非空约束、检查约束和外键。字段索引和多列索引…...
Postman接口压力测试 ---- Tests使用(断言)
所谓断言,主要用于测试返回的数据结果进行匹配判断,匹配成功返回PASS,失败返回FAIL。 下图方法一,直接点击右侧例子函数,会自动生成出现在左侧窗口脚本,只需修改数据即可。 方法二:直接自己写脚…...
nvue文件中@click.stop失效
在nvue文件中在子元素使用click.stop失效,父元素的事件触发了 在uniapp开发中nvue文件是跟vue文件是不一样的,就比如click.stop阻止点击事件继续传播就失效了,这时我们需要在子元素事件中添加条件编译,这样就会解决这个问题 // …...
【微信小程序开发】宠物预约医疗项目实战-开发功能介绍
【微信小程序开发】宠物医院项目实战-开发功能介绍 前言 本项目主要带领大家学习微信小程序开发技术,通过一个完整的项目系统的学习微信小程序的开发过程。鉴于一些同学对视频教学跟不上节奏,为此通过图文描述的方式,完整的将系统开发过程记…...
vue网页缓存页面与不缓存页面处理
在主路由页面 <template><div style"height: 100%"><!-- 缓存 --><keep-alive><router-view v-if"$route.meta.keepAlive"></router-view></keep-alive><!-- 不缓存 --><router-view v-if"!$rou…...
AI系统论文阅读:SmartMoE
提出稀疏架构是为了打破具有密集架构的DNN模型中模型大小和计算成本之间的连贯关系的——最著名的MoE。 MoE模型将传统训练模型中的layer换成了多个expert sub-networks,对每个输入,都有一层special gating network 来将其分配到最适合它的expert中&…...
AD20多层板设计中的平电层设计规则
一般情况下的多层板设计非常复杂,尤其层叠的次序以及平电层的电源层设计,Gnd层的设计比较简单,不需要过多的关注,但是电源层的设计非常关键,常常让人感到无法下手的感觉,这里介绍一个简单的防盲很快的让你上…...
压力测试有哪些评价指标
在进行压力测试时,您可以评估多个指标来确定系统的性能和稳定性。以下是一些常见的压力测试评价指标: 响应时间(Response Time): 平均响应时间:请求的平均处理时间。 最大响应时间:最长处理时…...
简单 php结合WebUploader实现文件上传功能
WebUploader 资源下载 http://fex.baidu.com/webuploader/download.html WebUploader 使用方法 http://fex.baidu.com/webuploader/getting-started.html php 上传代码 <?php header(Content-type:text/html;charsetutf-8);if($_FILES[file][error] 0){ // 判断上传是…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
