日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux awk 日志分析,Linux Awk使用案例总结 nginx日志统计

發布時間:2025/3/15 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux awk 日志分析,Linux Awk使用案例总结 nginx日志统计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

[隱藏]

一、Nginx日志分析

知識點:

數組

數組是用來存儲一系列值的變量,可通過索引來訪問數組的值。

Awk中數組稱為關聯數組,因為它的下標(索引)可以是數字也可以是字符串。

下標通常稱為鍵,數組元素的鍵和值存儲在Awk程序內部的一個表中,該表采用散列算法,因此數組元素是隨機排序。

數組格式:array[index]=value

一、Nginx日志分析

日志格式

'$remote_addr - $remote_user [$time_local] "$request" $status $request_body $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"

日志記錄:

183.251.21.109 - - [16/Sep/2017:09:43:36 +0800] "POST /article/getKeywords HTTP/1.1" 200 str=Linux+Awk%E4%BD%BF%E7%94%A8%E6%A1%88%E4%BE%8B%E6%80%BB%E7%BB%93+nginx%E6%97%A5%E5%BF%97%E7%BB%9F%E8%AE%A1 185 "http://xxxx" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36" "-"

1、統計日志中訪問最多的10個IP

思路:對第一列進行去重,并輸出出現的次數

方法1:

awk '{a[$1]++}END{for(i in a)print a[i],i|"sort -k1 -nr|head -n10"}' access.log

方法2:

awk '{print $1}' access.log |sort |uniq -c |sort -k1 -nr |head -n10

說明:a[$1]++ 創建數組a,以第一列作為下標,使用運算符++作為數組元素,元素初始值為0。處理一個IP時,下標是IP,元素加1,處理第二個IP時,下標是IP,元素加1,如果這個IP已經存在,則元素再加1,也就是這個IP出現了兩次,元素結果是2,以此類推。因此可以實現去重,統計出現次數。

2、統計日志中訪問大于100次的IP

方法1:

awk '{a[$1]++}END{for(i in a){if(a[i]>100)print i,a[i]}}' access.log

方法2:

awk '{a[$1]++;if(a[$1]>100){b[$1]++}}END{for(i in b){print i,a[i]}}' access.log

說明:方法1是將結果保存a數組后,輸出時判斷符合要求的IP。方法2是將結果保存a數組時,并判斷符合要求的IP放到b數組,最后打印b數組的IP。

3、統計2016年4月9日一天內訪問最多的10個IP

思路:先過濾出這個時間段的日志,然后去重,統計出現次數

方法1:

awk '$4>="[9/Apr/2016:00:00:01" && $4<="[9/Apr/2016:23:59:59" {a[$1]++}END{for(i in a)print a[i],i|"sort -k1 -nr|head -n10"}' access.log

方法2:

sed -n '/[9/Apr/2016:00:00:01/,/[9/Apr/2016:23:59:59/p' access.log |sort |uniq -c |sort -k1 -nr |head -n10 #前提開始時間與結束時間日志中必須存在

4、統計當前時間前一分鐘的訪問數

思路:先獲取當前時間前一分鐘對應日志格式的時間,再匹配統計

date=$(date -d '-1 minute' +%d/%b/%Y:%H:%M);awk -vdate=$date '$0~date{c++}END{print c}' access.log

date=$(date -d '-1 minute' +%d/%b/%Y:%H:%M);awk -vdate=$date '$4>="["date":00" && $4<="["date":59"{c++}END{print c}' access.log

grep -c $(date -d '-1 minute' +%d/%b/%Y:%H:%M) access.log

說明:date +%d/%b/%Y:%H:%M –> 09/Apr/2016:01:55

5、統計訪問最多的前10個頁面($request)

awk '{a[$7]++}END{for(i in a)print a[i],i|"sort -k1 -nr|head -n10"}' access.log

6、統計每個URL訪問內容的總大小($body_bytes_sent)

awk '{a[$7]++;size[$7]+=$10}END{for(i in a)print a[i],size[i],i}' access.log

7、統計每個IP訪問狀態碼數量($status)

awk '{a[$1" "$9]++}END{for(i in a)print i,a[i]}' access.log

8、統計訪問狀態碼為404的IP及出現次數

awk '{if($9~/404/)a[$1" "$9]++}END{for(i in a)print i,a[i]}' access.log

原文出處:peiwoqu -> http://peiwoqu.com/article/828

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的linux awk 日志分析,Linux Awk使用案例总结 nginx日志统计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。