十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
前言:首先awk是一门语言,其次跟其他语言相比,awk的优势是在文本处理、数值计算等方面,在我们日常的运维工作中,awk还有1个很重要的场景是配合sed、grep的使用,正是因为这些,awk是运维工程师最常用的工具之一,下面记录一下,awk在日志收集、统计场景的一些最常用的姿势。
成都创新互联自成立以来,一直致力于为企业提供从网站策划、网站设计、做网站、成都做网站、电子商务、网站推广、网站优化到为企业提供个性化软件开发等基于互联网的全面整合营销服务。公司拥有丰富的网站建设和互联网应用系统开发管理经验、成熟的应用系统解决方案、优秀的网站开发工程师团队及专业的网站设计师团队。awk使用格式
awk [-F value] [-v var=value]
'program text' [files....]
program text:
BEGIN {actions}/pattern/{actions}END{actions}
内置变量
FS--Field
Separator:域的分隔符,默认的是以空白符分隔
RS--Record
Separator 记录的分隔符,默认是以换行符来分隔
FILENAME
-- current filename
NF -- Number of Feilds in current record,域的个数
NR
-- Number of Record 输入的记录数,相当于行号一样,多个文件时会接着递增
FNR
-- File Number of Record 输入的当前记录数,每个文件单独计算
$0
-- the
whole record 当前整个记录
$n --
the nth field of the current record 当前记录的第n个域
awk常用函数
1、split (string, array, field separator)
2、substr(s,p,n) 返回字符串s中从p开始长度为n的后缀部分
3、 length函数返回没有参数的字符串的长度
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
--------------
内置变量
ORS
OFS
FS
RS
NR
NF
FNR
ARGV:数组,保存命令行本身这个字符串,如awk'{print $0}' a.txt b.txt
这个命令中,ARGV[0]保存awk,ARGV[1]保存a.txt
ARGC:awk命令的参数个数
----------------
printf命令的使用格式
printfformat,item1
要点:
1、其与print命令大的不同是,printf需要指定format
2、format用于指定后面的每个item的输出格式
3、printf语句不会自动打印换行符
format格式的指示符:
%c:显示字符的ASCII
%d,%i:十进制的整数
%e,%E:科学计数法显示数值
%f:显示浮点数
%g,%G:以科学计数法的格式或浮点数的格式显示数值
%s:显示字符串
%u:无符号整数
%%:显示%自身
修饰符:
N:显示宽度
-:左对齐
+:显示数值符号
1,统计squid日志中各个状态码所占的百分比
# 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,统计squid日志中访问次数前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,统计最近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的域名请求数top10统计
# 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
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。