温馨提示×

怎么定位linux日志中的异常

小樊
51
2026-10-17 03:34:04
栏目: 智能运维

在 Linux 中定位日志异常,通常遵循**“先范围 → 再关键字 → 再时间 → 再上下文”**的思路。下面给你一套实用方法,从基础到进阶。


一、先确定日志在哪

常见日志位置:

  • 系统日志:/var/log/messages、/var/log/syslog
  • 认证日志:/var/log/secure、/var/log/auth.log
  • 应用日志:如 /var/log/nginx/、/var/log/app/
  • journald(systemd):
journalctl
journalctl -u nginx

二、最常用:关键字搜索

1. grep 基础

grep -i error /var/log/messages
grep -i "exception" /var/log/app/app.log

2. 多关键字

grep -E "error|fail|timeout" /var/log/syslog

3. 排除噪音

grep "ERROR" app.log | grep -v "healthcheck"

三、按时间定位(非常重要)

1. journalctl 按时间

journalctl --since "2026-01-21 10:00" --until "2026-01-21 10:30"

2. 普通日志按时间

sed -n '/Jan 21 10:00/,/Jan 21 10:30/p' /var/log/messages

四、看上下文(异常不能只看一行)

1. 前后各 N 行

grep -C 10 "NullPointerException" app.log

2. 仅前面 / 后面

grep -B 5 "ERROR" app.log
grep -A 20 "Exception" app.log

五、统计异常频率

1. 统计错误出现次数

grep -c "ERROR" app.log

2. Top 异常类型

grep "ERROR" app.log | awk '{print $NF}' | sort | uniq -c | sort -nr | head

六、实时观察异常

tail -f /var/log/app/app.log | grep -i error

七、进阶工具(强烈推荐)

1. less(交互搜索)

less /var/log/app/app.log
  • /error 搜索
  • n 下一个

2. awk 提取字段

awk '/ERROR/ {print $1, $2, $3, $0}' app.log

3. 日志分析工具

  • lnav(彩色 + 自动识别日志)
  • grep + jq(JSON 日志)
cat app.json | jq 'select(.level=="ERROR")'

八、常见异常“信号词”

优先搜这些:

ERROR
Exception
FATAL
timeout
refused
denied
OutOfMemory
stack trace

九、实战定位流程示例

  1. 发现服务异常
  2. journalctl -u xxx --since "10 min ago"
  3. grep -i error
  4. grep -C 20 关键报错
  5. 看时间 + 上下文 → 定位根因

如果你有具体日志内容或应用场景(如 Nginx、Java、K8s、数据库),我可以直接帮你写精准命令。

0 踩