首页 > 其他分享 >5 分钟内 IP统计报警

5 分钟内 IP统计报警

时间:2024-12-17 09:54:17浏览次数:4  
标签:log IP 报警 分钟 time MAIL OUT LOG

#!/bin/bash

# 日志文件路径
LOG_FILE="/data/logs/nginx/www.rebatesme.com.log"

# 获取当前时间(格式为 30/Nov/2024:00:05:18 +0800)
CURRENT_TIME=$(date +"%d/%b/%Y:%H:%M:%S %z")

# 计算 5 分钟之前的时间
THREE_MINUTES_AGO=$(date -d "5 minutes ago" +"%d/%b/%Y:%H:%M:%S %z")

# outlog
OUT_LOG="/data/logs/nginx/logbackup/count/out.log"

# 使用 awk 处理日志文件,提取符合条件的 IP 地址
awk -v start_time="$THREE_MINUTES_AGO" -v end_time="$CURRENT_TIME" '
BEGIN {
    # 设置字段分隔符
    FS="[][]"
}
{
    # 提取时间戳
    log_time = $2
    
    # 去除时间戳中的空格
    gsub(/ /, "", log_time)
    
    # 检查时间是否在时间窗口内
    if (log_time >= start_time && log_time <= end_time) {
        ip_count[$4]++
    }
}
END {
    # 输出访问次数超过 1000 的 IP 地址
    for (ip in ip_count) {
        if (ip_count[ip] > 1000) {
            print ip, ip_count[ip]
        }
    }
}' "$LOG_FILE" > $OUT_LOG

# 检查是否有符合条件的 IP 地址
if [ -s "$OUT_LOG" ]; then
    # 发送邮件
    SUBJECT="Nginx: IPs 5 minutes"
    TO="xxx@qq.com"
    FROM="yxxg@sina.com"

    # 构建邮件内容
    MAIL_CONTENT="The following IPs have more than 1000 requests in the last 5 minutes:\n\n"
    while IFS= read -r line; do
        MAIL_CONTENT+="$line\n"
    done < "$OUT_LOG"

    # 使用 mail 命令发送邮件
    echo -e "$MAIL_CONTENT" | mail -s "$SUBJECT" -r "$FROM" "$TO"
fi

 

标签:log,IP,报警,分钟,time,MAIL,OUT,LOG
From: https://www.cnblogs.com/yangmeichong/p/18611631

相关文章

  • 说说你对Gzip压缩的了解
    Gzip压缩在前端开发中扮演着重要角色,它是一种用于改进Web应用程序性能的技术。以下是我对Gzip压缩的详细了解:一、Gzip压缩的基本概念Gzip是GNUzip的缩写,是一种广泛使用的文件压缩格式,特别适用于Web上的文本文件压缩。它采用LZ77算法与Huffman编码相结合的方式进行压缩,是一种无......
  • 追踪数字足迹:通过API和离线库查询IP地址的解决方案(详解带源码)
    目录追踪数字足迹:通过API和离线库查询IP地址的解决方案(详解带源码)一、IP地址查询能获取哪些信息1、地理位置信息2、网络信息3、网络类型二、IP地址查询方法,附代码1、在线查询IP地址方法2、使用API进行IP地址查询三、使用离线库进行IP地址查询四、总结作者:watermel......
  • ALOHA:A Simple Recipe for Robot Dexterity
    摘要:模仿学习在学习端到端的机器策略中展示了好的结果,本论文的工作解决的问题是,能在多大程度上推动模仿学习来挑战灵巧的操作任务。在ALOHA2平台上,将一个简单的大规模数据收集的配方与可表达的模型(扩散的策略)相结合,可以有效地学习具有挑战性的手动操作任务,包括可变形的物体和复......
  • 如何用编码检测代理ip是否有效?( Python语言)
    基于requests库(简单的HTTP请求检测)首先,需要安装requests库。如果没有安装,可以在命令行中使用pipinstallrequests进行安装。以下是一个简单的函数来检测代理IP是否有效:importrequestsdefcheck_proxy(proxy):try:proxies={"http":"http:/......
  • 如何用编码检测代理ip是否有效(Java语言)
    基于java.net包(简单的HTTP请求检测)用Java语言方法来检测代理IP是否有效:importjava.io.IOException;importjava.net.HttpURLConnection;importjava.net.InetSocketAddress;importjava.net.Proxy;importjava.net.URL;publicclassProxyChecker{publicstati......
  • Pipelines 进阶
    pipelines_advanced-Copy1  Pipelines进阶¶以下任务:使用Pipeline如何与现代的大语言模型结合,以完成各类下游任务使用Tokenizer编解码文本使用Models加载和保存模型  使用Pipeline调用大语言模型¶LLM¶两种典型的语言模型:自回归:模......
  • CFA知识点梳理系列:CFA Level II, Reading 1 Multiple Regression
    前言当年考CFA的时候,从二级开始,为了方便备考和复习,我把每一个章节的要点全部整理成了xmind的格式。今天突发奇想,这些整理好的思维导图,与其静静地躺在我的电脑里,不如分享出来给大家,说不定能帮助到更多的人。所以从今天开始,我将不定期地按章节将这些内容更新上来。除了将思维......
  • NOIP2024 题解
    考场上一直都不知道在想什么,心态也很不好,结果B一直不会,最后会了C还没写完。感觉这个赛季对我来说就已经结束了吧/hsh/wn本来是想退役的,但是学文化课对我来说太痛苦了,而且我还是比较热爱OI的,所以就再试着走一走吧。P11361[NOIP2024]编辑字符串发现限制就是将\(s\)......
  • JHipster - 现代开发人员的全栈开发平台!
    Jhipster概述定义与起源:Jhipster是一个用于快速开发、构建和部署现代化Web应用程序和微服务架构的开发平台。它起源于对高效开发企业级应用的需求,结合了多种流行的前端和后端技术,为开发者提供了一个全栈式的解决方案。技术栈集成:Jhipster集成了许多先进的技术,在后端它支持Jav......
  • 数码管显示芯片/点阵LED驱动VK1624 SOP24/DIP24内置RC振荡器/可支持14×4点阵
    产品品牌:永嘉微电/VINKA产品型号:VK1624封装形式:SOP24/DIP24概述VK1624是一种数码管或点阵LED驱动控制专用芯片,内部集成有3线串行接口、数据锁存器、LED驱动等电路。SEG脚接LED阳极,GRID脚接LED阴极,可支持14SEGx4GRID、13SEGx5GRID、12SEGx6GRID、11SEGx7GRID的点阵LED显示......