You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写脚本监控日志30分钟内连续出现CRITICAL关键字

解决方案:监控CPU日志连续CRITICAL告警的Bash脚本

下面是满足需求的Bash脚本,核心逻辑是实时跟踪日志、逐行校验关键字、维护连续计数,触发条件后自动终止监控:

#!/bin/bash

# 替换为你的实际日志文件路径
LOG_FILE="/path/to/cpu_usage.out"
# 连续CRITICAL计数初始化为0
critical_count=0

# 实时跟踪日志新增内容,逐行处理
tail -f "$LOG_FILE" | while read -r line; do
    if echo "$line" | grep -q "CRITICAL"; then
        # 匹配到CRITICAL,计数+1
        ((critical_count++))
        # 检查是否达到连续30次阈值
        if [ "$critical_count" -eq 30 ]; then
            echo "触发告警:连续30分钟检测到CPU使用率CRITICAL"
            # 退出循环,管道另一端的tail会因SIGPIPE自动终止
            exit 0
        fi
    else
        # 出现非CRITICAL记录,重置计数
        critical_count=0
    fi
done

关键逻辑说明

  • tail -f "$LOG_FILE":持续跟踪日志文件的新增行,确保能获取每分钟的CPU记录
  • while read -r line:安全读取每一行内容,-r参数避免解析行内的转义字符
  • grep -q "CRITICAL":静默校验当前行是否包含目标关键字,只返回状态码不输出冗余内容
  • 计数机制:每匹配一次CRITICAL就累加计数,遇到非CRITICAL行立即重置为0;当计数达到30时,脚本直接退出,此时管道中的tail进程会收到SIGPIPE信号自动终止
  • 可扩展性:在exit 0前可添加邮件告警等自定义逻辑

测试方法

  1. 手动往日志文件追加CRITICAL行测试计数累加:
    for i in {1..30}; do echo "CRITICAL: CPU usage high" >> /path/to/cpu_usage.out; done
    
  2. 追加非CRITICAL行测试计数重置:
    echo "INFO: CPU usage normal" >> /path/to/cpu_usage.out
    

内容的提问来源于stack exchange,提问作者Diligent Bug

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 17:52:41