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):这样的循环来遍历日期范围,并调用前面定义的函数来获取文件名和执行分析。
  • 第二步:运行python脚本。你需要在服务器上运行你编写的python脚本,或者将其设置为定时任务,每天自动运行。5 这样就可以实现自动分析每天的nginx日志,并输出每天的报告了。

  • 第三步:查看报告。需要在浏览器上查看生成的HTML报告,或者使用其他工具查看JSON或CSV格式的报告。12 如果你想通过界面的方式分析某段时间的报告,比如将好几天的报告整合到一起一并分析,那么你可以使用goaccess提供的增长日志处理功能。6 这个功能允许你将多个日志文件合并到一个数据库中,并从中生成一个综合报告。6

还会持续补充。。

志处理功能。](about:blank#)6 这个功能允许你将多个日志文件合并到一个数据库中,并从中生成一个综合报告。6

还会持续补充。。

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

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

相关文章

nbcio-boot移植到若依ruoyi-nbcio平台里一formdesigner部分(三)

因为这个版本的若依plus不支持本地文件上传&#xff0c;所以需要增加这些本地上传文件的后端代码 和前端代码修改。 1、后端部分 先配置跳过测试吧&#xff0c;平时编译也不需要这个 <!--添加配置跳过测试--><plugin><groupId>org.apache.maven.plugins<…

新增动态排序图、桑基图、AntV组合图,DataEase开源数据可视化分析平台v1.18.10发布

2023年9月14日&#xff0c;DataEase开源数据可视化分析平台正式发布v1.18.10版本。 这一版本的功能升级包括&#xff1a;数据集方面&#xff0c;对字段管理的后台保存做了相关优化&#xff0c;降低了资源消耗&#xff1b;仪表板方面&#xff0c;对联动、查询结果以及过滤组件等…

分享!JetBrains IDE中的GitLab支持

GitLab是流行的基于git的软件开发和部署平台之一&#xff0c;虽然很长一段时间以来&#xff0c;所有基本git操作都已经可以通过GitLab实现&#xff0c;但GitLab集成仍是JetBrains社区的一大最热门请求。为此&#xff0c;JetBrains团队今年与GitLab联手提供了这种类型的集成。 …

PWA及小程序在系统生态方面的支持对比

PWA代表“渐进式网络应用”&#xff08;Progressive Web Application&#xff09;。它是一种结合了网页和移动应用程序功能的技术概念。PWA旨在提供类似于原生应用程序的用户体验&#xff0c;包括离线访问、推送通知、后台同步等功能&#xff0c;同时又具有网页的优势&#xff…

SQL SERVER 中无法删除table ‘biao’,因为它不存在或者您不具备相应的权限

删除table表 1.删除表示提示&#xff1a;SQL SERVER 中无法删除table ‘biao’&#xff0c;因为它不存在或者您不具备相应的权限。2.原因3.解决方法3.1 图3.2 图3.3 图3.4 图 1.删除表示提示&#xff1a;SQL SERVER 中无法删除table ‘biao’&#xff0c;因为它不存在或者您不具…

Linux基础入门

一、操作系统安装方法 1、使用u盘安装 工具&#xff08;前提条件&#xff09;&#xff1a; <1>u盘 <2>镜像文件iso/msdn.itellyou.cn <3>把u盘做成PE&#xff1a;大白菜/老毛桃/winPE/软碟通/ultralSO 设置BIOS&#xff1a;通过u盘启动 安装系统&…

go 包的引入

本文介绍下下go包的管理&#xff0c;以linux平台为例。 先看下目录结构&#xff1a; test目录下的test.go test2目录下的test.go 主函数的调用 此时执行会报错&#xff0c;需要用mod进行包的管理,执行下面命令 go mod init godir 生成go.mod文件 执行结果&#xff1a;

【Spring Boot】数据缓存Redis实现高并发 —— Redis入门

&#x1f33f;欢迎来到衍生星球的CSDN博文&#x1f33f; &#x1f341;本文主要学习Redis的入门 &#x1f341; &#x1f331;我是衍生星球&#xff0c;一个从事集成开发的打工人&#x1f331; ⭐️喜欢的朋友可以关注一下&#x1faf0;&#x1faf0;&#x1faf0;&#xff0c;…

【Redis】深入探索 Redis 的数据类型 —— 列表 List

文章目录 一、List 类型介绍二、List 类型相关命令2.1 LPUSH 和 RPUSH、LPUSHX 和 RPUSHX2.2 LPOP 和 RPOP、BLPOP 和 BRPOP2.3 LRANGE、LINDEX、LINSERT、LLEN2.4 列表相关命令总结 三、List 类型内部编码3.1 压缩列表&#xff08;ziplist&#xff09;3.2 链表&#xff08;lin…

1-5 AUTOSAR数据交换文件ARXML

总目录——AUTOSAR入门详解AUTOSAR入门详解目录汇总&#xff1a;待续中。。。https://xianfan.blog.csdn.net/article/details/132818463 目录 一、Arxml文件 二、各类ARXML文件 一、Arxml文件 arxml文件是AUTOSAR&#xff08;Automotive Open System Architecture&#xff0…

nbcio-boot移植到若依ruoyi-nbcio平台里一formdesigner部分(四)

到目前为止&#xff0c;虽然基础的formdesigner部分已经完成&#xff0c;但流程用formdesigner提交与审批过程中的显示还有问题。 1、后端部分 其中FormConf修改如下&#xff1a; package com.ruoyi.flowable.core;import lombok.Data;import java.util.List; import java.uti…

Python用若干列的数据多条件筛选、去除Excel数据并批量绘制直方图

本文介绍基于Python&#xff0c;读取Excel数据&#xff0c;以一列数据的值为标准&#xff0c;对这一列数据处于指定范围的所有行&#xff0c;再用其他几列数据数值&#xff0c;加以筛选与剔除&#xff1b;同时&#xff0c;对筛选与剔除前、后的数据分别绘制若干直方图&#xff…

微信小程序的疫苗接种预约设计与实现vue+uniapp

对于本小程序的疫苗预约的设计来说&#xff0c;系统开发主要是采用java语言&#xff0c;在整个系统的设计中应用MySql数据库来完成数据存储&#xff0c;具体根据疫苗预约信息的现状来进行开发的&#xff0c;具体根据现实的需求来实现疫苗预约网络化的管理&#xff0c;各类信息有…

一线大厂Redis高并发缓存架构实战与性能优化

多级缓存架构 缓存设计 缓存穿透 缓存穿透是指查询一个根本不存在的数据&#xff0c; 缓存层和存储层都不会命中&#xff0c; 通常出于容错的考虑&#xff0c; 如果从存储层查不到数据则不写入缓存层。 缓存穿透将导致不存在的数据每次请求都要到存储层去查询&#xff0c; 失…

图像处理的创意之旅:逐步攀登Python OpenCV的高峰

目录 介绍OpenCV简介安装OpenCV加载和显示图像图像处理目标检测图像处理的高级应用视频处理综合案例&#xff1a;人脸识别应用总结 介绍 欢迎来到本篇文章&#xff0c;我们将一起探索如何使用Python中的OpenCV库进行图像处理和计算机视觉任务。无论您是初学者还是有一定编程…

系统架构设计师-数据库系统(1)

目录 一、数据库模式 1、集中式数据库 2、分布式数据库 二、数据库设计过程 1、E-R模型 2、概念结构设计 3、逻辑结构设计 三、关系代数 1、并交差 2、投影和选择 3、笛卡尔积 4、自然连接 一、数据库模式 1、集中式数据库 三级模式&#xff1a; &#xff08;1&#xff09;外…

爬虫逆向实战(33)-某联社数据(webpack)

一、数据接口分析 主页地址&#xff1a;某联社 1、抓包 通过抓包可以发现数据接口是/nodeapi/telegraphList 2、判断是否有加密参数 请求参数是否加密&#xff1f; 通过查看“载荷”模块可以发现有一个sign加密参数 请求头是否加密&#xff1f; 无 响应是否加密&#x…

嵌入式学习笔记(31)异常向量表的编程处理

6.5.1像内存一样去访问异常向量表 &#xff08;1&#xff09;S5PV210的异常向量表可以改变&#xff08;在CP15协处理器中&#xff09;&#xff0c;以适应操作系统的需求。但是目前系统刚启动&#xff0c;此时DRAM尚未初始化&#xff0c;程序哦都市在iSRAM中运行。210在iSRAM中…

K8S集群中部署服务之应用环境配置

微服务项目sangomall应用环境配置说明 一、应用环境配置文件创建 可以创建多个application.properties或application.yml文件,通过关键配置进行激活使用&#xff0c;例如测试环境和生产环境等。 1.1 创建开发环境&#xff08;dev&#xff09; 名称&#xff1a;application-…

炒期权的资金门槛是多少 ?

期权是一种合约&#xff0c;买方向卖方支付一定费用后有权利在特定的时间&#xff0c;以特定的价格买入或卖出一定数量的特定资产&#xff0c;卖方需履行相应义务&#xff0c;期权开户支持线上和零门槛开头&#xff0c;下文介绍炒期权的资金门槛是多少 ?本文来自&#xff1a;期…