Nginx access.log日志详解及统计分析

news2024/11/17 7:46:58

Nginx access.log日志详解及统计分析

  • 一、nginx的access.log
  • 二、日志流量统计
    • 统计接口地址访问量
    • PV统计
    • UV统计
    • 独立IP统计
  • 三、配置access.log按天生成
  • 四、nginx.conf配置

一、nginx的access.log

1.日志文件一般存放在 /var/log/nginx 下,若是docker启动则可以使用主机挂载位置,直接使用 tail -f命令即可查看access日志。

2.access.log具体每项的含义:

参数  说明  示例
$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

3.access.log 的格式是可以自己自定义,输出的信息格式在nginx.conf中设置
在这里插入图片描述
可以在location中增加header,输出用户代理服务器地址

location /test/ {
	#limit_req zone=allips burst=1 nodelay;
 
	proxy_pass http://myServer/test/;
	proxy_set_header Host $host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header REMOTE-HOST $remote_addr;
	#代理服务器地址
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	client_max_body_size 8m;
}

二、日志流量统计

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地址只被计算一次,做网站优化的朋友最关心这个

日志统计分析,日志内容如下:

root@DESKTOP-0NVFL1I:/home/volumes/nginx_vts/log# tail -f access.log
172.17.0.1 - [30/Dec/2022:02:17:19 +0000] "GET /test/nginx/proxy HTTP/1.1" "10.1.7.33" 200 200 38 "-" "grafana_session=73d13d456cb4363f8a48f5501348669e" "-" "10.1.7.33:8101" 0.008 0.008
172.17.0.1 - [30/Dec/2022:02:17:20 +0000] "GET /test/nginx/proxy HTTP/1.1" "10.1.7.33" 200 200 38 "-" "grafana_session=73d13d456cb4363f8a48f5501348669e" "-" "10.1.7.33:8102" 0.016 0.016
172.17.0.1 - [30/Dec/2022:02:19:55 +0000] "GET /test/nginx/proxy HTTP/1.1" "10.1.7.33" 200 200 38 "-" "grafana_session=73d13d456cb4363f8a48f5501348669e" "-" "10.1.7.33:8101" 0.010 0.010
172.17.0.1 - [30/Dec/2022:02:19:56 +0000] "GET /test/nginx/proxy HTTP/1.1" "10.1.7.33" 200 200 38 "-" "grafana_session=73d13d456cb4363f8a48f5501348669e" "-" "10.1.7.33:8102" 0.011 0.011

统计接口地址访问量

grep /test access.log | wc -l

PV统计

awk '{print $6}' access.log | wc -l

UV统计

awk '{print $13}' access.log | sort -r |uniq -c |wc -l

独立IP统计

awk '{print $1}' access.log | sort -r |uniq -c | wc -l

三、配置access.log按天生成

1.nginx.conf配置文件http代码块中修改成如下代码

在这里插入图片描述

#配置按天生成access.log日志文件
map $time_iso8601 $logdate {
   		'~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd;
   		default    'date-not-found';
}
#access_log  /var/log/nginx/access.log  main;
access_log /var/log/nginx/access-$logdate.log main;
error_log  /var/log/nginx/error.log;

2.重启nginx,再次访问接口,并查看日志,日志按天生成

root@DESKTOP-0NVFL1I:/home/volumes/nginx_vts/log# ll
-rwxrwxrwx 1 buckletime buckletime   744 Dec 30 11:14 access-2022-12-30.log
-rwxrwxrwx 1 buckletime buckletime   744 Dec 30 10:19 access.log
-rw-r--r-- 1 root       root       12586 Dec 30 10:14 error.log

若权限不够则,修改日志文件权限

chmod -R 777 /var/log/nginx/

四、nginx.conf配置

