news 2026/10/31 6:28:12

服务器运维(五十)linux nginx攻击慢请求检查 —东方仙盟

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
服务器运维(五十)linux nginx攻击慢请求检查 —东方仙盟

网站慢请求批量读取

nice -n 19 find /www/wwwlogs -maxdepth 1 -name "*.log" ! -name "*.gz" | xargs awk -v OFS="|" ' FILENAME != lastfile {lastfile=FILENAME} $4 ~ /04:|05:|06:|07:|08:/ { rt="" for(i=1;i<=NF;i++){ if($i ~ /^[0-9]+\.[0-9]+$/ && $i < 1000){ rt=$i } } if(rt > 3){ print FILENAME, $4, $1, $7, rt, $10, $0 } } ' | sort -t"|" -k5 -nr | head -300 > /tmp/cyspy/slow_log_result2.txt

一、命令整体目标

以最低系统资源优先级,批量遍历所有站点 Nginx 日志,筛选凌晨 04-08 点、单次请求耗时超过 3 秒的慢请求,按耗时从大到小排序,取前 300 条结果保存到临时文件,全程尽量不抢占网站业务 CPU/IO,不会卡服务器。

二、分段逐层拆解(从左到右)

1.nice -n 19

  • 作用:设置整条流水线所有进程 CPU 调度优先级为最低档 19
  • 规则:Linux nice 范围-20 ~ 19,数字越大 CPU 优先级越低;线上 Nginx/MySQL/PHP 默认 nice=0
  • 效果:服务器 CPU 资源优先分给网站访客业务,日志统计脚本仅在 CPU 空闲时运行,不会因为分析几 GB 大日志挤占业务 CPU,避免页面卡顿。

2.find /www/wwwlogs -maxdepth 1 -name "*.log" ! -name "*.gz"

遍历日志目录,筛选待分析日志文件:

  1. /www/wwwlogs:宝塔默认日志根目录;
  2. -maxdepth 1:仅读取一级目录文件,不递归子文件夹,防止误扫描深层缓存 / 备份日志;
  3. -name "*.log":只匹配未切割压缩的原始日志;
  4. ! -name "*.gz":排除已日志切割压缩的.gz归档文件,避免解压消耗 IO。

3.| xargs awk -v OFS="|" '...'

管道把 find 找到的日志文件名批量传给 awk 逐文件流式解析:

  • xargs:分批把日志文件路径传给 awk,流式逐行读取日志,不会一次性把 2GB 大日志全载入内存,解决大日志内存溢出问题;
  • -v OFS="|":定义输出分隔符为竖线|,字段分割清晰,后续 sort 可以精准按耗时排序;
  • 单引号内部是 awk 处理逻辑,下面单独拆分。
awk 内部代码逐行解释

awk

# 缓存当前正在读取的日志文件名(对应站点) FILENAME != lastfile {lastfile=FILENAME} # 匹配日志时间字段:包含04、05、06、07、08点(故障完整时段) $4 ~ /04:|05:|06:|07:|08:/ { rt="" # 循环遍历一整行日志所有字段,自动匹配request_time(解决日志字段错位问题) for(i=1;i<=NF;i++){ # 匹配规则:小数数字、数值小于1000,就是请求耗时rt(单位秒) if($i ~ /^[0-9]+\.[0-9]+$/ && $i < 1000){ rt=$i } } # 筛选:耗时大于3秒的异常慢请求(你设定阈值3秒,正常业务<3秒) if(rt > 3){ # 输出7段内容,用 | 分隔 # FILENAME:日志文件名(对应站点域名) # $4:访问时间 # $1:客户端IP # $7:请求URL路径 # rt:单次请求耗时(秒,排序关键字) # $10:本次响应返回字节大小 # $0:完整原始日志行,方便回溯完整信息 print FILENAME, $4, $1, $7, rt, $10, $0 } }

核心优势:不依赖固定字段下标提取 request_time,哪怕不同站点日志 UA、状态码字段数量不一致,也能自动识别耗时数值,解决之前输出乱码错位的问题。

