排查服务器异常流量教程详解

 更新时间:2022年08月16日 14:23:48   作者:王中阳Go  
这篇文章主要为大家介绍了排查服务器异常流量教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

这篇文章将介绍当WEB服务器报警,提示磁盘使用率问题和带宽满载时的一些排查思路和解决方案。

首先,我们一定要配置服务器的云监控,如果是云厂商的服务器都有监控服务,开通即可。

如果是自建机房,监控报警策略也是必须搭建的。

磁盘使用率报警

原因分析

  • 日志没有及时迁移或清理
  • 程序异常输出了大量的垃圾文件
  • 挂载的硬盘存储空间不足,不适应业务发展,需要挂载新的磁盘。

解决方案

1. 日志迁移或清理

我们需要Nginx日志和项目运行中的关键日志,方便定位问题、数据分析。

日志迁移的思路很简单,目前主流的云厂商都支持日志迁移和存储服务,且成本不高。

如果是自建的服务,可以挂载专门的存储硬盘,不和业务服务器耦合在一起,将日志进行单独存储。

2. 日志清理

  • 切换到根目录
cd /
  • 查找到大文件,比如找到大于100M的文件
find . size +100M
  • 没用的日志大文件置为空(不要直接删除,正在被使用的文件是无法直接删除的)
cat /dev/null > /data/logs/php-fpm/error.log

网站流量异常,一直在报警

当网站流量报警时喜忧参半,如果是因为搞活动或者网站内容命中了热点,被搜索引擎推荐,那真是像买彩票中奖一样高兴。

不过,大多数情况,网站在毫无预兆的情况下突然打满带宽,大概率是被恶意攻击了。

下面介绍一下我的排查思路

首先我登录了网站的统计服务平台,发现PV/UV等关键数据并没有太大变化,但是服务器的带宽却被打满了,说明异常流量不是通过刷网站页面导致的,可能是通过刷接口导致的。

通过分析日志排查异常流量

首先切换到日志目录,比如我的目录是

cd /data/logs/nginx

查看访问最频繁的前10个IP

awk '{print $1}' access.log | sort -n |uniq -c | sort -rn | head -n 10

分析结果:

  • 发现访问量最高的ip是自身服务器的外网ip
  • 发现有一组美国谷歌云的异常访问
  • 发现有一个北京xx网的异常访问
  • 其他基本是正常流量

解决异常流量

公网ip访问量最大:

这是一个N年前的老项目,开发时是有一些知识盲点的,没有考虑到内网传输要比外网传输的速度快很多。

通过下面的方式替换了外网传输为内网传输:

  • 项目中的外网ip替换为内网ip(发现项目代码并没有直接访问外网ip,而是访问了子项目的域名)
  • 配置Linux服务器的host
# 打开Linux的hosts配置文件
vim /etc/hosts
# 将项目中请求的多个域名解析到本地的ip地址
127.0.0.1 多个域名用空格分隔

优化完内网传输之后,就开始最重要的事情了:

封禁恶意ip

  • 创建(打开)黑名单配置文件
 vim /etc/nginx/blackip.conf
  • 将black.conf添加到nginx.conf中 (代码段中的...代表省略的内容)
http{
.
.
.
    #ip黑名单
    include /etc/nginx/blackip.conf;
.
.
.
}
  • 添加要封禁的黑名单
#屏蔽单个ip访问
deny IP; 
#允许单个ip访问
allow IP; 
#屏蔽所有ip访问
deny all; 
#允许所有ip访问
allow all; 
#屏蔽整个段:从127.0.0.1到127.255.255.254
deny 127.0.0.0/8;
#屏蔽IP段:从127.45.0.1到127.45.255.254
deny 127.45.0.0/16;
#屏蔽IP段:从127.45.6.1到127.45.6.254
deny 127.45.6.0/24;
  • 重启Nginx服务
nginx -s reload

停掉不用的服务

在查询Nginx的log时,发现一些不再用的服务仍然有请求日志。

果断停掉这些服务。

统计访问最多的url 前10名

cat access.log |awk '{print $7}'| sort|uniq -c| sort -rn| head -10 | more

封禁了不再使用url

  • 小程序接口封禁
  • 网站快报相关的接口封禁

优化结果

在进行上述操作后,收到了服务器报警恢复正常的短信通知。

今天早晨登录服务器监控后台,发现效果是灰常明显的:

红线左侧是处理异常流量前的带宽波动图,右侧是处理后的波动图,浅色波动线是昨天的流量情况。

image.png

总结

这是7年前刚入行时做的项目,单机部署,排查思路比较简单清晰:查日志,封ip。

在微服务+分布式成为主流的今天,又要用哪些思路和工具排查问题呢?

以上就是排查服务器异常流量教程详解的详细内容,更多关于排查服务器异常流量的资料请关注脚本之家其它相关文章!

相关文章

  • 详解实现Nginx+Tomcat实现单IP、多域名、多站点的访问

    详解实现Nginx+Tomcat实现单IP、多域名、多站点的访问

    这篇文章主要介绍了详解实现Nginx+Tomcat实现单IP、多域名、多站点的访问的相关资料,这里提供实例帮助到大家实现改功能,希望能帮助到大家,需要的朋友可以参考下
    2017-08-08
  • 详解nginx服务器中的安全配置

    详解nginx服务器中的安全配置

    本篇文章主要介绍了nginx服务器中的安全配置,较为详细的分析了nginx服务器中的安全配置与相关操作注意事项,需要的朋友可以参考下。
    2016-10-10
  • Nginx反爬虫策略,防止UA抓取网站

    Nginx反爬虫策略,防止UA抓取网站

    目前网络上的爬虫非常多,有对网站收录有益的,比如百度蜘蛛(Baiduspider),也有不但不遵守robots规则对服务器造成压力,还不能为网站带来流量的无用爬虫,为防止网站有可能会被别人爬,通过配置Nginx, 我们可以拦截大部分爬虫
    2020-09-09
  • nginx重定向解决(rewrite or internal redirection cycle)

    nginx重定向解决(rewrite or internal redirection&nb

    本文主要介绍了nginx重定向解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • nginx配置ssl实现https访问的步骤(适合新手)

    nginx配置ssl实现https访问的步骤(适合新手)

    这篇文章主要给大家介绍了关于nginx配置ssl实现https访问的相关资料,这个教程非常适合新手小白,文中通过示例代码将实现的方法一步步介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧
    2018-12-12
  • Nginx上传文件大小的简单修改方法

    Nginx上传文件大小的简单修改方法

    这篇文章主要给大家介绍了关于Nginx上传文件大小的简单修改方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Nginx具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • Nginx配置中if判断的使用

    Nginx配置中if判断的使用

    在Nginx配置中,有时rewrite规则无法满足复杂逻辑判断需求,这时需要使用if语法,if可以根据文件是否存在、路径特定条件等进行判断,本文就来介绍一下if判断的使用
    2024-10-10
  • Nginx工作模式及代理配置的使用细节

    Nginx工作模式及代理配置的使用细节

    这篇文章主要为大家介绍了Nginx工作模式及代理配置的使用细节,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • nginx添加nginx-sticky-module模块步骤的实现

    nginx添加nginx-sticky-module模块步骤的实现

    nginx-sticky-module模块是nginx实现负载均衡的一种方案,和ip_hash负载均衡算法会有区别的,本文主要介绍了nginx添加nginx-sticky-module模块步骤的实现,感兴趣的可以了解一下
    2023-08-08
  • Nginx配置中root和alias的区别及说明

    Nginx配置中root和alias的区别及说明

    这篇文章主要介绍了Nginx配置中root和alias的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08

最新评论