附上完整的nginx.conf配置

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
	#开启nginx监控模块
	vhost_traffic_status_zone;
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr $remote_user [$time_local] "$request" '
					  '"$http_host" $status $upstream_status '
                      '$body_bytes_sent "$http_referer" '
                      '"$http_cookie" "$http_x_forwarded_for" '
					  '"$upstream_addr" $request_time $upstream_response_time';

    #配置按天生成日志文件
	map $time_iso8601 $logdate {
    		'~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd;
    		default    'date-not-found';
	}
 
    #access_log  /var/log/nginx/access.log  main;
    access_log /var/log/nginx/access-$logdate.log main;
    error_log  /var/log/nginx/error.log;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    #include /etc/nginx/conf.d/*.conf;
	
	upstream myServer{
		server  10.1.7.33:8101;
		server  10.1.7.33:8102;
	}
	
	server {
        listen       80;
        server_name  10.1.7.33;
		
		root         /usr/share/nginx/html;
		
		location /test/ {
			#limit_req zone=allips burst=1 nodelay;
	  
			proxy_pass http://myServer/test/;
			proxy_set_header Host $host;
			#用户的真实ip
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header Cookie $http_cookie;
			#用户的真实ip和经过的每一层代理服务器的ip
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			client_max_body_size 8m;
		}
		
		#nginx状态监控接口
		#location /status {
		#	vhost_traffic_status_display;
        #   vhost_traffic_status_display_format html;
		#}

	}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

奇舞周刊 477 期:一文弄懂 React ref 原理

记得点击文章末尾的“ 阅读原文 ”查看哟~下面先一起看下本期周刊 摘要 吧~奇舞推荐■ ■ ■一文弄懂 React ref 原理对于 Ref 理解与使用&#xff0c;一些读者可能还停留在用 ref 获取真实 DOM 元素和获取类组件实例层面上 其实 ref 除了这两项常用功能之外&#xff0c;还有很…

简单通过Sentinel监控请求

文章目录一&#xff1a;运行Sentinel服务二&#xff1a;安装Sentinel依赖2.1&#xff1a;Sentinel Pom依赖2.2&#xff1a;Sentinel YML 配置注意&#xff1a;clientIp.localhost不同sentinel版本依赖缩进层级结构可能不一样&#xff0c;可根据idea提示回车三&#xff1a;启动服…

年终给您提个醒:明年的分区表创建好了吗?

2022年某月&#xff0c;某运营商客户突然出现部分业务办理失败&#xff0c;数据无法入库的现象......经过查询&#xff0c;应用进程insert提示&#xff1a;“ORA-14400”错误。由此诊断&#xff0c;故障出现是由于上月部分表分区未提前创建&#xff0c;导致本月前端业务在导入数…

130道基础OJ编程题之: 47 ~ 57 道

130道基础OJ编程题之: 47 ~ 57 道 文章目录130道基础OJ编程题之: 47 ~ 57 道0. 昔日OJ编程题:47. BC50 计算单位阶跃函数48. BC51 三角形判断49. BC52 衡量人体胖瘦程度50. BC53 计算一元二次方程51. BC54 获得月份天数52. BC55 简单计算器53. BC56 线段图案54. BC57 正方形图案…

【生信】初探蛋白质性质和结构分析

实验目的 熟悉蛋白质序列和结构的主要分析内容在实践中逐步理解蛋白质序列和结构的主要分析算法的基本原理 实验内容 综合使用多种在线工具&#xff0c;对蛋白质的一级、二级和三级结构进行分析和预测综合使用多种在线工具&#xff0c;对蛋白质的跨膜结构、翻译后修饰、亚细…

第二十八讲:神州路由器地址转换的配置

实验拓扑图如下所示 设置内网地址段为192.168.0.0,S0/1为外网出口。通过nat访问192.168.2.0网段。 操作步骤&#xff1a; 步骤1&#xff1a;连接网络拓扑结构图。 步骤2&#xff1a;配置计算机的IP地址、子网掩码和网关。 步骤3&#xff1a;设置Router-B的接口IP地址和DCE的…

linux0.11+Bochs环境搭建和使用

Linux 系统的创始人在一篇新闻组投稿上所说的&#xff0c;要理解一个软件系统的真正运行机制&#xff0c;一定 要阅读其源代码&#xff08;RTFSC – Read The Fucking Source Code&#xff09;。系统本身是一个完整的整体&#xff0c;具有很多看似 不重要的细节存在&#xff0c…

声明式事物的属性之只读、超时、回滚策略

声明式事物的属性之只读、超时、回滚策略 1. 事务属性&#xff1a;只读 ①介绍 对一个查询操作来说&#xff0c;如果我们把它设置成只读&#xff0c;就能够明确告诉数据库&#xff0c;这个操作不涉及写操作。这样数据库就能够针对查询操作来进行优化。 ②使用方式 Overri…

zabbix报警方式,邮件报警和微信报警。

整理csdn时候发现了一篇2016年整理zabbix报警不知道当时啥情况没有发布出去&#xff0c;凑个数重新发布 最近这些天都在弄Zabbix不再只是简单的监控物理硬件&#xff0c;服务端口&#xff0c;流量图等。让Zabbix的功能发挥到极致。 本篇博客只做笔记介绍zabbix的报警&#xff…