4.| sort -t"|" -k5 -nr

对 awk 输出的慢请求结果排序:

  • -t"|":以竖线|作为字段分隔符;
  • -k5:以第 5 列 rt 请求耗时作为排序依据;
  • -n:按数字大小排序(不是文本字典序);
  • -r:倒序,耗时最长的请求排在最前面。

5.| head -300

只保留耗时 TOP300 条异常记录,避免输出几万行海量数据占用磁盘。

6.> /tmp/cyspy/slow_log_result2.txt

把最终筛选、排序后的结果写入指定文件,不在屏幕刷屏;

前置要求:必须提前执行mkdir -p /tmp/cyspy创建文件夹,否则会报无目录写入失败。

三、输出文件每一行字段含义(竖线分隔)

站点日志文件|访问时间|攻击IP|请求路径|耗时(秒)|返回字节|完整原始日志示例:/www/wwwlogs/51.onelink.ynwlzc.cn.log|[29/May/2026:08:23:53|104.155.235.142|/database.ini|8.60|2095|完整原始日志文本

四、配套补充优化(解决 IO 占用,极致低负载)

1. CPU+IO 双重限流(超大日志必用,不打满磁盘 IO)

bash

运行

nice -n 19 ionice -c 3 find /www/wwwlogs -maxdepth 1 -name "*.log" ! -name "*.gz" | xargs awk -v OFS="|" ' FILENAME != lastfile {lastfile=FILENAME} $4 ~ /04:|05:|06:|07:|08:/ { rt="" for(i=1;i<=NF;i++){ if($i ~ /^[0-9]+\.[0-9]+$/ && $i < 1000){ rt=$i } } if(rt > 3){ print FILENAME, $4, $1, $7, rt, $10, $0 } } ' | sort -t"|" -k5 -nr | head -300 > /tmp/cyspy/slow_log_result2.txt

ionice -c 3:IO 闲置调度,仅当磁盘无业务读写时才读取日志,杜绝扫描日志把磁盘 IO 打满。

2. 查看结果命令

bash

运行

cat /tmp/cyspy/slow_log_result2.txt # 分页查看 less /tmp/cyspy/slow_log_result2.txt

五、关键适用场景 & 优缺点

优点

  1. 原生系统工具,不装第三方程序,数据不外泄,符合你安全要求;
  2. nice -n19最低 CPU 优先级,不抢占线上业务;
  3. 流式读取日志,不会一次性加载几 GB 日志进内存;
  4. 自动匹配 request_time,兼容所有宝塔不同格式日志,无字段错位乱码;
  5. 按耗时倒序,优先展示危害最大的慢速扫描 IP/URL。

局限

  1. nice仅限制 CPU,不限制磁盘 IO,超大日志建议搭配ionice;
  2. 重启 Nginx 时被强制杀死的超长未完成连接不会写入日志,无法捕获;
  3. 仅筛选 04-08 点,其他时段慢请求不会抓取。

人人皆为创造者,共创方能共成长

每个人都是使用者,也是创造者;是数字世界的消费者,更是价值的生产者与分享者。在智能时代的浪潮里,单打独斗的发展模式早已落幕,唯有开放连接、创意共创、利益共享,才能让个体价值汇聚成生态合力,让技术与创意双向奔赴,实现平台与伙伴的快速成长、共赢致远。

原创永久分成,共赴星辰大海


原创创意共创、永久收益分成,是东方仙盟始终坚守的核心理念。我们坚信,每一份原创智慧都值得被尊重与回馈,以永久分成锚定共创初心,让创意者长期享有价值红利,携手万千伙伴向着科技星辰大海笃定前行,拥抱硅基 生命与数字智能交融的未来,共筑跨越时代的数字文明共同体。

东方仙盟:拥抱知识开源,共筑数字新生态


在全球化与数字化浪潮中,东方仙盟始终秉持开放协作、知识共享的理念,积极拥抱开源技术与开放标准。我们相信,唯有打破技术壁垒、汇聚全球智慧,才能真正推动行业的可持续发展。

开源赋能中小商户:通过将前端异常检测、跨系统数据互联等核心能力开源化,东方仙盟为全球中小商户提供了低成本、高可靠的技术解决方案,让更多商家能够平等享受数字转型的红利。
共建行业标准:我们积极参与国际技术社区,与全球开发者、合作伙伴共同制定开放协议 与技术规范,推动跨境零售、文旅、餐饮等多业态的系统互联互通,构建更加公平、高效的数字生态。
知识普惠,共促发展:通过开源社区 、技术文档与培训体系,东方仙盟致力于将前沿技术转化为可落地的行业实践,赋能全球合作伙伴,共同培育创新人才,推动数字经济 的普惠式增长


阿雪技术观

在科技发展浪潮中,我们不妨积极投身技术共享。不满足于做受益者,更要主动担当贡献者 。无论是分享代码、撰写技术博客,还是参与开源项目 维护改进,每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地,我们携手在此探索硅基 生命,为科技进步添砖加瓦。

Hey folks, in this wild tech - driven world, why not dive headfirst into the whole tech - sharing scene? Don't just be the one reaping all the benefits; step up and be a contributor too. Whether you're tossing out your code snippets , hammering out some tech blogs, or getting your hands dirty with maintaining and sprucing up open - source projects, every little thing you do might just end up being a massive force that pushes tech forward. And guess what? The Eastern FairyAlliance is this awesome place where we all come together. We're gonna team up and explore the whole silicon - based life thing, and in the process, we'll be fueling the growth of technology

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/31 6:26:59

生产级机器学习系统设计:从模型部署到可观测性与治理

1. 为什么“模型上线”不是终点&#xff0c;而是系统性风险的起点我带过七支不同行业的ML落地团队&#xff0c;从金融风控到工业预测性维护&#xff0c;最常被问的问题是&#xff1a;“模型AUC做到0.92了&#xff0c;是不是可以交付了&#xff1f;”——每次我都得停顿两秒&…

作者头像 李华
网站建设 2026/10/31 2:09:38

Nexus路径遍历漏洞CVE-2024-4956复现与安全防御实践

1. 项目概述&#xff1a;一次真实的漏洞复现之旅 最近在安全圈里&#xff0c;Nexus Repository Manager 3.68.0版本爆出的那个路径遍历漏洞&#xff08;CVE-2024-4956&#xff09;讨论得挺热。作为常年和各类中间件、仓库管理器打交道的安全从业者&#xff0c;我习惯性地会去把…

作者头像 李华
网站建设 2026/10/31 5:29:05

从零到一:JDK与Kettle的下载、安装与首次连接实战

1. JDK与Kettle的初识&#xff1a;为什么需要它们&#xff1f; 如果你刚接触数据集成或ETL&#xff08;数据抽取、转换、加载&#xff09;工具&#xff0c;Kettle&#xff08;现称Pentaho Data Integration&#xff09;绝对是个不错的选择。它开源免费、图形化操作友好&#xf…

作者头像 李华
网站建设 2026/10/31 5:08:16

深入解析MCF5206:ColdFire核心、片上存储与通信外设的嵌入式系统设计

1. MCF5206&#xff1a;一款被低估的嵌入式“瑞士军刀”在嵌入式系统开发的早期&#xff0c;选择一颗合适的微处理器往往意味着要在性能、成本、集成度和开发难度之间反复权衡。很多工程师都经历过这样的场景&#xff1a;为了一个控制项目&#xff0c;需要外扩RAM、ROM、UART、…

作者头像 李华
网站建设 2026/10/22 16:21:16

机器学习落地:从模型交付到可信决策系统的工程实践

1. 项目概述&#xff1a;当模型走出笔记本&#xff0c;真正开始“呼吸”现实世界 你有没有经历过这样的时刻&#xff1f;模型在 Jupyter Notebook 里跑得飞起&#xff0c;AUC 0.92&#xff0c;F1 0.88&#xff0c;交叉验证稳如老狗&#xff1b;业务方点头如捣蒜&#xff0c;上线…

作者头像 李华