nginx中常見日志分析命令合集
1. 查看實(shí)時日志(流式監(jiān)控)
tail -f /var/log/nginx/access.log # 實(shí)時查看訪問日志 tail -f /var/log/nginx/error.log # 實(shí)時查看錯誤日志
2. 統(tǒng)計狀態(tài)碼分布
# 統(tǒng)計各類狀態(tài)碼數(shù)量
awk '{print $9}' access.log | sort | uniq -c | sort -nr
# 統(tǒng)計 404 錯誤的 URL
grep ' 404 ' access.log | awk '{print $7}' | sort | uniq -c | sort -nr
# 統(tǒng)計 500 錯誤的 IP 和時間
grep ' 500 ' access.log | awk '{print $1, $4}'
3. 分析熱門 URL / 資源
# 統(tǒng)計訪問最多的前 10 個 URL
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -10
# 統(tǒng)計大流量消耗的資源
awk '{print $7, $10}' access.log | sort -k2 -nr | head -10
4. 分析客戶端 IP
# 統(tǒng)計訪問 IP 數(shù)量
awk '{print $1}' access.log | sort | uniq | wc -l
# 統(tǒng)計訪問最頻繁的前 10 個 IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10
# 查看特定 IP 的詳細(xì)訪問記錄
grep '192.168.1.100' access.log
5. 分析請求時間
# 提取響應(yīng)時間字段(需日志包含 $request_time)
awk '{print $NF}' access.log | sort -n | tail -10 # 最慢的 10 個請求
# 計算平均響應(yīng)時間
awk '{sum+=$NF} END {print "Average:", sum/NR}' access.log
# 查找響應(yīng)時間超過 1 秒的請求
awk '$NF > 1 {print $4, $7, $NF}' access.log
6. 分析訪問時間段
# 按小時統(tǒng)計訪問量
awk '{print substr($4, 14, 2)}' access.log | sort | uniq -c
# 統(tǒng)計特定時間段的訪問(如 10:00-11:00)
grep ' \[01/Jan/2025:10:' access.log | wc -l
7. 分析用戶代理(User-Agent)
# 統(tǒng)計不同瀏覽器/爬蟲的訪問量
awk '{print $12}' access.log | sort | uniq -c | sort -nr
# 查找爬蟲訪問記錄
grep -i 'bot|spider' access.log
8. 分析請求方法
# 統(tǒng)計不同 HTTP 方法的使用頻率 grep -oP '^\S+ \K\S+' access.log | sort | uniq -c
9. 分析 referer 來源
# 統(tǒng)計外部鏈接來源
grep -v '"-"' access.log | awk '{print $11}' | sort | uniq -c | sort -nr
10. 組合分析(示例)
# 找出訪問量最大且響應(yīng)最慢的 10 個 URL
awk '{print $7, $NF}' access.log | sort -k2 -nr | head -10 | sort -k1
# 分析特定 IP 的行為(如查看是否是掃描器)
grep '192.168.1.100' access.log | awk '{print $7}' | sort | uniq -c
11. 使用 awk 自定義復(fù)雜分析
# 按分鐘統(tǒng)計請求數(shù)和流量
awk '{split($4, a, ":"); minute=a[2]":"a[3]; count[minute]++; bytes[minute]+=$10} END {for(m in count) print m, count[m], bytes[m]}' access.log | sort
12.日志格式說明
以上命令假設(shè) Nginx 日志采用默認(rèn)的 combined 格式:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
如果使用自定義格式,需相應(yīng)調(diào)整命令中的字段索引。
13.性能優(yōu)化建議
對于超大日志文件,可先使用 grep/sed 過濾再分析:
grep '2025:05:14' access.log | awk '{print $7}' | sort | uniq -c
定期歸檔舊日志并壓縮,減少分析范圍。
考慮使用 ELK Stack 或 Graylog 進(jìn)行實(shí)時日志分析和可視化。
通過這些命令,你可以快速定位性能瓶頸、安全威脅和用戶行為模式,提高系統(tǒng)運(yùn)維效率。
到此這篇關(guān)于nginx中常見日志分析命令合集的文章就介紹到這了,更多相關(guān)nginx日志分析命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx下配置pathinfo及ThinkPHP的URL Rewrite模式支持
這篇文章主要介紹了Nginx下配置pathinfo及ThinkPHP的URL Rewrite模式支持,使用Nginx運(yùn)行ThinkPHP的必備配置,需要的朋友可以參考下2015-07-07
nginx中狀態(tài)統(tǒng)計的實(shí)現(xiàn)
本文主要介紹了nginx中狀態(tài)統(tǒng)計的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
Nginx緩存在服務(wù)端 代理和客戶端的區(qū)別深入探索
這篇文章主要介紹了Nginx緩存在服務(wù)端 代理和客戶端的區(qū)別深入探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Nginx stream 配置代理(Nginx TCP/UDP 負(fù)載均衡)
本文主要介紹了Nginx stream 配置代理(Nginx TCP/UDP 負(fù)載均衡),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11
Nginx listen 監(jiān)聽端口的實(shí)現(xiàn)配置
本文將介紹Nginx的listen指令及其在配置文件中的應(yīng)用,通過了解listen指令,我們可以知道Nginx如何監(jiān)聽端口,并配置相應(yīng)的服務(wù)器塊來處理進(jìn)入的請求2023-12-12
詳解Nginx服務(wù)器中的nginx.conf配置文件
這篇文章主要介紹了詳解Nginx服務(wù)器中的nginx.conf配置文件,包括對HTTP服務(wù)的基本配置方法,需要的朋友可以參考下2015-08-08
Nginx結(jié)合keepalived實(shí)現(xiàn)雙機(jī)熱備方案
Nginx難免遇見故障,可以使用使用keepalived來實(shí)現(xiàn)Nginx的高可用,本文主要介紹了Nginx結(jié)合keepalived實(shí)現(xiàn)雙機(jī)熱備方案,具有一定的參考價值,感興趣的可以了解一下2024-05-05

