MST
星途 面试题库

面试题:Bash脚本结合日志分析实现智能监控

你负责监控一个应用程序的运行状况,其日志文件`app_monitor.log`记录了应用程序各种操作事件。日志格式为`时间 事件类型 事件详情`,如`2023 - 12 - 01 14:45:00 内存溢出 内存使用达到90%`。编写一个Bash脚本,实现以下功能:当在日志中检测到连续5次`CPU使用率过高`事件(事件类型为`CPU使用率过高`)时,自动发送一封邮件到管理员邮箱(假设邮件发送命令为`echo '邮件内容' | mail -s '应用程序警报' admin@example.com`),并且从日志中提取出每次`CPU使用率过高`事件对应的时间和事件详情,将其作为邮件内容的一部分发送。同时,该脚本要能够持续监控日志文件的新增内容。
21.1万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
#!/bin/bash

cpu_count=0
while true; do
    new_lines=$(tail -n +$(($(wc -l < app_monitor.log)+1)) app_monitor.log)
    for line in $new_lines; do
        event_type=$(echo $line | awk '{print $2}')
        if [ "$event_type" = "CPU使用率过高" ]; then
            cpu_count=$((cpu_count + 1))
            if [ $cpu_count -eq 5 ]; then
                cpu_events=$(grep "CPU使用率过高" app_monitor.log | tail -n 5 | awk '{print $1 " " $3}')
                echo "以下是连续5次CPU使用率过高事件:$cpu_events" | mail -s '应用程序警报' admin@example.com
                cpu_count=0
            fi
        else
            cpu_count=0
        fi
    done
    sleep 1
done