首页 > 系统相关 >nginx 日志规范化意义及实现!

nginx 日志规范化意义及实现!

时间:2025-01-08 22:33:44浏览次数:3  
标签:http log time request nginx upstream 规范化 日志

一. 场景:

         首先,我们需要明白 log的重要性。服务的log,将是我们分析用户行为的不可缺少的一个核心组件;通过log我们可以获取用户的访问量,qps,rt,pv,状态,通过log进行相应的监控,故障排除,追踪,定位等。

          nginx log的配置方式,相信做过运维的同学都使用过,曾经的本人也认为是一个随手就能搞定的事儿。然而,当我们的nginx项目几十上百,甚至更多;不同的业务都有不同的配置需求/方式;对每个业务的log都需要接入log采集分析系统的情况下,就不再是一个随手的问题了。我们的nginx日志将面向运维、开发、安全等服务,所以确定规范非常必要,协同的前提是我们首先有“原则”,否则将会发生信息不对称,造成冲突。同时,我们还要考虑相关敏感问题。

定以后的规范如下:

log_format  main  '$time_local|$hostname|$remote_addr|$upstream_addr|$request_time|$upstream_response_time|$upstream_connect_time|'
'$status|$upstream_status|-|$bytes_sent|-|-|$remote_user|$request|$http_user_agent|$http_referer|'
'$scheme|$request_method|$request_trace_id|$request_trace_seq|'
'$http_x_forwarded_for|$http_Authorization';

定义说明: 

    1.  因为需求对log进行采集,匹配分析,为了更好的解析,采用了管道符"|" 作为每个字段的分隔符(相关操作可参看ELK stack中的logstash配置)。

    2.  每个域所包含的字段列表不同,使用日志的开发团队所关注的域也不同;我们确保增加Field时,尽可能在当前域的后面增加;对于使用日志的开发者而言,调整的代码量也是比较小的。比如追踪系统,通常只关注第二个域,那么在第二个域中增减字段,不会影响其他域中Field的相对位置。

    3.  其中定义了“-”占位符 ,使用来后续的预留使用。

各字段内容:

字段名

解释

time_local

日志时间

hostname

当前机器的hostname(非IP)

remote_addr

客户端地址

upstream_addr

后端Server的地址

request_time

nginx处理请求的时长,从获取Client请求的首个字节开始到响应数据发送完毕,单位为“秒 + 毫秒”

upstream_response_time

从nginx与upstream建立连接开始到response数据接收完毕。

upstream_connect_time

与upstream建立连接的时间。

status

nginx响应状态码

upstream_status

upstream返回给nginx的状态码(tomcat或者后继nginx)

bytes_received

nginx接收到Client的请求数据大小

1.11版本才能支持,此处用“-”占位符替代

bytes_sent

nginx返回给Client的数据大小

upstream_bytes_sent

nginx发送给upstream的字节数

1.11版本才支持,此处使用“-”占位符替代

upstream_bytes_received

nginx接收到upstream响应的字节数

1.11版本才支持,此处使用“-”占位符替代

remote_user

基本认证中的user信息

request

HTTP请求行—首行

http_user_agent

标头中“User-Agent”值

http_referer

标头中“Referer”值

scheme

请求的Scheme,HTTP或者HTTPS

request_method

HTTP(S)请求的方法名:GET,POST等

request_trace_id

获取标头中“X-Request-ID”值,

如果不包含此header,则创建新的Trace_id。

request_trace_seq

获取标头中“X-Request-Seq”值,如果存在,表明此请求是trace link下发的请求。此值用于追踪请求链的层级或者顺序

http_{key}

获取HEADER中指定key的值。

cookie_{key}

获取COOKIE中指定key的值。

标签:http,log,time,request,nginx,upstream,规范化,日志
From: https://blog.csdn.net/gujimoxiao/article/details/145018812

