溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

日志統(tǒng)計中awk常見的運用

發(fā)布時間:2020-07-20 09:22:15 來源:網(wǎng)絡(luò) 閱讀:1332 作者:竹弦月 欄目:網(wǎng)絡(luò)安全

前言首先awk是一門語言,其次跟其他語言相比,awk的優(yōu)勢是在文本處理、數(shù)值計算等方面,在我們?nèi)粘5倪\維工作中,awk還有1個很重要的場景是配合sed、grep的使用,正是因為這些,awk是運維工程師最常用的工具之一,下面記錄一下,awk在日志收集、統(tǒng)計場景的一些最常用的姿勢。


awk使用格式

awk [-F value] [-v var=value] 'program text' [files....]
program text:
     BEGIN {actions}/pattern/{actions}END{actions}
內(nèi)置變量
    
FS--Field Separator:域的分隔符,默認的是以空白符分隔
    
RS--Record Separator 記錄的分隔符,默認是以換行符來分隔
    
FILENAME -- current filename
                   NF -- Number of
Feilds in current record,域的個數(shù)
    
NR -- Number of Record 輸入的記錄數(shù),相當于行號一樣,多個文件時會接著遞增
    
FNR -- File Number of Record 輸入的當前記錄數(shù),每個文件單獨計算
    
$0 -- the whole record  當前整個記錄
    
$n -- the nth field of the current record 當前記錄的第n個域


awk常用函數(shù)

1、split (string, array, field separator)

2、substr(s,p,n) 返回字符串s中從p開始長度為n的后綴部分

3、 length函數(shù)返回沒有參數(shù)的字符串的長度

4、gsub(regular expression, subsitutionstring, target string)



awk擴展使用

awk[options] 'script' FILES
選項
-F:字段分隔符
-v:聲明一個變量,FS=:
awk'{print $1 $2}' a.txt:則顯示welcometo
awk'{print $1,$2}' a.txt:則顯示wlecometo
--------------
內(nèi)置變量
    ORS
     OFS
     FS
     RS
     NR
     NF
     FNR
     ARGV:數(shù)組,保存命令行本身這個字符串,如awk'{print $0}' a.txt b.txt
         這個命令中,ARGV[0]保存awk,ARGV[1]保存a.txt
    ARGC:awk命令的參數(shù)個數(shù)
----------------
printf命令的使用格式
    printfformat,item1
要點:
1、其與print命令最大的不同是,printf需要指定format
2、format用于指定后面的每個item的輸出格式
3、printf語句不會自動打印換行符
format格式的指示符:
%c:顯示字符的ASCII
%d,%i十進制的整數(shù)
%e,%E科學計數(shù)法顯示數(shù)值
%f:顯示浮點數(shù)
%g,%G以科學計數(shù)法的格式或浮點數(shù)的格式顯示數(shù)值
%s:顯示字符串
%u:無符號整數(shù)
%%:顯示%自身

修飾符:
N:顯示寬度
-:左對齊
+:顯示數(shù)值符號


1,統(tǒng)計squid日志中各個狀態(tài)碼所占的百分比

# cat /usr/local/squid/var/logs/access.log | awk 'BEGIN{print "status code","\t""rate"}{count+=1;a[$9]+=1}END{for(i in a) print i,"\t",a[i]/count*100}' | sort -nk2
status code 	rate
400 	 0.00412448
416 	 0.00412448
478 	 0.00412448
204 	 0.00618672
401 	 0.0268091
0 	 0.0659916
301 	 0.0763028
302 	 0.787775
404 	 2.19628
403 	 2.66441
206 	 5.02567
304 	 17.7043
200 	 71.4339


2,統(tǒng)計squid日志中訪問次數(shù)前10的域名

]# cat /usr/local/squid/var/logs/access.log | awk 'BEGIN{print "domain","\t","rate"}{count+=1;a[$2]+=1}END{for(i in a){print i,"\t",a[i]}}' | sort -nk2 | tail
bsy.pp.starschinalive.com 	 125
js1.pcfg.cache.wpscdn.cn 	 131
portal.wsds.cn 	 162
vas.fun.tv 	 173
img.funshion.com 	 238
www.duba.com 	 277
plugin.video.51togic.com 	 280
p1.meituan.net 	 286
res.qxz.37wan.com 	 306
d.ifengimg.com 	 481

3,統(tǒng)計最近5分鐘的流量

日志:27.156.95.175 uc.a.yximgs.com "p_w_picpath/webp" [25/Dec/2016:22:17:01 +0800] "GET http://uc.a.yximgs.com/upic/2016/11/27/11/BMjAxNjExMjcxMTIxMTNfODY2MTM1NV8xMzAxODgwMDQ4XzJfMw==_low.webp?tag=1-1482675421-f-0-8a7txqz36n-ce40124930229f39 HTTP/1.1" 200

cat /usr/local/squid/var/logs/access.log | awk '{i=int(substr($4,17,2)/5)*5;h=substr($4,14,2);s[h":"i]+=$10;}END{for(i in s)print i,s[i]*8/1024/1024/300"Mbps"}'
21:50 143.537Mbps


4,MISS的域名請求數(shù)top10統(tǒng)計

# cat /usr/local/squid/var/logs/access.log | awk '{n+=1;if($0~/MISS/)a[$2]+=1}END{for(i in a){print i,a[i],a[i]/n*100}}' | sort -nrk2  | head
www.duba.com 237 0.868291
p1.meituan.net 163 0.597179
pas.suning.com 66 0.241803
shopping.suning.com 55 0.201502
77g4l9.com5.z0.glb.qiniucdn.com 55 0.201502
res.qxz.37wan.com 50 0.183184
review.suning.com 41 0.150211
static.1sapp.com 32 0.117238
s1.vas.wpscdn.cn 30 0.10991
fs.ios.kugou.com 25 0.0915919


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI