Linux下統計Nginx的log日誌常用命令

2021-03-02 服務端技術精選
工作中可能需要通過nginx日誌來分析網站的訪問情況,此時就需要對nginx日誌進行分析,以下是常用的分析命令:

一、IP相關統計

1、統計IP訪問量 統計PV 

awk '{print $7}' access.log|wc -l

2、獨立ip訪問數量  統計UV

awk '{print $1}' access.log | sort -n | uniq | wc -l

3、查看某一時間段的IP訪問量(4-5點)

grep "05/Oct/2018:0[4-5]" access.log | awk '{print $1}' | sort | uniq -c| sort -nr | wc -l

4、查看訪問最頻繁的前100個IP

awk '{print $1}' access.log | sort -n |uniq -c | sort -rn | head -n 100

5、查看訪問100次以上的IP

awk '{print $1}' access.log | sort -n |uniq -c |awk '{if($1 >100) print $0}'|sort -rn

6、查詢某個IP的詳細訪問情況,按訪問頻率排序

grep '127.0.0.1' access.log |awk '{print $7}'|sort |uniq -c |sort -rn |head -n 100

二、頁面訪問統計

1、查看訪問最頻的頁面(TOP50)

awk '{print $7}' access.log | sort |uniq -c | sort -rn | head -n 50

