当前位置: 首页 > news >正文

Nginx日志管理之日志分析

        Nginx 通常被置于服务器访问的入口,其访问日志可以全局记录用户访问的来源、响应时间,以及用户行为热点等数据,通过对访问日志的分析,可以清晰地了解用户来源、用户行为习惯及自身服务器性能等情况。借助 ELK 的高性能处理能力,可以实时地将数据分析结果展现给服务器的维护人员及应用的开发人员,进而不断提高业务的可用性及产品的用户体验。
        Nginx 的日志分析可以分为安全分析、性能分析、可用性分析及访问统计分析 4 个方面。

1) 安全分析

        通常黑客对互联网应用的入侵都是先从 Web 服务器漏洞扫描开始的,最常用的扫描方式就是在 URL 中加入特定的脚本、命令或字符串不断尝试访问,并根据返回结果判断被扫描网站是否存在漏洞或后门。如 SQL 注入攻击会在访问的 URL 中带有 select、and、or、order by 等常见的 SQL 语句,XSS 攻击会在访问的 URL 中带有 javascript、vbscript、onmouseover、eval 等 Javascript 或 VBscript 脚本命令。
        另外,对管理后台入口的扫描也是常用的手段之一,多数情况下管理后台的安全加固是最容易被忽视的,往往认为不提供访问链接就高枕无忧了,而 admin、manage 等关键词通常会轻而易举地被穷举出来。
        这些不安全的访问痕迹都会被 Nginx 服务器记录到访问日志中,并通过 ELK 对 Nginx 访问日志中的 request_uri 字段进行关键字过滤和展示,以求在第一时间了解这些不安全事件并提前做好防范工作。

2) 性能分析

        一个网站性能的最直接体现就是请求的响应时间。通常用户的请求响应时间都是以毫秒为单位计算的,若用户的请求响应时间以秒为单位时,将极大地加大用户的等待时间,进而影响用户体验。为方便对请求响应的分析,可以将下表所示的 Nginx 服务器提供的变量添加到访问日志中,以记录请求链中消耗的时间。

变量变量名变量说明
$request_time完全请求时间从 Nginx 在客户端获取请求的第一个字节到 Nginx 发送给客户端响应数据的最后一个字节间的时间
$upstream_connect_time代理建立连接时间与后端代理服务器建立连接消耗的时间
$upstream_header_time代理请求时间从与后端代理服务器建立连接到接收到响应数据第一个字节间的时间
$upstream_response_time响应时间从与后端代理服务器建立连接到接收到响应数据最后一个字节间的时间

        对请求响应时间的分析,可以通过 ELK 对访问日志 $request_time 字段的时间做排名,对时间值比较大的 URL 从 SQL、代码、架构等多方面分析原因。

3) 可用性分析

        HTTP 请求的每条访问都会有相应的访问状态码,访问状态码标识了请求成功或失败的状态。通过 ELK 对访问日志按照状态码维度统计总访问量,可以很直观地展示当前网站的可用性比率。

4) 访问统计分析

        访问统计分析,可以让网站管理者最直观地了解网站被访问及用户的访问情况,常见的是 PV 及 UV 统计。

        PV(Page View)即页面浏览量或点击量,可以让网站管理者清晰地了解当前网站的访问量;UV(Unique Visitor)即独立访客量,以每个同一 IP(remote_addr)、同一客户端类型(http_user_agent)可被识别为独立访客作为统计单位。

        PV 体现了用户的访问量,UV 体现了访问当前网站的人数。URL 的访问数量统计,可以清晰地展示网站的哪些功能被大量使用,可以让网站管理者知道用户对网站功能的喜好,以便进行相关的产品优化。

http://www.lryc.cn/news/380592.html

相关文章:

  • 利用 Microsoft ChatGPT 和 OPC UA 改变工业格局
  • 力扣-两数之和
  • 基于CDMA的多用户水下无线光通信(3)——解相关多用户检测
  • 哔哩哔哩视频URL解析原理
  • 个人成长的利器:复盘教你如何避免重蹈覆辙
  • 2025秋招NLP算法面试真题(一)-史上最全Transformer面试题
  • 基于STM32的智能家居安防系统
  • React+TS前台项目实战(十二)-- 全局常用组件Toast封装,以及rxjs和useReducer的使用
  • 總結光學(完)
  • 线程C++
  • DAMA学习笔记(二)-数据治理
  • 07-appium常用操作
  • 使用lua开发apisix自定义插件并发布
  • 43 mysql insert select 的实现
  • 趣味学Python,快速上手神奇的itertools库!
  • 富文本编辑器CKEditor
  • 【机器学习】音乐大模型的深入探讨——当机器有了创意,是机遇还是灾难?
  • 机器人学习和研究的物质基础包含哪些内容?
  • Python中的交互式GUI开发:与MATLAB uicontrol的比较
  • js 实现将后端请求来的 Blob 数据保存到用户选择的任意目录
  • 【LLM之RAG】RAT论文阅读笔记
  • windows anaconda 安装 Labelme
  • Python实现基于深度学习的电影推荐系统
  • C++ (week9):Git
  • Seaborn:数据可视化的强大工具
  • 图解注意力
  • Typora Markdown编辑器 for Mac v1.8.10 安装
  • 代码随想录算法训练营Day46|动态规划:121.买卖股票的最佳时机I、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III
  • hive on spark 记录
  • 【计算机网络体系结构】计算机网络体系结构实验-DHCP实验