服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - Linux中的日志分析利器:ail grep awk

Linux中的日志分析利器:ail grep awk

2023-12-11 15:00FrenziedJavaLand Linux

登录服务器,查询日志文件定位相关日志,并分析原因。所以在Linux服务器上进行日志查询,成为了必备的技能。

一个日志查询分析的例子

项目发布上线后,接下来需要做什么?开Party,庆祝项目上线。但是Party开到一半,服务运行出了点问题。领导要你马上调查原因并给出合适的解决办法。项目才刚上线,日志监控系统都还没来得及完善。你该怎么处理?

Linux中的日志分析利器:ail grep awk

登录服务器,查询日志文件定位相关日志,并分析原因。所以在linux服务器上进行日志查询,成为了必备的技能。

于是你登上了服务器,找到了对应服务的日志文件,输入了:

tail -f .log

但这只能看最新的日志输出,不能看到过去的某个时间点的日志,或者根据某些特定的字符进行筛选。

于是你输入了命令:

tail -n 20000 .log | grep "ERROR" -A 50 -B 50

查看了最近20000行中出现ERROR的日志并包括其前50行和后50行。

一顿操作后你调查出了具体原因,并给出了问题的解决方法。但是你想调查一下问题出现的频次:

tail -n 2000 .log | grep 'ERROR' | awk '{count++;} END {print "error count:", count}'

随后你分析出了出现问题的更深层次的原因,并出具了根本原因分析报告。

在不具备完善的ELK日志收集分析系统的情况下,日志查询分析只能依靠Linux基础的日志查询分析工具:tail, grep, awk等命令。

tail命令

tail命令用于查看日志文件,常见用法如下:

显示文件的最后10行:

tail 

显示文件的最后200行:

tail -n 200 

显示文件第200行开始到末尾的内容:

tail -n +200  

循环读取文件:

tail -f 

更多tail命令相关的信息,可以通过tail --help命令查看。

grep命令

grep命令用于在一个或多个输入文件中,搜索与正则匹配的行,并将匹配的行标准输出。

在日志查询中,通常用来将tail的输出结果进行过滤日志,常见用法如下:

(1) 显示最近2000行日志中,包含Error(区分大小写)的日志行如包含SystemError,InputError, Error等单词的行

tail -n 2000  | grep 'Error' 

(2) 显示最近2000行日志中,包含Error单词(区分大小写)的日志行:

tail -n 2000  | grep -w 'Error' 

-w表示匹配单词。

(3) 如果不区分大小写,则可以用以下命令:

tail -n 2000  | grep -wi 'Error'

-i参数则表示不区分大小写。

(4) 如果需要显示不包含Error的日志行,则可以用以下命令:

tail -n 2000 postman.log | grep -wiv 'Error'

-v表示对匹配的条件取反.

(5) 如果需要进行正则匹配则可以加入-e参数,-E参数则表示扩展正则匹配

tail -n 2000 postman.log | grep -e '.*Error.*'  
tail -n 2000 postman.log | grep -E '.*Error.*|.*error.*'

(6) -A参数可以包含匹配行的前n行,-B参数则包含匹配行的后n行,上文的提到的命令

tail -n 20000 .log | grep "ERROR" -A 50 -B 50

则表示匹配包含ERROR字符的行,以及前50行和后50行。

更多grep命令相关的信息,也可以通过grep --help命令查看。

awk命令

awk是一个文本处理工具,主要用于数据扫描,过滤,统计汇总等。

awk基本语法则是:

awk ' {}  {}...'

上面提到的一个关于awk的命令则是统计了一下日志中出现ERROR字符的行数。

tail -n 2000 .log | grep 'ERROR' | awk '{count++;} END {print "error count:", count}'

更简单的实现方式则可以通过awk的内置变量实现,如列出ls命令输出的结果行数:

ls | awk 'END{print NR}'

END是awk中的一个关键字,后面接的代码块只会在读取完所有数据记录最后执行一次。与之相反的则是BEGIN,后面接的代码块只会在读取数据记录前执行一次。

awk是一个十分强大的文本分析工具,如果有日志分析需求,awk足以应对日常所需。更多关于awk的教程可以自行在网上搜索相关资料,或者查看官网教程:https://www.gnu.org/software/gawk/manual/html_node/index.html

总结

总之,基于linux的日志查询分析,结合tail、grep、awk这三个命令的运用,就完全满足日常的日志分析需求了。tail控制日志查找范围,grep进行关键词筛选,awk用于分析统计。

原文地址:https://mp.weixin.qq.com/s?__biz=MzIyMDc0MDkzMQ==&mid=2247484371&idx=1&sn=aab4ae4d736d981b60e01791a4b71f36

延伸 · 阅读

精彩推荐
  • LinuxLinux系统如何禁用IPv6以解决连接超时问题

    Linux系统如何禁用IPv6以解决连接超时问题

    在Linux系统中,IPv6和IPv4同时存在时可能会出现连接超时的情况,这时只需将IPv6禁用即可解决这个问题,Linux禁用IPv6的方法,不知道的朋友可以看看下文 ...

    Linux教程网5752019-10-06
  • Linux简单了解Linux性能监控命令free

    简单了解Linux性能监控命令free

    这篇文章主要介绍了简单了解Linux性能监控命令free,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参...

    FOOFISH-PYTHON之禅6262022-09-09
  • LinuxLINUX下的文件结构介绍

    LINUX下的文件结构介绍

    了解LINUX下的文件结构,方便学习linux,linux的文件比较特殊,刚开始学习确实不太习惯。 ...

    Linux教程网3842019-12-28
  • Linuxlinux top命令查看用户内存大小方法

    linux top命令查看用户内存大小方法

    linux下由top命令计算每个用户使用内存的大小,此功能该如何实现,本为将详细介绍 ...

    Linux教程网12132019-12-14
  • LinuxLinux NFS机制工作原理及实例解析

    Linux NFS机制工作原理及实例解析

    这篇文章主要介绍了Linux NFS机制工作原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以...

    盗哥泡茶去了2482020-09-21
  • Linuxlinux基础与应用 linux系统常用技巧

    linux基础与应用 linux系统常用技巧

    linux基础必备知识,包括处理特殊的文件名,修复Linux下超级用户的密码,Linux的直接安装,快速启动Linux系统,消除Xwindows下的死机现象,快速关闭Linux系统...

    Linux教程网3682019-12-24
  • Linux如何在Linux上安装微软Windows计算器

    如何在Linux上安装微软Windows计算器

    微软不再是 Linux 或开源社区的敌人。不管你信不信,Windows 的制造商现在是一个盟友。我知道这很令人震惊,但完全是事实。多亏了 WSL,Linux 现在已经内置...

    Linux中国6322020-10-19
  • LinuxLinux下软件包的安装与管理

    Linux下软件包的安装与管理

    在Windows下安装软件时,只需用鼠标双击软件的安装程序,或者用Zip等解压缩软件解压缩即可安装。在Linux下安装软件难度高于Windows下软件安装。下面我就详...

    Linux教程网3052019-11-01