2、查看訪問最頻的頁面([排除php頁面】(TOP50)

grep -v ".php"  access.log | awk '{print $7}' | sort |uniq -c | sort -rn | head -n 50

3、查看頁面訪問次數超過100次的頁面

cat access.log | cut -d ' ' -f 7 | sort |uniq -c | awk '{if ($1 > 100) print $0}' | less

4、查看最近1000條記錄,訪問量最高的頁面

tail -1000 access.log |awk '{print $7}'|sort|uniq -c|sort -nr|less

三、請求量統計

1、統計每秒的請求數,top100的時間點(精確到秒)

awk '{print $4}' access.log |cut -c 14-21|sort|uniq -c|sort -nr|head -n 100

2、統計每分鐘的請求數,top100的時間點(精確到分鐘)

awk '{print $4}' access.log |cut -c 14-18|sort|uniq -c|sort -nr|head -n 100

3、統計每小時的請求數,top100的時間點(精確到小時)

awk '{print $4}' access.log |cut -c 14-15|sort|uniq -c|sort -nr|head -n 100

四、性能分析

在nginx log中最後一個欄位加入$request_time

1、列出傳輸時間超過 3 秒的頁面,顯示前20條

cat access.log|awk '($NF > 3){print $7}'|sort -n|uniq -c|sort -nr|head -20

2、列出php頁面請求時間超過3秒的頁面,並統計其出現的次數,顯示前100條

cat access.log|awk '($NF > 1 &&  $7~/\.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100

五、TCP連接統計

1、查看當前TCP連接數

netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l

2、用tcpdump嗅探80埠的訪問看看誰最高

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr

相關焦點

  • 性能工具之linux常見日誌統計分析命令
    47.203.89.212 - - [19/Apr/2017:03:06:53 +0000] "GET / HTTP/1.1" 200 10599 50 49Nginx統計請求和後臺服務響應時間使用默認 combined 的經典格式上擴展 response_time&upstream_response_timenginx.conf 使用配置方式:
  • linux最常用的命令
    並通過less分頁顯示【head命令】 - 默認head命令列印其相應文件的開頭10行常用命令:head 1.log -n 20 顯示1.log文件中的前20行head -c 20 1.log 顯示1.log文件前20位元組head -n -10 1.log 顯示1.log文件內容的最後10行【tail命令】 ---- 常用於查看日誌文件
  • linux應急常用命令+技巧總結
    ps aux --sort=pcpu | head -10 # 查看cpu佔用率前十的進程,有時候可以發現top發現不了的東西netstat -anpl  # 檢查當前存在的連接與監聽埠ps -ef #查看當前系統上運行的所有進程與其使用的命令w # 查看活動用戶who # 查看當前登錄用戶(tty 本地登陸  pts 遠程登錄) /var/log/utmp
  • 分享18個 實用 Linux 運維命令及知識
    -name "*.log" –mtime +30 –typef –size +100M |xargs rm –rf {};2、批量解壓當前目錄下以.zip結尾的所有文件到指定目錄:for i  in  `find .
  • linux作業系統常用命令及常用問題
    一、linux作業系統常用命令>linux作業系統詳解(linux不再難懂)●man :任何時候你覺得對一個命令行不是很確定,都可以通過輸入「man + 命令」了解這個命令能確切是做什麼的。
  • linux系統下各種日誌文件的介紹,查看,及日誌服務配置
    linux主機的日記,不同的日誌文件記載了不同類型的信息,如Linux內核消息、用戶登錄事件、程序錯誤等。.進程監控日誌進程統計監控日誌在監控用戶的操作指令是非常有效的。在默認的syslog配置下,日誌文件通常都保存在「/var/log」目錄下。syslog的守護進程為syslogd,系統啟動時,默認會自動運行syslogd守護進程。
  • Linux 自帶神器 logrotate 詳解
    ># /usr/sbin/logrotate -f /etc/logrotate.d/nginx# /usr/sbin/logrotate -d -f /etc/logrotate.d/nginxlogrotate 命令格式:logrotate [OPTION...]
  • Linux常用命令詳解
    常用操作命令:Enter    向下n行,需要定義。常用查看日誌文件。常用參數:-f 循環讀取(常用於查看遞增的日誌文件)-n<行數> 顯示行數(從後向前)(1)循環讀取逐漸增加的文件內容ping 127.0.0.1 > ping.log &(後臺運行:可使用jobs -l查看,也可使用fg將其移到前臺運行)tail -f ping.log(查看日誌)
  • Linux常用命令 - grep
    grep 命令代表「全局正則表達式 print」 ,它是 Linux 中最強大和最常用的命令之一。1mxfNjgrep 在一個或多個輸入文件中搜索與給定模式匹配的行,並將每個匹配行寫入標準輸出。如果沒有指定文件,grep 將從標準輸入讀取,這通常是另一個命令的輸出。
  • 不得不看的17 個linux實用技巧
    -name "*.log" –mtime +30 –typef –size +100M |xargs rm –rf {};2、批量解壓當前目錄下以.zip結尾的所有文件到指定目錄:for i in `find .
  • Linux 運維需要掌握的 17 個實用技巧
    -name "*.log" –mtime +30 –typef –size +100M |xargs rm –rf {};2、批量解壓當前目錄下以.zip結尾的所有文件到指定目錄:for i in `find .
  • Linux用於顯示文件的more命令
    前言在linux中,常用的用於顯示文件內容的命令有:cat、more、less、head、tail。在前面的幾篇文章裡,我們已經介紹過tail的使用,tail和head使用起來一樣,一個是從後查看,一個是從頭查看。
  • XshellPortable——linux優秀連接工具教程(帶常用命令)
    ---最後進行命令即可哦常用的命令:suse linux 常用命令 (1) 命令ls——列出文件 ls 顯示當前目錄文件 ls -la 給出當前目錄下所有文件的一個長列表,包括以句點開頭的「隱藏」文件 ls a* 列出當前目錄下以字母a開頭的所有文件 ls -l *.doc 給出當前目錄下以
  • 分享18個實用Linux運維命令及知識
    -name "*.log" –mtime +30 –typef –size +100M |xargs rm –rf {};2、批量解壓當前目錄下以.zip結尾的所有文件到指定目錄:for i  in  `find .
  • 從0開始,在Linux中配置Nginx反向代理、負載均衡、session共享、動靜分離
    /configure --prefix=/opt/nginx --with-http_ssl_module --with-http_gzip_static_module --error-log-path=/var/log/nginx/nginx.log --pid-path=/var/log/nginx/pid### 詳細版(留著以後備用):### 下面的 \ 意思是這個命令還沒完
  • Linux命令之十二 tail命令
    收錄於話題 #linux  # 默認顯示末尾10行內容 % tail head.txt 11 12 13 14 15 16 17 18 19 20  # n選項接上數字指定顯示末尾多少行 % tail -n 5 head.txt 16 17 18 19 20
  • awk一個linux系統的中的好教官
    日誌統計開發web的人員知道,我們經常需要查看nginx的伺服器來統計來訪者的記錄。而awk教官可以很方便幫我們處理好存放在日誌中的士兵,可以幫助我們選出最高的士兵,可以幫助我們選出經常出操的士兵,可以幫我們選出哪些士兵經常在一起。看下面的一個需求:我們需要看看經常訪問網站的有哪些ip,並且把它們的訪問次數統計出來。
  • 17個在 Linux 運維中定要掌握的實用技巧
    -name "*.log" –mtime +30 –typef –size +100M |xargs rm –rf {};2、批量解壓當前目錄下以.zip結尾的所有文件到指定目錄:for i  in  `find .
  • seci-log 1.01 發布,日誌分析軟體
    這篇文章是 seci-log 開源日誌分析軟體發布了 http://www.oschina.net/news/61996/seci-log
  • Linux 自動化基礎之find
    本文章蟲蟲會挑一些常用的參數,重點實例介紹。最後用find實現一個腳本,實現自動化日誌清理。好讓咱們開始介紹。find 用法:find用戶很簡單,最簡單是直接find然後會車,會列出當前目錄下的所有文件和目錄。