0

0

Linux日志异常模式识别_故障预警分析思路【指导】

冷漠man

冷漠man

发布时间:2025-12-31 20:32:01

|

899人浏览过

|

来源于php中文网

原创

日志异常模式识别需先筛选高优先级日志与关键词,再分析时间序列密度;具体包括grep/awk命令快速定位err、failed等信号,及按时间窗口统计错误频次以发现偏离基线的异常。

linux日志异常模式识别_故障预警分析思路【指导】

如果您在Linux系统中观察到服务响应迟缓、进程意外终止或安全告警频发,日志中可能已隐含异常模式。以下是识别这些模式并支撑故障预警分析的具体操作路径:

一、基于日志级别与关键词的快速筛选

高优先级日志级别(如errcritalert)及敏感关键词(如“failed”、“denied”、“segmentation fault”、“oom-killer”、“connection refused”)是异常行为的直接信号。通过基础命令可实现毫秒级定位。

1、执行命令:grep -i "failed\|denied\|err\|crit" /var/log/auth.log | tail -20

2、执行命令:grep -E "(segmentation fault|oom-killer|connection refused)" /var/log/messages | head -15

3、执行命令:awk '$6 ~ /ERR|CRIT|ALERT/ {print $0}' /var/log/syslog | sort | uniq -c | sort -nr | head -10

二、基于时间序列的异常密度检测

短时间内高频重复出现同类错误,往往指向配置缺陷、资源枯竭或攻击行为。该方法不依赖预设规则,仅依据事件发生频次与时间窗口偏离基线的程度进行判别。

1、提取最近1小时内每5分钟的错误计数:awk -v start="$(date -d '1 hour ago' '+%b %d %H:%M')" '$0 ~ start,/^$/ {count++} END {print count}' /var/log/messages 2>/dev/null || echo 0

2、统计过去24小时各整点的ERROR行数并排序:awk '{print substr($1,1,6), $2, $3}' /var/log/messages | grep -i "error" | awk '{print $1" "$2" "$3}' | cut -d':' -f1 | sort | uniq -c | sort -nr

3、对比当前10分钟错误量与昨日同段均值:expr $(grep -c "error"

三、基于IP与用户行为的关联分析

认证日志中的异常访问模式常体现为暴力尝试、跨地域登录或非工作时段操作。将来源IP、用户名、时间戳三者交叉比对,可有效识别可疑行为链。

1、列出近3小时内失败登录次数≥5的IP:grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | awk '$1 >= 5 {print $0}' | sort -nr

2、筛选同一用户在10分钟内从不同IP登录成功的记录:awk '/Accepted/{print $9, $11, $1, $2, $3}' /var/log/auth.log | sort -k1,1 -k2,2 | uniq -w20 -D | awk '{print $1, $2}' | sort | uniq -c | awk '$1 > 1'

3、提取root用户在非标准时段(00:00–05:59)的登录行为:awk '/Accepted.*root/ && ($3+0 >= 0 && $3+0

四、基于系统资源事件的上下文回溯

内核日志(/var/log/kern.log)和dmesg输出中包含内存压力、硬件中断、OOM Killer触发等底层事件。将这些事件与应用日志时间戳对齐,可确认是否由资源瓶颈引发连锁故障。

1、查找最近一次OOM Killer动作及被终止进程:dmesg -T | grep -i "killed process" | tail -3

2、提取过去2小时内存不足警告与对应时间点的进程列表:grep -i "out of memory\|oom" /var/log/kern.log | tail -5 | while read line; do ts=$(echo "$line" | awk '{print $1,$2,$3}'); echo "$ts"; ps aux --sort=-%mem | head -3; done

3、匹配/var/log/messages中磁盘满错误与df输出:grep "No space left on device" /var/log/messages | tail -1 | xargs -I{} sh -c 'echo {}; df -h | grep -E "(^/|vg|lv)"'

五、基于日志格式一致性校验的静默异常发现

某些异常不会产生显式错误信息,而是表现为日志格式断裂、字段缺失、时间戳倒流或日志停止写入。这类“静默异常”需通过结构化校验机制主动探测。

1、检查/var/log/messages最近100行是否存在空行或时间戳异常(如年份非2025):tail -100 /var/log/messages | awk 'NR==1{t=$1" "$2" "$3} $1" "$2" "$3 != t && $1 ~ /^[A-Z][a-z]+$/ {print NR, $0; t=$1" "$2" "$3}'

2、验证Apache error.log中每行是否含标准时间戳格式([Day Mon DD HH:MM:SS YYYY]):awk '!/\[[A-Z][a-z]{2} [A-Z][a-z]{2} [0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} 2025\]/ {print NR, $0}' /var/log/apache2/error.log | head -5

3、检测rsyslog服务是否仍在写入日志(对比最新行时间与系统当前时间差是否超5分钟):expr $(date +%s) - $(date -d "$(tail -1 /var/log/messages | awk '{print $1,$2,$3}')" +%s 2>/dev/null || echo 0)

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

183

2023.09.27

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

229

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

434

2024.03.01

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

192

2023.11.20

sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

378

2023.09.04

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

184

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

263

2023.10.25

alert怎么实现换行
alert怎么实现换行

alert通过使用br标签来实现换行。更多关于alert相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

489

2023.11.07

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.3万人学习

Git 教程
Git 教程

共21课时 | 2.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号