您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux

Linux 日志分析实战

时间:2021-03-08 16:54:34  来源:  作者:

日志结构分析

Linux 日志分析实战

分析日志状态码所在位置为第九个

遍历取出第一行日志的每个字段

取出第一行日志



awk 'NR==1{for(i=1;i<=NF;i++)print i"= "$i}' Nginx.log 
Linux 日志分析实战

 

for循环取出每个字段
awk 'NR==1{for(i=1;i<=NF;i++)print i"= "$i}' nginx.log 
Linux 日志分析实战

 

练习1

找出所有404和500的错误日志,统计错误日志的行数

使用正则筛选出404 和500的类型的状态码,管道拼接统计总个数
完整命令 :cat nginx.log | awk '{print $9}' | grep -E '404|500'|wc -l
解法2:
使用awk 直接匹配第九个是400/500的状态码的值,awk 理论上可以替代grep awk 'pattern{action}'
awk 'BEGIN{} END{}’开始和结束
awk ' /Running/’正则匹配
awk ' / aa/ ,/bb/'区间选择 
 用法 :cat nginx.log | awk '/ 404 | 500 /{print $9}' | wc -l
awk '$2~/xxx/'字段匹配 
  用法:awk '$9~/404|500/{print $9}' nginx.log | wc -l
awk 'NR==2'取第二行
awk 'NR>1’去掉第一行
使用t+1自增 计算统计: awk '$9~/404|500/{t+=1}END{print t}' nginx.log
Linux 日志分析实战

 

练习2:

统计IP访问量(独立ip访问数量)

# 打印所有ip, sort- u 去重排序,wc-l 统计总共数目
awk '{print $1}' nginx.log |sort -u |wc -l 
Linux 日志分析实战

 

练习3:

查看某一时间段的IP访问量(1-2点)

查找出排序,unqi-c去重
grep "05/Dec/2018:0[1-2]" nginx.log|' | sort | uniq -c| sort -nr | wc -l
简洁版: 
grep "05/Dec/2018:0[1-2]" nginx.log | awk '{print $1}|sort -u |wc -l
Linux 日志分析实战

 

练习4:

查看访问最频繁的前10个IP

查找ip 去重后,倒序排序,展示前10个
awk '{print $1}' nginx.log |sort -n |uniq -c|sort -rn| head -10
Linux 日志分析实战

 

练习5

查看访问100次以上的IP

#去重找到所有ipi地址,awk 判断 将大于100的访问次数打印后降序排序
awk '{print $1}' nginx.log |sort -n |uniq -c|awk '{if($1>100) print $0}'| sort -rn
Linux 日志分析实战

 

练习6

找出名称为 /topics 的平均响应时间,响应时间在倒数第二个字段

Linux 日志分析实战

得知/topics 所在为第7个字段

#算出全部响应时间 为倒数第二个字段: total和为{total+=$(NF-1) ,总次数为自增数据
less nginx.log | awk '$7=="/topics"{total+=$(NF-1);count+=1}END{print total/count}' nginx.log
Linux 日志分析实战

响应时间在倒数第二个字段

练习7

找出访问量最高的页面地址 借助于sed的统计分析

根据日志分析的页面的地址,需要使用sed -E s (-e script 指定sed编辑命令 )替换

查找替换: s /REGEXP/REPLACEMENT /[FLAGS]

将第2替换为x:echo 1234 | sed 's#2#x#'

将第2和3替换为xecho 12433 | sed 's#[2-3]#x#g'

分组匹配与字段提取:sed 's#([0-9]*)l([a-z]*)#1 2#'

语法解析

Linux 日志分析实战

未替换前语句

使用 sed -E 's#[0-9]{4,}'#_id_#' ' 将第四位的数字替换为_id_(注:s后的符号可以跟任意符号)

Linux 日志分析实战

 

- /topics/16689/replies/124751/edit 把数字替换为 /topics/_id_/replies/_id_/edit
- /_img/uploads/photo/2018/c54755ee-6bfd-489a-8a39-81a1d7551cbd.png!large 变成 /_img/uploads/photo/2018/_id_.png!large 
- /topics/9497 改成 /topics/_id_ 
- url中的query可以去掉
 - 其他规则参考如上

