经常使用-grep-awk把握日志监控-中日志剖析神器-ail-Linux-和 (经常使用公共卫生间引起尿路感染)
一个日志查问剖析的例子
名目颁布上线后,接上去须要做什么?开Party,庆贺名目上线。但是Party开到一半,服务运转出了点疑问。指导要你马上考查要素并给出适合的处置方法。名目才刚上线,日志监控系统都还没来得及完善。你该怎样处置?
登录主机,查问日志文件定位相关日志,并剖析要素。所以在主机上启动日志查问,成为了必备的技艺。
于是你登上了主机,找到了对应服务的日志文件,输入了:
但这只能看最新的日志输入,不能看到过去的某个期间点的日志,或许依据某些特定的字符启动挑选。
于是你输入了命令:
tail-n20000<xx-service>.log|grep"ERROR"-A50-B50
检查了最近20000行中产生ERROR的日志并包括其前50行和后50行。
一顿操作后你考查出了详细要素,并给出了疑问的处置方法。但是你想考查一下疑问产生的频次:
tail-n2000<xx-service>.log|grep'ERROR'|awk'{count++;}END{print"errorcount:",count}'
随后你剖析出了产生疑问的更深档次的要素,并出具了基本要素剖析报告。
在不具有完善的ELK日志搜集剖析系统的状况下,日志查问剖析只能依托Linux基础的日志查问剖析工具:tail,grep,awk等命令。
tail命令
tail命令用于检查日志文件,经常出现用法如下:
显示文件的最后10行:
显示文件的最后200行:
显示文件第200行开局到末尾的内容:
tail-n+200<filename>
循环读取文件:
更多tail命令相关的信息,可以经过tail--help命令检查。
grep命令
grep命令用于在一个或多个输入文件中,搜查与正则婚配的行,并将婚配的行规范输入。
在日志查问中,通罕用来将tail的输入结果启动过滤日志,经常出现用法如下:
(1)显示最近2000行日志中,蕴含Error(辨别大小写)的日志行如蕴含SystemError,InputError,Error等单词的行
tail-n2000<filename>|grep'Error'
(2)显示最近2000行日志中,蕴含Error单词(辨别大小写)的日志行:
tail-n2000<filename>|grep-w'Error'
-w示意婚配单词。
(3)假设不辨别大小写,则可以用以下命令:
tail-n2000<filename>|grep-wi'Error'
-i参数则示意不辨别大小写。
(4)假设须要显示不蕴含Error的日志行,则可以用以下命令:
tail-n2000postman.log|grep-wiv'Error'
-v示意对婚配的条件取反.
(5)假设须要启动正则婚配则可以添加-e参数,-E参数则示意裁减正则婚配
tail-n2000postman.log|grep-e'.*Error.*'tail-n2000postman.log|grep-E'.*Error.*|.*error.*'
(6)-A参数可以蕴含婚配行的前n行,-B参数则蕴含婚配行的后n行,上文的提到的命令
tail-n20000<xx-service>.log|grep"ERROR"-A50-B50
则示意婚配蕴含ERROR字符的行,以及前50行和后50行。
更多grep命令相关的信息,也可以经过grep--help命令检查。
awk命令
awk是一个文本处置工具,关键用于数据扫描,过滤,统计汇总等。
awk基本语规律是:
awk'<pattern>{<action>}<pattern>{<action>}...'
上方提到的一个关于awk的命令则是统计了一下日志中产生ERROR字符的行数。
tail-n2000<xx-service>.log|grep'ERROR'|awk'{count++;}END{print"errorcount:",count}'
更繁难的成功方式则可以经过awk的内置变量成功,如列出ls命令输入的结果行数:
ls|awk'END{printNR}'
END是awk中的一个关键字,前面接的代码块只会在读取完一切数据记载最后口头一次性。与之同样的则是BEGIN,前面接的代码块只会在读取数据记载前口头一次性。
awk是一个十分弱小的文本剖析工具,假设有日志剖析需求,awk足以应答日常所需。更多关于awk的教程可以自行在网上搜查相关资料,或许检查官方教程:
总结
总之,基于linux的日志查问剖析,联合tail、grep、awk这三个命令的运用,就齐全满足日常的日志剖析需求了。tail控制日志查找范畴,grep启动关键词挑选,awk用于剖析统计。
查看linux系统日志命令查看linux系统的日志
`linux的登录日志怎么查看?
more/var/log/securewho/var/log/wtmp干了些什么?
root账户下输入su-username切换到username下输入history能看到这个用户历史命令,默认最近的1000条。学习Linux,《Linux就该这么学》这本书能提供更全面的学习路线。
linux下查找日志的技巧?
先必须了解两个最基本的命令:
查询日志尾部最后10行的日志;
tail-n+查询10行之后的所有日志;
查询日志文件中的头10行日志;
查询日志文件除了最后10行的其他所有日志;
场景1:按行号查看---过滤出关键字附近的日志
因为通常时候我们用grep拿到的日志很少,我们需要查看附近的日志.我是这样做的,首先|grep地形得到关键日志的行号。
3>得到地形关键字所在的行号是102行.此时如果我想查看这个关键字前10行和后10行的日志:
|tail-n+92|head-n20
tail-n+92表示查询92行之后的日志
head-n20则表示在前面的查询结果里再查前20条记录
这个根据时间段查询日志是非常有用的命令.
如果我们查找的日志很多,打印在屏幕上不方便查看,有两个方法:
(1)使用more和less命令,如|grep地形|more这样就分页打印了,通过点击空格键翻页
(2)使用>将其保存到文件中,到时可以拉下这个文件分析.如:
|grep地形>
linux如何在日志中查找关键字?
两种方法:一种是直接进入编辑模式,vi进入后,通过匹配关键字查找你要的东西;一种是直接cat文件然后grep关键字。拓展:
1、Linux操作系统是基于UNIX操作系统发展而来的一种克隆系统,它诞生于1991年的10月5日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并通过全世界各地计算机爱好者的共同努力,已成为今天世界上使用最多的一种UNIX类操作系统,并且使用人数还在迅猛增长。
2、Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它主要用于基于Intelx86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
linux下怎么查看ssh的用户登录日志?
sshd服务在linux中是默认开启的,/etc/ssh/sshd_config看看有没有这个文件,或者是使用sship地址登陆一下,ip地址就是你的linux主机的地址。你要是实在不明白就去网上收一下《linux就该这么学》,看看他的第9章,专门讲了ssh服务。
如何分析Linux日志?
一般两种类型日志:永久日志rsyslog临时日志
临时日志查看journalctl-f参数可追踪实时日志
永久日志保存在/etc/log目录下,通过修改/etc/参数可定义不同日志的输出路径
配置路径格式:设备名.优先级;例外路径
例如*;;;/var/log/messages
表示的是:所有日志优先级在info以上包含info除去mailauthprivcron的日志保存在/var/log/messages中
常用日志
message系统信息日志
sercue安全审计日志
系统启动日志
dmesg硬件检测日志(此日志只能用dmesg命令查看)
所有通过yum安装的软件的安装日志
wtmp用户登录登出记录(用last查看)
查看日志可用cat或者more命令
linux三剑客的基本使用——grep、sed、awk
grep、sed、awk是linux功能非常强大的三个命令,grep是查找过滤文本,sed是对文本进行编辑替换,awk是对文本进行分析报告。 最简单的理解就是找什么东西用grep,想修改什么内容用sed,想格式化内容用awk。 创建一个文件名为grep_的文件,并放入内容: SillyMadman is both a madman and a fool. Everyone agrees with this sentence. 我要查找在grep_文件里有Silly的行 命令是: grep Silly grep_ 会返回内容:SillyMadman is both a madman and a fool. 也可以带以下参数,这些我认为可能容易用到的参数,其它的参数需要另行查找 文档,比如可以使用正则进行匹配。 内容相关的 -B, --before context=NUM显示所在行之前的行数 -A, --after context=NUM显示所在行之后的行数 -C, --context=NUM打印输出上下文的行数 过滤内容相关的参数: -i, --忽略大小写区分 -w,--匹配查找的整个单词 -x,--匹配查找的整行文本 -v, --过滤掉匹配的内容 输出内容相关的参数 -n, --行号打印带有输出行的行号 比如,我要查找在grep_文件里不区分大小写查找sillymadman,并显示行号和匹配文本的下一行,那么我可以用以下命令查找 grep sillymadman grep_ -i -n -A1 内容返回为 1:SillyMadman is both a madman and a fool. 2-Everyone agrees with this sentence. 总体而言grep的使用方式就是 grep [参数...](查找的内容) (文件名) grep也经常搭配管道符号|使用,比如我要查询某程序的进程,并去掉查找进程本身,那么命令为 ps -ef | grep program_name | grep -v grep 再创建一个文件名为sed_的文件,并放入内容: SillyMadman is both a madman and a fool. Everyone agrees with this sentence. 我想要在第一行下面添加一句:woshishazi 命令是:sed 1a\woshishazi sed_ 返回内容为: SillyMadman is both a madman and a fool. woshishazi Everyone agrees with this sentence. 但是以上这个命令不会修改原文件,如果需要,需要加上-i sed -i1a\woshishazi sed_ 上面a是代表append,从指定行后面新的一行添加数据,还有其他操作 操作有以下这些 a :从下面一行新增 i :从上面一行插入, d :删除 c :整行替换 p :打印 s :对指定内容进行替换 下面稍微举下例: a: sed 1a\woshishazi sed_ 从第一行后面添加 i: sed 1i\woshishazi sed_ 从第一行前面插入 d: sed 1d sed_ 删除第一行 c: sed 1c\woshishazi sed_ 替换第一行内容为woshishazi p: sed -n 1p sed_打印第一行,一般搭配-n使用,其他内容就不会再展示 s:这个相对复杂一点需要详细说明一下 sed的参数为 [行]s/要被替换的内容/新的内容/g 行是一个可选项,可以选择具体的行进行替换 g代表替换所有匹配到的内容,也可以改为数字,表示第几次匹配到时进行替换 seds\SillyMadman\shafengzi\g sed_ ,将所有SillyMadman替换为shafengzi 输出结果为: shafengzi is both a madman and a fool. Everyone agrees with this sentence. 最后再创建一个文件名为awk_的文件,并放入内容: 1 a 2 b 3 c 4 d 5 f 以空白符作为分隔符这个文本相当于每一行有两个字段。 那么打印第一个字段时 awk {print 0的话,则代表打印所有字段 awk默认以空白符作为分隔符,也可以指定分割符通过-F awk -F: {print $1} awk_,以“:”作为作为分隔符 那么返回内容就为 1 a 2 b 3 c 4 d 5 f 相当于只有一列或者说一个字段 然后还可以对前面加上一个正则对行进行匹配内容 awk/a/{print 2 ~ /a/){print $1} awk_ 返回内容为 1
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。