Linux日志分析最常用的12个工具
在真实生产环境中,Linux日志分析其实有一个非常稳定的“工具栈”。绝大多数工程师 80% 的日志问题,其实都靠几个 CLI 工具解决。
下面给你一份 Linux 日志分析最常用工具排行榜(工程师真实使用版)。
1. grep —— 日志过滤之王
几乎所有日志分析第一步都是 grep。
最常用命令
# 查找错误grep ERROR app.log# 忽略大小写grep -i error app.log# 显示上下文grep -C 5 ERROR app.log
生产场景
查找某个异常
grep "NullPointerException" app.log
实时过滤日志
tail -f app.log | grep ERROR
2 awk —— 日志结构化分析神器
awk 是 最强日志分析工具之一。
适合:
-
Nginx
-
Apache
-
访问日志
-
CSV日志
示例:统计访问 IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr
输出
120 192.168.1.198 10.0.0.5
示例:统计接口访问次数
awk '{print $7}' access.log | sort | uniq -c | sort -nr
3 sed —— 日志清洗神器
适合:
-
替换
-
删除
-
格式整理
删除空行
sed '/^$/d' app.log
替换 IP
sed 's/127.0.0.1/localhost/g' app.log
4 less —— 查看大日志必备
比 cat 强太多。
常用技巧
搜索
/ERROR
向后搜索
n
实时刷新
Shift + F
5 tail —— 实时日志监控
开发和运维每天都会用。
实时日志
tail -f app.log
查看最后100行
tail -n 100 app.log
实时过滤错误
tail -f app.log | grep ERROR
6 head —— 快速查看日志开头
head -n 50 app.log
用于:
-
查看日志格式
-
验证日志结构
7 sort —— 日志排序
统计访问频率
sort access.log
按数值排序
sort -nr
通常和 uniq 配合。
8 uniq —— 日志去重统计
必须 先 sort。
sort access.log | uniq -c
统计结果:
50 /api/login32 /api/user
9 cut —— 提取字段
日志字段提取神器。
例子:
提取 IP
cut -d ' ' -f1 access.log
提取 URL
cut -d '"' -f2 access.log
10 wc —— 日志统计
统计行数
wc -l access.log
统计错误数量
grep ERROR app.log | wc -l
11 jq —— JSON 日志分析神器
如果日志是 JSON 格式,jq 必备。
例如:
{"level":"error","msg":"db failed","user":"123"}
提取字段
jq '.level' log.json
筛选错误
jq 'select(.level=="error")' log.json
12 lnav —— 专业日志查看器
比 less 更强。
功能:
-
自动解析日志
-
SQL 查询日志
-
高亮异常
-
实时分析
安装
brew install lnav
打开
lnav app.log
工程师最常用日志分析组合
组合 1:错误实时监控
tail -f app.log | grep ERROR
组合 2:统计访问最多 IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
组合 3:统计接口访问次数
awk '{print $7}' access.log | sort | uniq -c | sort -nr
组合 4:统计错误类型
grep ERROR app.log | awk '{print $5}' | sort | uniq -c
工程师真实使用频率排行
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
一条命令解决 90% 日志问题
Linux 老工程师最经典套路:
grep ERROR app.log | awk '{print $5}' | sort | uniq -c | sort -nr
含义:
-
找 ERROR
-
提取错误类型
-
排序
-
统计
-
找出最多错误
夜雨聆风