awk '{print $7}' nginx.log | 
  sed -E 
    //替换字母数字编码的图片前缀为_id_
    -e 's#/[0-9]*/[a-z0-9-]*.(png|gif|jpeg|jpg).*#/_id_/_id_.image#'    
  	//替换问号和感叹问为空 
     -e 's#[?!].*##' 
    -e 's#/(topics|replies|avatar)/[0-9]{1,}#/1/_id_#g' 
		// 替换topics|followers|following|favorites|replies|columns|reward|calendar|people 字段后的id
    -e 's#/[^/]*/(topics|followers|following|favorites|replies|columns|reward|calendar|people)#/_uid_/1#' 
    -e 's#^/[^/]*$#/_top_#' 
    -e 's#/topics/node[0-9]*#/topics/node#' | 
  sort | uniq -c | sort -nr 
}

练习7

性能统计脚本 perf_avg, 统计linux进程中 AliYunDun 进程的cpu与mem,持续统计20s,每秒输出一下即时的cpu与mem的利用率,并在最后结束时候给出cpu与mem的平均值

Linux 日志分析实战

 


Linux 日志分析实战

 

//使用top -b 高亮展示当前进程,-d 1 每1s更新一次,-n 更新为3次
top -b -d 1 -n 3
// grep 实时取出数据,
grep --line-buffered -i aliyundun$
//计算cpu与mem的利用率
cpu=$(NF-3);mem=$(NF-2);cpu_total+=cpu;mem_total+=mem;
//完整语句
top -b -d 1 -n 3 | grep --line-buffered -i aliyundun$ |
  awk 
//先打印抬头
'BEGIN{OFS="t";print "CPUf", "MEM"}  
{cpu=$(NF-3);mem=$(NF-2);print cpu,mem;cpu_total+=cpu;mem_total+=mem;
}
//最后打印数据
END{print "navg:" ;print cpu_total/NR, mem_total/NR}'    

练习8:

网络连接数统计 net_avg

// 查看网络进程
netstat -tnp 
//获取 ip 和监听状态
awk '{print $4,$6}'
//打印端口 号
awk -F : '{print $2}'
//完整命令
netstat -tnp |awk '{print $4,$6}'|awk -F : '{print $2}'|sort| uniq -c

优化

Linux 日志分析实战

去除上图多余字段

//去除前两行数据
sed  1,2d
//完整
netstat -tnp |sed 1,2d | awk '{print $4,$6}' | awk -F: '{print $2}' | sort | uniq -c | sort -nr


