日志幾百兆怎么看?運維老鳥常用的高效排查套路
在日常運維和開發(fā)工作中,日志就是系統(tǒng)的“黑匣子”。無論是排查故障、監(jiān)控運行狀態(tài),還是追蹤安全事件,日志往往能給我們提供最關鍵的線索。
然而,很多新人常?!翱吹靡?,卻看不懂”,要么面對動輒上百兆的日志文件束手無策,要么在調(diào)試問題時找不到重點信息。今天,我們就來系統(tǒng)梳理一下 Linux 日志查看的常用方法與實戰(zhàn)技巧,幫你從入門到進階,玩轉(zhuǎn)日志排查!

Linux 日志都藏在哪里?
日志文件大多集中在 /var/log/ 目錄下,不同服務有對應的日志:
(1) 系統(tǒng)級日志
- /var/log/messages:系統(tǒng)核心日志,涵蓋內(nèi)核消息、進程運行情況等。
- /var/log/syslog:在 Ubuntu/Debian 系統(tǒng)中取代 messages 的角色。
(2) 安全與認證日志
- /var/log/auth.log(Debian/Ubuntu)
- /var/log/secure(CentOS/RHEL)記錄登錄、sudo 使用、SSH 認證等安全事件。
(3) 服務相關日志
- /var/log/nginx/:Nginx 的訪問日志 (access.log) 和錯誤日志 (error.log)
- /var/log/apache2/:Apache日志
- /var/log/mysql/:MySQL 啟動、查詢、錯誤日志
(4) 定時任務日志
/var/log/cron:所有定時任務的執(zhí)行情況。
小技巧:當你不知道某個服務的日志在哪,可以直接去 /var/log/ 下按服務名搜索。
日志查看的常用命令
(1) cat 直接輸出日志
適合小文件、快速瀏覽。
# 查看系統(tǒng)日志
cat /var/log/messages
# 只看最后 10 行
cat /var/log/messages | tail -n 10(2) tail 實時追蹤日志(最常用)
# 實時輸出新增日志
tail -f /var/log/nginx/access.log
# 顯示最后 20 行并持續(xù)跟蹤
tail -n 20 -f /var/log/mysql/error.log
# 同時跟蹤多個文件
tail -f /var/log/nginx/access.log /var/log/nginx/error.log(3) head 查看日志開頭部分
# 默認 10 行
head /var/log/auth.log
# 查看前 50 行
head -n 50 /var/log/boot.log(4) more/less 分頁查看大日志
當日志文件幾百 MB 時,分頁瀏覽才不會“卡屏”。
# 按空格翻頁
more /var/log/messages
# 更強大的 less,支持上下鍵和搜索
less /var/log/nginx/access.log日志分析進階:篩選與提取
(1) grep 關鍵詞搜索
# 查找 SSH 登錄失敗記錄
grep "Failed password" /var/log/auth.log
# 查找 Nginx 500 錯誤(忽略大小寫)
grep -i "500" /var/log/nginx/access.log
# 顯示匹配行上下文
grep -C 5 "error" /var/log/mysql/error.log
# 統(tǒng)計關鍵詞出現(xiàn)次數(shù)
grep -c "timeout" /var/log/nginx/error.log(2) awk 按列提取
# 提取 Nginx 日志中的 IP 和路徑
awk '{print $1, $7}' /var/log/nginx/access.log
# 統(tǒng)計訪問量前 10 的 IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10(3) sed 按條件取日志片段
# 查看第 100-200 行
sed -n '100,200p' /var/log/messages
# 刪除 debug 相關行
sed '/debug/d' /var/log/app.log(4) 按時間篩選
# 查找 2023-10-01 08:00 ~ 09:00 的訪問記錄
grep "2023/10/01 08:" /var/log/nginx/access.log
# 更精準的時間過濾(按字段對比)
awk '$4 >= "[01/Oct/2023:08:00:00" && $4 <= "[01/Oct/2023:09:00:00"' /var/log/nginx/access.log日志輪轉(zhuǎn)與歸檔
Linux使用 logrotate 定期壓縮和歸檔日志:
- messages-20231001.gz
- secure.1
查看歸檔日志:
# 直接查看壓縮文件
zcat /var/log/messages-20231001.gz | grep "error"
# 解壓后分析
gunzip /var/log/messages-20231001.gz
cat messages-20231001實戰(zhàn)案例
(1) 場景 1:排查 SSH 登錄失敗
grep "Failed" /var/log/auth.log | tail -n 20快速定位可疑 IP,防止暴力破解。
(2) 場景 2:分析 Nginx 訪問突增
tail -n 10000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 5一眼看出“流量大戶”,幫助甄別是否遭遇爬蟲或攻擊。
(3) 場景 3:跟蹤服務啟動報錯
journalctl -b | grep -i "failed"在systemd系統(tǒng)上,journalctl 是必備神器,比傳統(tǒng)日志更全面。
總結
日志排查的核心思路可以概括為:
找到 → 過濾 → 提取 → 分析
- 找到:熟悉 /var/log/ 目錄和服務日志位置
- 過濾:用 grep、awk、sed 精準提取
- 提?。航Y合字段,按 IP、時間、狀態(tài)碼等統(tǒng)計
- 分析:形成自己的“故障排查手冊”
掌握這些方法,能讓你在面對故障時不再“瞎子摸象”,而是有章可循、快速定位問題。
日志是系統(tǒng)留給我們的“線索”,學會讀懂它,你就能更快找到真相!


























