nginx中常見日志分析命令合集
1. 查看實時日志(流式監(jiān)控)
tail -f /var/log/nginx/access.log # 實時查看訪問日志 tail -f /var/log/nginx/error.log # 實時查看錯誤日志
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 的詳細訪問記錄 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 日志采用默認的 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 進行實時日志分析和可視化。
通過這些命令,你可以快速定位性能瓶頸、安全威脅和用戶行為模式,提高系統(tǒng)運維效率。
到此這篇關(guān)于nginx中常見日志分析命令合集的文章就介紹到這了,更多相關(guān)nginx日志分析命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
借用nginx.vim工具進行語法高亮和格式化配置nginx.conf文件
今天小編就為大家分享一篇關(guān)于借用nginx.vim工具進行語法高亮和格式化配置nginx.conf文件,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02Nginx三種不同類型的虛擬主機的配置(基于域名、IP 和端口)
本文主要介紹了Nginx多種虛擬主機配置方式,能夠根據(jù)域名、IP 或端口區(qū)分不同的站點,本文就來介紹一下,感興趣的可以了解一下2025-04-04Nginx服務(wù)器中配置GeoIP模塊來攔截指定國家IP
Nginx中自帶GeoIP模塊可以屏蔽指定IP的請求,只不過默認沒有被編譯,打開以后我們只要再下載一個IP規(guī)則就行,Nginx服務(wù)器中配置GeoIP模塊來攔截指定國家IP2016-06-06詳解nginx rewrite和根據(jù)url參數(shù)location
本篇文章主要是介紹了nginx rewrite和根據(jù)url參數(shù)location,有興趣的同學(xué)可以了解以下。2016-11-11nginx 不同的訪問路徑對應(yīng)項目不同的目錄的實現(xiàn)方法
要在 Nginx 中配置不同的訪問路徑對應(yīng)不同的項目目錄,可以使用 Nginx 的?location?指令來實現(xiàn),本文主要介紹了nginx不同的訪問路徑對應(yīng)項目不同的目錄的實現(xiàn)方法,具有一定的參考價值,感興趣的可以了解一下2023-09-09NGINX?權(quán)限控制文件預(yù)覽和下載的實現(xiàn)原理
我們知道,使用nginx作為文件下載服務(wù)器,可以極大地降低對后端Java服務(wù)器的負載沖擊,但是nginx本身并不提供授權(quán)控制,這下該如何操作呢,下面小編給大家?guī)砹薔GINX?權(quán)限控制文件預(yù)覽和下載的實現(xiàn)原理,感興趣的朋友跟隨小編一起看看吧2022-01-01