【数据结构与算法】顺序队列与环形队列

文章目录一 顺序队列1 应用场景2 基本概念&#xff08;1&#xff09;基本介绍&#xff08;2&#xff09;队列的顺序实现&#xff08;3&#xff09;队列的入队和出队操作&#xff08;4&#xff09;使用数组模拟队列3 代码实现&#xff08;1&#xff09;初始化队列&#xff08;2&…

React Native windows环境搭建

1.首先准备下载必须的依赖&#xff1a;Node、JDK 、Android Studio、夜神模拟器 ①Node可以直接到 官网 下载&#xff0c;版本必须大于14&#xff0c;我这边用的是v16.15.1 ②Jave JDK&#xff0c;我直接在360软件管家安装的&#xff0c;搜的是JDK 11&#xff0c;React Nativ…

【算法】双指针、位运算、离散化、合并区间

文章目录1.双指针2.位运算3.离散化4.区间合并1.双指针 双指针的算法可以优化时间复杂度,双指针&#xff0c;指的是在遍历对象的过程中&#xff0c;不是普通的使用单个指针进行访问&#xff0c;而是使用两个相同方向&#xff08; 快慢指针 &#xff09;或者相反方向&#xff08…

SQL调优SQLSERVER 数据页

1. 什么是数据页 一般来说&#xff0c;对大块资源或者数据进行高效管理都会按照一定粒度来划分的&#xff0c;比如说 Windows 对内存的管理就是按照 内存页 (4k) 来进行划分&#xff0c;言外之意就是 SQLSERVER 对 mdf 的管理也是按照 数据页 &#xff08;8k) 来划分的&#x…

(小记)matlab散点图

Matlab散点图两种画法一、plot画散点图二、scatter画散点图三、matlab工具画散点图plot画我可以设置坐标轴之类的&#xff0c;方便论文使用&#xff1b;scatter没设置成功。一、plot画散点图 参考&#xff1a;matlab中二维散点图,MATLAB实例&#xff1a;二维散点图 自用代码 …

一站式迁移,人大金仓助力保险业务无感升级

2021年3月&#xff0c;国家发布《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》&#xff0c;纲要明确提出“稳妥发展金融科技&#xff0c;加快金融机构数字化转型”、“推进金融业信息化核心技术安全可控&#xff0c;维护金融基础设施安全”。2022年…

如果通过股价均线分析股票

目录如果通过股价均线分析股票获取数据为什么要计算均价计算均价分析结果如果通过股价均线分析股票 获取数据 股票数据获取渠道非常丰富&#xff0c;可以通过上一篇文章 各大股票开放接口介绍中接口获取数据&#xff0c;需要提供技术支持的可以私聊。 为什么要计算均价 股票…

MongoDB:基础概述

MongoDB 是一个开源的、跨平台的、面向文档的、基于分布式文件存储的数据库系统&#xff0c;MongoDB 是由 C 语言开发&#xff0c;旨在为 Web 应用提供可扩展的高性能数据存储解决方案。在高负载的情况下&#xff0c;通过添加更多的节点&#xff0c;可以保证服务器性能。 本篇内…

【技术分享】无纸化会议|智慧教室同屏走RTSP组播还是RTMP?

技术背景 我们在做内网多人同屏&#xff08;比如无纸化会议、智慧教室同屏&#xff09;技术方案的时候&#xff0c;遇到个问题&#xff1a;到底使用轻量级RTSP服务实现组播&#xff0c;还是基于RTMP的解决方案&#xff1f; 先说为什么大家喜欢组播吧&#xff1a; 组播技术方…

js实现复制粘贴剪切功能

文章目录js实现复制粘贴功能方式一&#xff1a;原生方式实现复制粘贴剪切&#xff08;不推荐&#xff09;方式二&#xff1a;浏览器自带clipboard API实现复制粘贴&#xff08;推荐&#xff09;简介特点clipboard对象及相关APIClipboard.readText()Clipboard.read()Clipboard.w…

二叉树之红黑树

红黑树的起源 二分查找具有Ologn的时间复杂度&#xff0c;使用二分查找的基础是数据有序。很明显数组可以完成这一条件&#xff0c;但是数组也有缺点&#xff0c;扩容&#xff0c;增加&#xff0c;删除非常不方便。而链表则没有这些缺点&#xff0c;但是链表却不满足随机存取&…