相关文章

  • 【运维】如何检查电脑正常异常和关机日志? 1074正常关机或重启 6006正常关机 41非正常
    事件ID1074:正常关机或重启,由用户或程序请求触发。事件ID6006:正常关机,表示系统已正确关闭。事件ID41:非正常关机,可能是由于电源问题、硬件故障或系统崩溃导致。事件ID6008:异常关机,通常是由于系统崩溃、电源中断或硬件问题导致的非正常关闭。要在Windows中查看事件......
  • 04、DBA必会的日志管理
    目录1、Binlog详解,包括记录格式、内容解析、清除、落盘分析2、GeneralLog介绍及使用3、SlowLog的开启及查看4、通过ErrorLog排错5、RedoLog详解,包括落盘、归档、禁用6、UndoLog详解,包括清除、配置本章作业1、讲一下Binlog的三种记录格式,并说下优缺点2、现......
  • SQL Server数据库备份、差异备份、日志备份脚本.250108
    1,sp脚本USE[master]GO/******Object:StoredProcedure[dbo].[sp_BackupDatabase]ScriptDate:2025/1/810:43:05******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGO--Author:Amadeus--Createdate:2021-10-20execsp_BackupDatabaseL--Des......
  • 学习 - Nginx -浅谈Nginx动静分离
    Nginx动静分离适用于中小型网站并发量不高的场景如下图所示Nginx方向代理的站点是一个Tomcat服务器其中存在很多的静态资源(jscssimg...)如果没有实现动静分离,每个用户在访问的时候都会重新加载一次CSS样式或者图片等,如果把静态资源放置到Nginx中,就不用每次都重新加载静态......
  • linux 清空catalina.out日志 不需要重启tomcat(五种方法)
    今天突然发现图表展示查询条件不能用了,想着可能是日志太多一直没清理导致的,结果一查tomcat的log目录居然已经有1012G,果断删除生成的前几年的日志,发现这些都不大,保留2425年其他都删掉还有956G,仔细一看catalina.out居然有865G,上网查看有没有不关闭tomcat就清空这个文件的方法,删除之......
  • detectron2训练日志介绍
    常见的使用目标检测或实例分割模型(例如MaskR-CNN)训练时。下面我来逐个解释这些参数的含义:eta(EstimatedTimeofArrival):剩余训练时间的估计。在这个例子中,eta为1天1小时33分12秒,表示模型预计还需要这么长时间才能完成训练。这个值是根据当前训练速度和剩余迭......
  • 【vulnhub靶场】日志投毒与文件包含漏洞 Solstice
    一、侦查1.1收集目标网络信息:IP地址1.2主动扫描:扫描IP地址段二、初始访问2.1利用面向公众的应用三、权限提升3.1利用漏洞提权:高权限运行的程序一、侦查1.1收集目标网络信息:IP地址靶机启动后,没有提供IP地址。由于Kali和靶机在同一个C段,可以扫描ARP......
  • 学习 - Nginx - 负载均衡配置Demo
    负载均衡配置Demo一、创建4个虚拟主机(Nginx01IP地址192.168.226.101Nginx02IP地址192.168.226.102Nginx03IP地址192.168.226.103Nginx04IP地址192.168.226.104)二、location中配置proxypass代理,httpds别名配置upstream具体的代理地址,此处我配置的是Nginx0......
  • WindowsLog_Check:日志分析
    声明免责仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任。介绍该工具支持一键获取windows主机的日志,主机信息,GUI显示,支持使用微步KEY对文件进行MD5分析,支持检测相同MD5的文件,支持对内存进行字符串查询。详细......
  • nginx常用命令
    nginx常用命令注意:以下所有命令在centos7.6环境下测试,其他linux环境请自行测试注意:在linux中,不是管理员登录,最好在指令前加上sudo提权,避免权限不够执行失败带来的麻烦,以下命令请都加上sudo,这是一个好习惯。常用命令#查看nginx进程是否启动ps-ef|grepnginxpsaux|grep......