博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
R语言分析nginx日志
阅读量:6801 次
发布时间:2019-06-26

本文共 1927 字,大约阅读时间需要 6 分钟。

  hot3.png

###nginx日志举例 172.16.1.1 - - [04/Feb/2015:23:40:01 +0800] "POST /api/message/query HTTP/1.1" 200 52 "-" "Apache-HttpClient/4.2 (java 1.5)" "-" "message.test.com" "172.16.3.159" "-" "0.116" "-" "0.116" "-" remote_addr_ac_logon

取出time、url、请求大小,sub(/\[/,"",$4)去掉时间中的中括号,sub(/Feb/,"2",$4) 把Fed替换为2 awksub函数用于替换字符串,语句单独使用,如果使用赋值语句,如a=sub(/Feb/,"2",$4)a=1,返回替换次数

cat message-access.log | awk 'BEGIN {print "time,url,size"} {sub(/\[/,"",$4);sub(/Feb/,"2",$4);print $4","$7","$10}' > message-time.log

然后使用R语言导入这个文件,用ggplot2画图,在R语言中通过使用ddply函数做统计分组,ddply的使用参见: 但R语言做统计分组效率较低,文件大小在1G以上的时候,内存压力很大,这时使用uniqawk做分组比较合适

###sortuniq统计分组

统计每秒请求数,并使用sed去年最终结果中的每行开头的空格

cat message-time.log | awk -F',' '{print $1}'| sort -rn | uniq -c | sed 's/^[][ ]*//g'> message-time-count.log

uniq只能统计出现次数,不能统计累加的值

###awk统计分组

每分钟请求数据包大小, group by time,sum(size),取time字段的前16个字符,去掉最后的秒:substr($1,0,16),在END语句中打印统计结果,把秒都置为0

cat message-time.log | awk -F"," '{a[substr($1,0,16)]+=$3}END{for(i in a) print i"0",a[i]}' > message-time-size.log

###画图

加载包

library(ggplot2)library(scales)

R语言读取文件,as.is=TRUE 字符不转factor

message = read.csv('e:/R/message-time-size.log',                   as.is=TRUE,                   header=FALSE,                   sep = ",",                   col.names=c('time','size'))

转为时间类型

message$time = as.POSIXlt(strptime(message$time,"%d/%m/%Y:%H:%M:%S"))

byte转为kb

message$size<- message$size / 1024

画“时间-流量图”,x轴每1小时显示一个值,显示格式只显示小时

ggplot(message,aes(x=time,y=size)) +  geom_line() +  labs(title="时间-流量图",y='size(KB)') +  scale_x_datetime(breaks=date_breaks("1 hour"),labels= date_format("%H"))

保存图片

ggsave(filename='e:/R/时间-流量图-分.jpg',width=15,height=8)

统计url访问次数图

ggplot(message)+  geom_bar(aes(x=url)) +  coord_flip() +  labs(x='url',y='count')

饼状图

ggplot(message)+  geom_bar(aes(x=factor(1),fill=url)) +  coord_polar(theta='y') +  labs(x='',y='')ggsave(filename='e:/R/url-饼状图.jpg')

附上一张流量图

时间-流量图

url请求次数图

转载于:https://my.oschina.net/enyo/blog/377217

你可能感兴趣的文章
文思海辉:智慧数据避免企业成为大数据时代落伍者
查看>>
什么!建设数据中心还得看风水?
查看>>
如何通过SSH隧道实现 Windows Pass the Ticket攻击?
查看>>
破解“动物农场”高级间谍平台Dino
查看>>
隐私安全新动向:Facebook采用OpenPGP加密技术
查看>>
食品巨头康尼格拉:数据分析如何影响企业成本?
查看>>
迅雷发布“星域CDN” 做条颠覆市场的鲶鱼
查看>>
多租户特性一定是SaaS软件的必要特征吗?
查看>>
如何在Ubuntu中安装语音聊天工具Discord
查看>>
数据可视化,我应从何开启?
查看>>
黑客入侵凯特王妃妹妹账号盗数千照片 欲卖给媒体
查看>>
【人生苦短,我用Python】Python免费精品课连载(1)——Python入门
查看>>
IBM向认知转型 选择混合云路径
查看>>
英国《数字经济法案》
查看>>
必须了解的五个光伏发电财务和税收政策
查看>>
思默特获评“用户满意服务奖”荣誉
查看>>
CYQ.DBImport 数据库反向工程及批量导数据库工具 V1.0 发布
查看>>
AT&T开发出400 GbE试验的SDN控制器
查看>>
聊天机器人并不适合每一项业务和每个人
查看>>
拼写错误影响黑客盗窃数亿美元
查看>>