Tags:日志分析   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
日志结构分析分析日志状态码所在位置为第九个遍历取出第一行日志的每个字段取出第一行日志awk &#39;NR==1{for(i=1;i<=NF;i++)print i"= "$i}&#39; nginx.log for循环取出...【详细内容】
2021-03-08  Tags: 日志分析  点击:(184)  评论:(0)  加入收藏
一般提到监控,很多人就会想到监控服务器运行状态,网络运行状态。其实由于业务需要,服务器和网络设备每时每刻产生的海量日志也同样的重要。 为什么选用ELK? 首先我们来了解一下E...【详细内容】
2020-11-18  Tags: 日志分析  点击:(134)  评论:(0)  加入收藏
问题导读: 1、怎样收集系统日志并进行分析? 2、常见的开源日志系统有哪些? 3、如何选择常用成熟的日志监控分析工具? 4、Logstash 与FluentD(Fluentd)有哪些不同?目录一. 背景介...【详细内容】
2020-10-21  Tags: 日志分析  点击:(105)  评论:(0)  加入收藏
ox01 Web日志Web访问日志记录了Web服务器接收处理请求及运行时错误等各种原始信息。通过对WEB日志进行的安全分析,不仅可以帮助我们定位攻击者,还可以帮助我们还原攻击路径,找...【详细内容】
2019-11-06  Tags: 日志分析  点击:(351)  评论:(0)  加入收藏
概述今天要介绍的GoAccess 是一款开源的且具有交互视图界面的实时 Web 日志分析工具,通过你的 Web 浏览器或者 *nix 系统下的终端程序(terminal)即可访问。GoAccess简介GoAcc...【详细内容】
2019-10-30  Tags: 日志分析  点击:(223)  评论:(0)  加入收藏
日志的三种类型# 内核及系统日志:这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf中的设置决定将内核消息及各种系统程序消息记录到什么位置。系统...【详细内容】
2019-10-08  Tags: 日志分析  点击:(186)  评论:(0)  加入收藏
随着 Web 技术不断发展,Web 被应用得越来越广泛,现在很多企业对外就一个网站来提供服务,所以网站的业务行为,安全性显得非常重要。正如安全行业的一句话:“世界上只有两种人,一种是知道自己被黑了的,另外一种是被黑了还不知...【详细内容】
2019-09-20  Tags: 日志分析  点击:(132)  评论:(0)  加入收藏
提到日志分析,很多人首先想到的是Splunk。Splunk的成功促使其他厂商开始他们的日志分析研究历程,不论是开源还是商业。本文将会提供Splunk以外的其他日志分析服务。 Elasticse...【详细内容】
2019-08-28  Tags: 日志分析  点击:(250)  评论:(0)  加入收藏
又是一个吃着火锅唱着歌的日子,同事A过来吐槽说,某某交换机的风扇坏了,要不是今天过去例行巡检设备,发现设备声音不对劲还发现不了这个问题。作为一名资深网工其实你深深的知道...【详细内容】
2019-08-28  Tags: 日志分析  点击:(324)  评论:(0)  加入收藏
概述今天主要分享一款MySQL日志分析神器--mysqlsla,对于我们分析mysql数据库的三大日志还不错,这里介绍一下。什么是mysqlsla?Mysqlsla 是daniel-nichter 用perl 写的一个脚本,...【详细内容】
2019-07-11  Tags: 日志分析  点击:(335)  评论:(0)  加入收藏
▌简易百科推荐
作用显示文件或目录所占用的磁盘空间使用命令格式du [option] 文件/目录命令功能显示文件或目录所占用的磁盘空间一些写法的区别du -sh xxx 显示总目录的大小,但是不会列出...【详细内容】
2021-12-23  mitsuhide1992    Tags:du命令   点击:(12)  评论:(0)  加入收藏
什么是linux内核linux就像是一个哲学的最佳实践。如果非要对它评价,我真的不知道该怎么赞叹,我只能自豪地说着:“linux的美丽简直让人沉醉。”我只能说是我处在linux学习的修炼...【详细内容】
2021-12-23  linux上的码农    Tags:linux内核   点击:(15)  评论:(0)  加入收藏
本文将比较 Linux 中 service 和 systemctl 命令,先分别简单介绍这两个命令的基础用法,然后进行比较。从 CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 service服务(dae...【详细内容】
2021-12-23  软件架构    Tags:systemctl   点击:(13)  评论:(0)  加入收藏
mv是move的缩写,可以用来移动文件或者重命名文件名,经常用来备份文件或者目录。命令格式mv [选项] 源文件或者目录 目标文件或者目录命令功能mv命令中第二个参数类型的不同(...【详细内容】
2021-12-17  入门小站    Tags:mv命令   点击:(23)  评论:(0)  加入收藏
大数据技术AI Flink/Spark/Hadoop/数仓,数据分析、面试,源码解读等干货学习资料 98篇原创内容 -->公众号 Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处...【详细内容】
2021-12-17  仙风道骨的宝石骑士    Tags:sed命令   点击:(21)  评论:(0)  加入收藏
Node是个啥?  写个东西还是尽量面面俱到吧,所以有关基本概念的东西我也从网上选择性地拿了下来,有些地方针对自己的理解有所改动,对这些概念性的东西有过了解的可选择跳过这段...【详细内容】
2021-12-15  linux上的码农    Tags:node   点击:(21)  评论:(0)  加入收藏
难道只有我一个人觉得Ubuntu的unity桌面非常好用吗?最近把台式机上面的Ubuntu 16.04格式化了,装了黑苹果用了一周,不得不说,MacOS确实很精美,软件生态比Linux丰富很多,比Windows简...【详细内容】
2021-12-14  地球末日村    Tags:ubuntu   点击:(34)  评论:(0)  加入收藏
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行net...【详细内容】
2021-12-13  窥镜天    Tags:Linux netstat   点击:(26)  评论:(0)  加入收藏
对于较多数量的文件描述符的监听无论是select还是poll系统调用都显得捉襟见肘,poll每次都需要将所有的文件描述符复制到内核,内核本身不会对这些文件描述符加以保存,这样的设计...【详细内容】
2021-12-13  深度Linux    Tags:Linux   点击:(16)  评论:(0)  加入收藏
今天,我们来了解下 Linux 系统的革命性通用执行引擎-eBPF,之所以聊着玩意,因为它确实牛逼,作为一项底层技术,在现在的云原生生态领域中起着举足轻重的作用。截至目前,业界使用范...【详细内容】
2021-12-10  架构驿站    Tags:eBPF   点击:(24)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条