在线日志的简单分析

在线日志分析简单介绍
在互联网项目中,经常需要记录和查看日志,日志中包含了程序在遇到异常所记录的各种信息,同时也会记录程序每次请求的pv、adpv等信息,包含了用户的IP地址、请求url、请求页面、城市类别以及系统开发者在系统运行过程中想打印的任何信息。通过分析日志,可以解决很多在项目运行过程中遇到的问题,例如:cpu消耗、内存占用率、程序执行异常信息、产生bug程序运行的行数等等,通过分析应用的响应时间、垃圾回收以及系统load来判断系统负载,是否需要增加机器;通过线程dump,判断是否死锁以及线程占用cpu过大的原因,通过应用的GC日志,对系统代码和JVM内存参数进行优化,减少GC次数与stop-for-world时间,优化应用响应时间。
目前大部分服务器采用的都是UNIX/LINUX操作系统,因此我们更需要掌握一些常用的shell命令,可以让工作事半功倍。
1、 查看文件的内容
cat命令是一个显示文件内容的工具,如果对于日志文件比较小,可以直接使用,对于较大的日志文件则不合适,因为打开一个过大的文件可能会占用过多的资源,从而影响系统对外的服务,cat命令会打印出所有文件内容,查阅也不方便。
使用cat 带上-n 参数,显示行号
这里写图片描述
-b 和-n相似,只是对于空白行不进行编号
-s 当遇到连续两行以上的空白行,就代换为一行的空白行
这里写图片描述
2、 分页显示文件
cat命令的缺点在于一旦执行,便无法在进行交互和控制,而more命令可以分页展现文件内容,按Enter键显示文件下一行,空格键显示下一页,按F键显示下一屏内容,按B键显示上一屏内容。
这里写图片描述
less命令提供比more更加丰富的功能,支持内容查找,并且高亮显示
less file.log
使用/content查找content,并且高亮显示,查找之后英文字符q退出
这里写图片描述
3、 显示文件尾部、头部
tail命令能够查看文件最后几行,-n参数指定查看的最后n行
-c Number从Number字节位置读取指定文件
-m Number从Number多字符位置读取指定文件
这里写图片描述
同时在项目运行中经常会实时查看打印的日志信息
tail –f file.log可以让tail程序不退出,并且持续地显示文件新增加的行
这里写图片描述
显示文件头部为head命令,-n指定显示多少行
-q和-v分别表示隐藏和显示文件名 –c显示字节数
这里写图片描述
4、 内容排序
一个文件包含多行,在写pv、adpv等日志监控的时候会对日志的某一列进行排序操作,sort命令的作用便是对数据进行排序,例如:使用awk命令统计已经获取的id信息,并对id进行排序,并将结果汇总到某文件中,格式:id num
这里写图片描述
sort –n(sort –r相同)数字从小到大排序,
这里写图片描述
sort -n –r联合使用,数字逆序排列
这里写图片描述
可以选取文件的指定列来进行排序
sort –k 2 –t ‘ ’ –n file.log -k指定第二列排序,-t列分隔符,-n按照数字排序
5、 字符统计
wc命令可以用来统计文件的字符数、字数、行数,并输出统计结果
这里写图片描述
wc –l file.log和more file.log|wc –l等价,只是前者输出文件名
这里写图片描述
查看文件字节数wc –c file.log 通过-L查看最长的行的长度,通过-w查看文件包含有多少单词
6、 查看重复出现的行
uniq命令用来显示文件中行重复的次数,或者显示仅出现一次的行,以及仅仅显示重复出现的行,并且对uniq的去重针对的只有连续的行,因此它经常和sort命令联合使用
uniq –c在输出行前面加上每行在输入文件中出现的次数
uniq –d仅显示重复行
uniq –u仅显示不重复的行
more file.log|sort –r|uniq –c查看文件并对结果排序然后统计重复行次数
这里写图片描述
more file.log|sort –r|uniq –c –d
查看文件,对结果排序只输出重复行,-u与-d正好相反
这里写图片描述
7、 字符串查找
使用grep命令可以查找文件中符合条件的字符串,如果发现文件内容符合指定查找条件,会将该行打印出来
grep –c 98 file.txt 参数-c可以查找到显示的行数
这里写图片描述
grep也支持正则表达式
8、 文件查找
在项目开发中,经常会遇到只知道文件名称,却找不到文件路径
此时可以使用find命令
find /path –name file.sh 在指定path路径下查找文件名为zkCli.sh的文件
这里写图片描述
递归打印文件路径信息
这里写图片描述
查找包含指定内容的文件或者文件路径
find /opt -type f -name “*.conf”|xargs grep “8080”
-type 文件类型,后跟f为文件,d为目录
-name后面支持正则表达式,xargs grep “8080” 查找含有8080的文件或者文件路径
9、 表达式求值和归档文件
表达式求值,使用expr命令,此处不再详细介绍
在传递文件过程中,经常会遇到解压缩文件,可以使用tar命令来生成归档文件
tar –zxvf file.tar.gz解压文件
tar –czvf file.tar.gz file.log 将文件压缩
常见参数描述如下:
-c 建立新的文档
-x 从文档展开文件
-f 指定存档位置或目录
-v 显示详细的处理文件
-z 用gzip对文档压缩或者解压
10、 URL访问工具
想在命令下通过HTTP协议访问网页文档,就不得不使用一个工具,CURL,它支持HTTP、HTTPS、FTP、FTPS、Telnet等多种协议,常常被用来在命令下抓取网页和监控Web服务器状态。
curl www.bj.58.com
加上-i参数,返回带header的文档
只用-I参数,可以只返回页面的header信息
curl功能很强大,还可以使用来完成提交表单,传递cookie信息,构造refer等一些列操作
模仿用户登陆 curl –uname:passwd URL
向服务器提交cookie文件: curl –b cookie.txt www.bj.58.com
将指定url保存到out文件: curl –o page.html URL
向服务器post表单数据: curl –d “pageType=3&localId=12&cateId=37031” www.bj.58.com

总结:上述命令在生产环境中经常会综合使用,例如可以使用sort、uniq、head等命令来查看请求访问量、查看耗时页面、统计404请求占比,结合sed、awk等编辑器来完成更加复杂的文本处理,达到事半功倍的效果。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值