`

大型分布式网站之日志分析

阅读更多

现在大部分公司在线的应用服务器采用的都是linux或Unix操作系统,因此一些常用的shell明了,会让我们更牛逼,一些较为基础的入门级的命令如:ls,cp,mv,rm,mkdir,touch等

1.查看文件的内容

 cat命令是一个现实文本文件内容的便捷工具,如果一个日志文件比较小,可以直接使用cat命令将其内容打印出来进行查看,

 cat access.log

 124.119.223.36 455 GET www.xxx.com/list.html www.xx.com 404 432004

 124.119.223.36 230 GET www.xxx.com/list.html www.xx.com 500 432004

 ...

 cat -n  access.log  参数-n ,可以显示行号

 1  124.119.223.36 455 GET www.xxx.com/list.html www.xx.com 404 432004

 2  124.119.223.36 230 GET www.xxx.com/list.html www.xx.com 500 432004

 ...

 

2. cat的缺点在于,一旦执行后便无法再进行交互和控制,而more命令可以分页的展现文件内容,按enter键显示文件下一行,按空格键便显示下一页,按F键显示下一屛内容,按B键显示上一屛内容

 more access.log

  124.119.223.36 455 GET www.xxx.com/list.html www.xx.com 404 432004

  124.119.223.36 230 GET www.xxx.com/list.html www.xx.com 500 432004

   ...

   More

   另外一个命令less提供比more更丰富的功能,支持内容查找并且能高亮显示

   less access.log

 

  3. 显示文件尾

  使用tail命令能够查看到文件最后几行,这对于日志文件非常有效,很多时候日志文件是追加写入的,新写入的内容出于文件的末尾位置。

  tail -n1 access.log

  -n 参数后面跟的数字表示显示文件最后几行,此处为2,表示显示文件最后2行,制定-f参数让tail程序不退出并且持续显示文件新增加的行

  tail -n2 -f access.log

 

4.显示文件头

   与tail命令类似,head命令用户显示文件开头的一组行

   head -n2 access.log

  -n 参数用来制定显示文件开头的几行,此处为2,表示显示access.log的开头2行

 

5.内容排序

 一个文件中包含众多的行,经常需要对这些诶行中的某一列进行排序操作,sort命令作用便是对数据进行排序。

 cat sortfile

5

90

2

5

7

9

12

343

432

 sort -n sortfile

2

5

5

7

9

12

...

通过cat命令查看sortfile文件中数字是无序的,而通过 sort -n命令查看,数字是从小到大排好序的

 6. 字符统计

wc 命令可以用来统计指定文件中的字符数,字数,行数并输出统计结果

 wc  -l access.log

 11001 access.log

 使用-l参数来统计文件中的行数,上面显示日志文件有11001行

 wc -c access.log  // -c 参数能够显示文件的字节数,

 781633 access.log

7. 查看重复出现的行

 uniq命令可以用来显示文件中行重复的次数,或者显示仅出现一次的行,以及仅仅显示重复出现的行,并且

uniq的去重针对的只是连续的两行,因此常常与sort结合使用

 cat uniqfile

 aaa

 bbb

 ccc

上面内容未排序,用过sort排序后再通过uniq去重统计

  sort uniqfile | uniq -c

 3 aaa

 4 bbb

 1 ccc

-c 参数用来在每一行最前面加上改行出现的次数

展现仅出现一次的行:

 sort uniqfile | uniq -c -u

 1 ccc

 1 eee

加上参数 -u 便只会显示出现一次的行。

 8.字符串查找,也是我们查询日志最常用到的命令+++

使用grep命令可以查找文件中符合条件的字符串,如果发现文件内容符合指定查找字符会将该行打印出来

  grep qq access.log

 124.119.20.23 GET www.xxx.com/list.html www.qq.com 404 432004

 124.119.29.30 GET www.xxx.com/list.html www.qq.com 500 432004

qq为指定的查找字符,而access.log是文件名称

使用 -c 参数,可以显示查找到的行数

 grep -c qq access.log

 2262

9. 文件查找

 常常需要修改一个文件,而只知道文件名称不知道文件路径或者需要查找一个文件的路径,这时就需要使用文件查找命令find

 $ find /home/longlong -name access.log

 /home/longlong/temp/access.log

在/home/longlong路径下查找文件名为access.log的文件,查找到的文件路径为 /home/longlong/temp/access.log

查找以 txt后缀结尾的文件

 $ find /home/longlong -name "*.txt"

/home/longlong/active-cpp/test/test1.txt

/home/longlong/active-cpp/test/test2.txt

还可以使用find命令,递归打印当前目录的所有文件

 $ find . -print

10 URL 访问工具

 要想在命令行下通过HTTP协议访问网页文档需要用curl,它支持HTTP,HTTPS,FTP,FTPS,Telnet等多中协议,常被用来在命令行下抓取网页和监控Web服务器状态。

发起网页请求:

 $ curl www.baidu.com

<html><head><meta http-equiv="content-type" content="text/html;charset=utf-8">

11. 查看请求访问量

 如访问量排名前10的IP地址

 $ cat access.log | cut -f1 -d " " | sort | uniq -c | sort -k 1 -n -r | head -10

 1455 174.119.232.29

 1437 124.119.22.59

页面访问量排名前10的url

 $ cat access.log | cut -f4 -d " " | sort | uniq -c | sort -k 1 -n -r | head -10

 2280 www.xxx.com/list.html

 2236 www.xxx.com/info.html

命令之间使用管道连接起来,摘取访问日止为恩建中指定的列,排序去重后,再按照出现次数进行反向排序,取其中前10条记录

12. 查看最耗时的页面

 对于我们开发人员来说,页面的响应时间是非常值得关注的,我们经常需要将响应慢的页面找出来进行优化:

 $ cat access.log | sort | -k 2 -n -r | head -10 

 174.119.232.29 740 POST www.xxx.com.userinfo.html www.taobao.com 404 2789

 174.119.232.29 740 POST www.xxx.com.userinfo.html www.taobao.com 301 49397

 174.119.232.29 740 POST www.xxx.com.userinfo.html www.taobao.com 200 432004

 174.119.232.29 740 POST www.xxx.com.userinfo.html www.sina.com 500 48243

access.log 文件的第二行为页面的响应时间 用过sort按照第二行逆序后,再通过head命令取出排名前10的页面

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    大型分布式网站架构设计与实践.带目录书签.完整版.pdf

    《大型分布式网站架构设计与实践》是一本深入探讨如何构建高效、可扩展的大型网站架构的专业书籍。在当今互联网行业中,随着用户数量的急剧增长和业务需求的复杂性提升,传统的单体架构已经无法满足需求,分布式系统...

    《大型分布式网站架构设计与实践》

    《大型分布式网站架构设计与实践》是一本深入探讨如何构建和优化大规模分布式系统的权威书籍。在互联网技术高速发展的今天,大型分布式网站已经成为支撑各种在线业务的核心。本书详细阐述了从概念到实施,从理论到...

    大型分布式网站架构设计与实践

    《大型分布式网站架构设计与实践》是一本深入探讨如何构建高效、可扩展、高可用性的分布式网站架构的专业书籍。在互联网行业中,随着用户量的急剧增长和业务需求的复杂化,传统的单体架构已无法满足需求,分布式系统...

    大型分布式网站架构

    《大型分布式网站架构》这一主题深入探讨了在互联网领域中,如何通过分布式技术构建能够处理海量数据和高并发访问的网站系统。分布式架构是现代Web服务背后的关键驱动力,它能够提供可扩展性、容错性和性能优化。...

    大型分布式网站架构设计与实践.带目录书签.完整版.zip

    《大型分布式网站架构设计与实践》是一本深入探讨如何构建高效、可扩展、高可用性的分布式网站架构的专业书籍。在互联网行业中,随着用户量和业务复杂性的增长,单体架构逐渐无法满足需求,分布式系统成为了必然的...

    大型分布式网站架构设计与实践.带目录书签.完整版

    《大型分布式网站架构设计与实践》是一本深入探讨如何构建高效、可扩展、高可用性的分布式网站架构的专业书籍。在当今互联网行业中,随着用户数量的急剧增长和业务复杂度的不断提升,传统的单体架构已无法满足需求,...

    大型分布式网站架构设计与实战

    《大型分布式网站架构设计与实战》是一本专为架构师量身打造的指南,它深入探讨了在构建大规模、高并发、高可用的互联网应用时所面临的挑战和解决方案。本书内容丰富,涵盖了从理论到实践的诸多方面,旨在帮助读者...

    基于用电信息采集系统的大型分布式网站系统稳定性分析.pdf

    从提供的文件内容来看,这篇文档主要分析了基于用电信息采集系统的大型分布式网站系统的稳定性,并提出了优化建议。以下是对文档中知识点的详细说明: 1. 分布式网站系统概述 分布式网站系统的设计初衷是为了提高...

    大型分布式网站架构设计与实践.带目录书签.完整版(jb51.net).pdf

    《大型分布式网站架构设计与实践》是一本深入探讨构建大规模分布式网站核心技术的书籍。它涵盖了从理论到实践的广泛知识,旨在帮助读者理解和掌握在高并发、大数据量环境下,如何设计和实施高效的分布式系统。 ...

    java分布式日志系统.zip

    Java分布式日志系统是现代大型网络应用不可或缺的组成部分,它为开发者提供了收集、存储、查询和分析应用程序日志的能力。在分布式环境中,由于系统由多个节点组成,日志的管理和处理变得复杂,因此,分布式日志系统...

    部署ELK分布式日志分析平台

    部署ELK分布式日志分析平台是一个系统工程,需要考虑日志数据的采集、传输、存储、分析、警告等各个关键环节。在生产环境中,业务规模扩大和服务器数量增多,使得日志量急剧增长,这就要求有一个能够处理大规模数据...

    大型分布式系统java应用

    在IT行业中,Java语言因其平台无关性、丰富的库支持以及高效性能,在构建大型分布式系统方面扮演着重要角色。本文将深入探讨大型分布式系统中的Java应用,包括其核心概念、技术框架以及实现策略。 首先,我们要理解...

    大型分布式网站架构设计与实践.pdf

    《大型分布式网站架构设计与实践》是一本深入探讨如何构建高效、可扩展的分布式系统的重要参考资料,主要针对Java架构和网站设计。这本书涵盖了从理论到实际应用的诸多方面,旨在帮助开发者理解并掌握大型网站背后的...

    linux平台centos7系统 - ELK+logback+kafka+nginx 搭建分布式日志分析平台.doc

    通过整合ELK、logback、kafka和nginx,我们可以构建一个强大的分布式日志分析平台,实现日志的实时收集、处理、存储和可视化,从而在大型企业环境中有效监控和诊断问题。这个平台能够适应不同开发语言的应用,同时...

    构建高性能的大型分布式java应用

    在构建高性能的大型分布式Java应用时,我们面临的是复杂的技术挑战和优化目标。要实现这样的系统,我们需要深入了解Java平台的特点,以及如何利用其优势来处理大规模数据和高并发请求。以下是一些关键的知识点: 1....

Global site tag (gtag.js) - Google Analytics