热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

分享Java开发必须掌握的日志分析命令

这篇文章主要介绍了分享Java开发必须掌握的日志分析命令,在日常工作中,如果我们遇到线上问题,一般的处理步骤应该是先保留现场,然后再考虑回滚,之后再是解决问题

对于大型网站来说,很多网站在可用性方面提出4个9或者5个9的要求,如果是4个9,那么网站全年的不可用时间不能超过52.6分钟,如果是5个9,全年不可用时间不能超过5.2分钟。这其实是很难的,无论多么厉害的程序员,他写过的代码不可能完全没有问题。而且有些时候,在线上发生问题的时候,我们大部分时间都用在排查并定位问题上了。一个问题可能解决起来也就是几分钟,但是排查起来却要花费几个小时。

在日常工作中,如果我们遇到线上问题,一般的处理步骤应该是先保留现场,然后再考虑回滚,之后再是解决问题。那么,保理现场保留的是什么的?至少要包括当时机器上面的线程的dump、堆内存的dump还有最重要的就是日志。因为很多时候,日志可能是我们了解程序执行的唯一途径。

有了日志,还要掌握一些命令,才能更好的、更高效的定位问题,因为一旦发生线上问题的时候,真的是分秒必争。本文,为你总结了几个常用的命令和简单用法,以及几个小案例来运用这些命令。

在介绍之前我还要强调一点,有很多朋友说,我不需要会这么多命令,一个vim(vi)命令就够我用了,请不要在服务器上直接对日志文件进行vim(vi)操作,这样可能会导致机器直接挂掉。

cat 查看文件的内容
cat命令是一个显示文本文件内容的便捷工具,如果一个日志文件比较小,可以直接使用cat命令将其内容打印出来,进行查看,但是,对于较大的日志文件,请不要这样做,打开一个过大的文件可能会占用过多的系统资源,从而影响系统对外的服务。

命令格式:

cat [选项] [文件]...

more 分页显示文件

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

命令格式:

more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]

less 分页显示文件

less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

命令格式:

less [参数] 文件

tail 显示文件尾

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

使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.

命令格式;

tail[必要参数][选择参数][文件]

head 显示文件头
与tail命令类似,但是不同的是head命令用于显示文件开头的一组行。

命令格式:

head [参数]... [文件]...

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

命令格式:

sort [参数][文件]

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

命令格式:

wc [选项]文件...

uniq 查看重复出现的行
uniq命令可以用来显示文件中行重复的次数,或者显示仅出现一次的行,以及仅仅显示重复出现的行,并且,uniq的去重针对的只是连续的两行,因此它常常与sort结合起来使用。

命令格式:

uniq[选项][参数]

curl URL访问工具
要想在命令行下通过HTTP协议访问网页文档,就不得不用到一个工具,这便是curl,它支持HTTP,HTTPS,FTP,FTPS,Telnet等多种协议,常被用来在命令行下抓取网页和监控WEB服务器状态。

命令格式:

curl [option] [url]

查看请求访问量
对于在线运行的系统来说,常常会碰到各种不怀好意的恶意攻击行为,其中比较常见的便是HTTP flood,也称为CC攻击。如何能够快速的定位到攻击, 并迅速响应,便成为开发运维人员必备的技能。定位问题最快捷的办法,便是登录到相应的应用,查看访问日志,找到相应的攻击来源,如访问量排名前10的ip地址:

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

页面访问量排名前10的url:

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

查看最耗时的页面
对于开发人员来说,页面的响应时间是非常值得关注的,因为这直接关系到用户能否快速的看到他想看到的内容。因此,开发人员常常需要将响应慢的页面找出来,进行优化:

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

统计404页面占比
对于请求的返回码,有些时候也是需要关注的,比如,如果404请求占比过多, 要么就是有恶意攻击者在进行扫描,要么就是系统出现问题了,同样,对于 500的请求也是如此,可以通过如下命令来查看404请求的占比:

export total_line=`wc -l access.log | cut -f1 -d " "` && export not_found_line=`awk '$6=='404'{print $6}' access.log | wc -l` && expr $not_found_line \* 100 / $total_line

更多的需要结合linux的一些命令


推荐阅读
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 请看|间隔时间_Postgresql 主从复制 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
author-avatar
星空下的舞者j
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有