Day 6:日志分析(Log Analysis)
本文最后更新于92 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

这是面试、实习、工作中 使用频率极高 的技能。

以后遇到:

Nginx 502
网站打不开
Java 服务报错
Docker 容器异常退出
MySQL 启动失败
程序偶发错误
接口 500

第一反应:

看日志。


一、今日目标

今天学完你要能做到:

1、知道 Linux 日志一般放哪里
2、会看日志最后几行
3、会实时追踪日志
4、会在日志里搜索关键词
5、会初步分析报错信息
6、建立“出问题先看日志”的习惯

今天最重要的一句话:

不会看日志,就像医生不会看检查报告。


二、日志是什么

简单理解:

日志 = 程序运行记录。

比如:

什么时候启动
什么时候关闭
有没有报错
谁访问过
访问是否成功
数据库是否连接失败
配置是否加载失败

都会记下来。


比如 Nginx:

访问日志:

/var/log/nginx/access.log

错误日志:

/var/log/nginx/error.log

比如 Linux 系统日志:

在很多发行版中常见于:

/var/log/messages

或者使用 systemd 日志:

journalctl

所以出问题时:

不是猜。

而是:

查日志。


三、cat(先认识)

看文件:

cat 文件名

例如:

cat /etc/passwd

会一次性全部打印。


缺点:

日志大时会刷屏。

所以线上一般少直接 cat 大日志。


四、more / less(推荐)

看大文件:

less 文件名

例如:

less /var/log/messages

优点:

可以上下翻。


退出:

q

搜索:

/关键词

例如:

/error

回车。


继续找下一个:

n

这个很常用。


五、tail(超级高频)

看最后几行:

tail 文件名

例如:

tail /var/log/messages

默认最后 10 行。


看最后 50 行:

tail -n 50 /var/log/messages

这非常常用。

因为:

报错通常在最后。


六、实时追踪 tail -f(核心)

生产最常用之一:

tail -f 文件名

例如:

tail -f /var/log/nginx/access.log

有人访问网站:

立刻刷新一行。


看错误日志:

tail -f /var/log/nginx/error.log

有报错:

马上出现。


停止:

Ctrl + C

这个命令以后天天用。


七、grep 搜索(神技)

搜索 error:

grep error 文件名

例如:

grep error /var/log/messages

搜索 nginx:

grep nginx /var/log/messages

忽略大小写:

grep -i error 文件名

匹配:

ERROR
error
Error

统计次数:

grep error 文件名 | wc -l

非常强。


八、组合拳(高频)

最近 100 行里找 error

tail -100 文件名 | grep error

实时看错误

tail -f 文件名 | grep error

看启动日志

journalctl -u nginx

查看 Nginx Nginx 服务日志。


实时:

journalctl -u nginx -f

这个在 systemd 机器上很强。


九、你今天练习

直接敲:

cat /etc/passwd
less /etc/passwd
tail /etc/passwd
tail -n 5 /etc/passwd
grep root /etc/passwd
grep bash /etc/passwd

如果有 Nginx:

tail -f /var/log/nginx/access.log

然后浏览器访问网站。

观察日志变化。


十、面试高频题

问:网站 502 怎么查?

回答:

先看 Nginx error.log
再看 upstream 服务日志
确认服务是否启动
确认端口是否监听
确认资源是否足够

问:线上问题第一反应?

回答:

先看日志。


问:怎么实时看日志?

回答:

tail -f xxx.log

问:怎么搜索 error?

回答:

grep error xxx.log

十一、今天复盘模板

# Code 4 云计算复盘 Day 6

今日主题:
Linux 日志分析

掌握命令:
cat
less
tail
tail -f
grep
journalctl

今天理解:
日志是程序运行记录,线上问题第一反应应该先看日志。

面试表达:
排障时我会优先查看服务日志,通过 tail 查看最近日志,通过 tail -f 实时追踪,通过 grep 搜索 error / timeout / failed 等关键字定位问题。
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