乐于分享
好东西不私藏

Linux日志分析最常用的12个工具

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

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

sed —— 日志清洗神器

适合:

  • 替换

  • 删除

  • 格式整理

删除空行

sed '/^$/d' app.log

替换 IP

sed 's/127.0.0.1/localhost/g' app.log

less —— 查看大日志必备

比 cat 强太多。

常用技巧

搜索

/ERROR

向后搜索

n

实时刷新

Shift + F

tail —— 实时日志监控

开发和运维每天都会用。

实时日志

tail -f app.log

查看最后100行

tail -n 100 app.log

实时过滤错误

tail -f app.log | grep ERROR

head —— 快速查看日志开头

head -n 50 app.log
用于:
  • 查看日志格式

  • 验证日志结构


sort —— 日志排序

统计访问频率

sort access.log

按数值排序

sort -nr

通常和 uniq 配合。


uniq —— 日志去重统计

必须 先 sort

sort access.log | uniq -c

统计结果:

50 /api/login32 /api/user

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

工程师真实使用频率排行

排名
工具
使用频率
1
grep
⭐⭐⭐⭐⭐
2
awk
⭐⭐⭐⭐⭐
3
tail
⭐⭐⭐⭐⭐
4
less
⭐⭐⭐⭐
5
sort
⭐⭐⭐⭐
6
uniq
⭐⭐⭐⭐
7
sed
⭐⭐⭐
8
jq
⭐⭐⭐
9
cut
⭐⭐⭐
10
wc
⭐⭐⭐
11
lnav
⭐⭐

一条命令解决 90% 日志问题

Linux 老工程师最经典套路:

grep ERROR app.log | awk '{print $5}' | sort | uniq -c | sort -nr
含义:
  1. 找 ERROR

  2. 提取错误类型

  3. 排序

  4. 统计

  5. 找出最多错误

文章推荐
awk+grep+sed:三把刀解决90%Linux 日志分析
ripgrep + fzf:工程师必备高效搜索系统
ripgrep:比grep更快的搜索神器
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » Linux日志分析最常用的12个工具

猜你喜欢

  • 暂无文章