Linux 服务器日志文件查找技巧精粹
用来在日志文件里搜索特定活动事件的工具不下几十种,本文将介绍搜索日志文件时应该采取的策略。然后,通过几个具体示例介绍一些使用grep命令手动搜索日志文件的办法。接下来,我们将看到 logwatch工具和logsurfer工具的用法。最后,将看到需要自行 下载 和安装的工具,如swatch等。
1、查找日志文件简单方法
一般来说,系统日志文件几乎都保存在/var/子目录(该路径由syslog.conf文件定义)。如果想让所有的应用程序都把日志文件集中存放到/var/子目录下,需要依次对每一个应用程序的配置文件进行编辑。把日志集中到/var/子目录下是个很好的主意。首先,当需要查看它们、修改它们的权限或者对它们进行备份的时候,只要到一个地方就可以找到所有的日志文件。
其次,/var/子目录通常是在一个独立于根目录(/)的文件系统里,这有助于防止日志文件迅速变大并占满可用空间,避免操作系统和应用程序受到影响。可以利用find命令把你不知道的日志文件查找出来具体做法是:先切换到根目录下,然后以根用户(root)身份执行下面这条命令把最近被修改过的文件全部找出来:
find . -type f -mtime -5 –print | grep -v proc | grep -v lock
2、搜索日志文件时的策略
日志文件分析工作中的第一个挑战是把异常活动从正常活动中识别出来。完成这项挑战的前提是你必须知道系统和网络上的正常活动在日志文件里是什么样子。如果没有事先积累的经验,很难知道按规律发生的事件在日志文件里的表现。熟悉正常的日志文件活动要有一个时间过程,要求大家一上来就把日志文件看明白显然不现实,这是一个需要时间积累的过程。
要知道,随着网络上的应用程序和用户的数量不断增减和变化,日志文件的内容肯定会发生相应的改变。把异常情况孤立出来之后,接下来的步骤是正确地判断这种异常情况是否属于警报条件。要想正确地做出判断,只能通过加深对公司日常活动的了解才能做到。往往需要在系统的可用性与防范风险之间把握一种平衡。
3、以手动方式搜索日志文件
grep是Unix系统上功能最强大的shell命令之一。利用grep命令在日志文件里搜索各种可疑线索是这个文本文件搜索命令的绝佳用途。grep命令的用法很简单——在命令行上输入:
grep "failed" /var/log/messages
上面这条grep命令将把/var/log/messages文件里包含单词“failed”的文本行全部找出来。在默认情况下,grep命令是大小写敏感的,你可能需要根据具体情况使用grep命令和它的“-i”选项来进行对大小写不敏感的搜索。搜索日志文件的挑战之一是你必须先知道自己想找什么东西,然后才可以把可能存在的这个东西找出来。有几种办法可以帮助解决这一问题。
如果你知道自己想找的事件或活动——比如,用户试图使用su命令切换为根用户——可以先自己进行一次这样的活动,然后去日志文件里看看它是什么样子。比如,在SUSE Linux系统上,执行失败的su命令将在日志文件里留下这样一条记录:
Apr 1 11:15:54 chim su: FAILED SU (to root) rreck on /dev/pts/1
于是,如果想把所有这类活动都查出来,应该使用下面这样的命令:
grep "FAILED SU" /var/log/messages
上面示例里的活动是******的一种标志。如果grep命令只在日志文件里零零散散地找到了几个这样的失败事件,那很可能是有人忘记了口令字或者是打字时出现了错误。反之,如果grep命令在日志文件里找到几十个这样的失败事件,很可能是有人在试图闯入你的系统,应该立刻采取措施在网络级拒绝他们的访问。
4、使用logsurfer工具搜索日志文件
logsurfer是一个日志文件搜索工具。与swatch等日志搜索工具相比,logsurfer允许人们做出更细致的决定。与其他日志搜索程序相似,logsurfer工具也是把日志文件里的每一行与一些规则表达式进行匹配,每找到一个匹配就相应地执行某个动作,而那些动作被表达为“规则”。 logsurfer工具在某些方面比swatch工具做得还要好。
首先,logsurfer工具使用两组规则表达式匹配文本行;日志文件中的文本行必须匹配第一组表达式,但不需要匹配可选的第二组表达式。这种安排在某些场合非常有用,它可以让人们方便地排除异常情况。logsurfer工具的另外一个突出优点是它可以结合上下文进行检查而不是只检查单个的文本行。这很方便,因为日志文件里的单独一行文本往往不足以包含做出某个决定所需要的信息。
要说不足,不少人认为logsurfer工具比较难以配置,因为对它进行配置必须精通规则表达式,而且它本身提供的配置示例不够多。如果想了解更多关于logsurfer工具的信息,它的man文档是最好的地方。列在表1里的细节都可以在这个工具的man文档里查到。logsurfer配置文件里的每
一行可以是以下三种情况之一:如果第一个字符是“#”,它是一个注释行;如果第一个字符是空格,它是上一行的继续;如果第一个字符既不是“#”也不是空格,它是一条新规则的开始。每条新规则由六个必要字段(第1、2、3、4、5、7字段)和一个可选字段(第6字段)组成,对这七个字段的详细解释见表1。
表1 logsurfer配置行上的各个字段
字段编号
是否是可选
字段名
字段解释
1
必要
match_regex
“字段1”被解释为一个规则表达式。如果文本行匹配“字段1”(match_regex),按后续各项定义依次处理;如果不匹配,logsurfer将用下一条规则匹配这个文本行,本规则后续各项定义不起作用
2
必要或-
not_match_regex
这个字段将被解释为一个规则表达式。用“字段1”(match_regex)匹配到的文本行只有在不匹配“字段2”(not_match_regex)的情况下才继续按后续各项定义依次处理
3
必要或-
stop_regex
如果不是减号(-)字符,本字段将被解释为一个规则表达式。如果这个表达式得到匹配,本规则将从活跃规则表里被删除
4
必要或-
not_stop_regex
如果不是减号(-)字符,本字段将被解释为一个规则表达式。只有在“字段3”(stop_regex)存在且已得到匹配和“字段4”(not_stop_regex)不匹配的情况下才删除这个规则
5
必要或0
timeout
以秒计算logsurfer规则的寿命,把“字段5”设置为0表示规则永远有效
6
可选
Continue
如果这个字段被设置为“continue”,logsurfer将继续使用下一条规则来匹配文本行;如果没有“continue”,后续的规则将全部被跳过
7
必要
Action
以下几种动作之一:ignore、exec、pipe、open、delete、report、rule
表2 logsurfer动作解释
动作名称
解释
Ignore
什么都不做,忽略被匹配到的文本行。有时候,虽然用logsurfer工具找到了一些日志文本行,但如果知道它们并不重要,可以用这个动作不让logsurfer发出警报
exec
这个动作的参数被解释为一个程序,规则得到匹配时logsurfer将调用该程序
pipe
类似于exec动作,但被调用的程序将从stdin设备读入一个日志文本行
open
增加(打开)一个新的上下文,但在匹配match_regex(“字段1”)时已经存在的上下文就不必再次打开了
Delete
如果一个现已存在的match_regex被用做这个动作的参数,指定的上下文将被关闭并删除,而且不采取“default_action”选项定义的默认动作
report
这个动作的第1个参数是一个将被调用执行的程序(及其命令行选项)。随后的参数是一些将被用做该程序的标准输入的上下文定义
Rule
这个动作将创建一条新规则。关键字“rule”的后面必须有一个告诉logsurfer按什么顺序使用新规则的指示符:before(在本规则之前使用)、behind(在本规则之后使用)、top(在本配置文件所有规则之前使用)、bottom(在本配置文件所有规则之后使用)
5、使用swatch工具搜索日志文件
swatch工具不是Red Hat Enterprise Linux发行版本的标准组成部分,但因为swatch工具很容易安装、配置和使用,所以你应该考虑 下载 并安装它。在开始使用它之前,还需要一个配置文件。在默认情况下,swatch工具将在启动它的那个用户的登录子目录里寻找.swatchrc文件(例如/home/rreck/.swatchrc),但你可以用“-f”选项为它另外指定一个配置文件,如下所示:
swatch –f /etc/.swatcrc
接下来,看看如何使用swatch工具从日志文件里发现***活动的踪迹以及发现之后该做些什么。
转载于:https://blog.51cto.com/ynhu33/376298
相关文章:

程序猿面试什么最重要?
程序猿面试一直是社区乐于讨论的热门话题。我自己从06年实习以来。先后经历了4家软件公司。所有是外企。当中有世界500强的通信企业,有从事期权期货交易的欧洲中等规模的金融公司,也有为大型汽车制造商开发Android智能汽车的新兴公司。跨入IT行业以来。我…

open的O_DIRECT选项
http://blog.chinaunix.net/uid-223060-id-2127385.html http://blog.csdn.net/hhtang/article/details/6605951 查看磁盘分区: #df -h #tune2fs -l /dev/mapper/VolGroup-lv_root 或者 #dumpe2fs /dev/mapper/VolGroup-lv_root|grep -i "block size"…
2020 年,AI 芯片内存哪家强?
目前多家公司都在开发网络边缘系统的AI芯片,本文作者详细分析AI边缘芯片遇到的问题和挑战,并给出一些新的内存技术解决方案。作者 | Mark LaPedus译者 | 弯月,责编 | 伍杏玲封图 | CSDN下载自视觉中国出品 | CSDN(ID:CSDNnews&…

Excel数字、文本混合列导入SQL Server出现的问题&解决办法
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://annie-out.blogbus.com/logs/60276495.htmlExcel文件:序号 姓名 内部电话 住址 1 小李 1234 …… 2 小王5678……3小张2345(国内长途)…………………………如上结构的…

ARM 位置无关代码(PIC)的分析理解
2019独角兽企业重金招聘Python工程师标准>>> PIC的特点是: 它被加载到任意地址空间都可以正确的执行。其原理是PIC对常量和函数入口地址的操作都是基于PC偏移量的寻址方式。即使程序被移动,但是PC也变化了,而偏移量是不变的&#…

Linux压缩/解压缩
整合资源,仅供自己参考:) TAR 命令名 tar - tar 档案文件管理程序的 GNU 版本。下面将逐个介绍其含义 总览 tar [ - ] A --catenate --concatenate | c --create | d --diff --compare | r --append | t --list | u --update | x -extract -…
为什么校招面试中总被问“线程与进程的区别”?我该如何回答?
作者 | 宇宙之一粟责编 | 徐威龙出品 | AI 科技大本营(rgznai100)进程与线程?(Process vs. Thread?)面试官(正襟危坐中):给我说说“线程”与“进程”吧。我(总…

Linux线程编程
1.编译 undefined reference to pthread_create问题解决 出现如下错误: undefined reference to pthread_create undefined reference to pthread_join 问题原因: pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread…

PHP引擎php.ini 和fastcti优化
1.1 php引擎缓存优化加速1)eaccelerator2)Zend3)xcache1.2 使用tmpfs作为缓存加速的的文件目录[rootLNMP ~]# mount -t tmpfs /dev/shm -o size256m[rootLNMP ~]# mount -t tmpfs /dev/shm/ /tmp/eaccelerator/提示:1、上传图片缩…
从*p++说指针,数组,结构和函数
说明文中*p和*s都是一个东西,不做字面上的统一了。 因为右结合性,*p 其实就是 *(p) 1.strlen的实现 #include <stdio.h> main(){char str[] "Abcde";printf("\n string %s length %d \n",str,str_length(str)); }int str…
8比特数值也能训练模型?商汤提训练加速新算法丨CVPR 2020
出品 | AI科技大本营(ID:rgznai100)在CVPR 2020上,商汤研究院链接与编译团队、高性能计算团队和北航刘祥龙老师团队合作提出了用于加速卷积神经网络训练过程的INT8训练技术。该工作通过将网络的输入、权重和梯度量化到8比特来加速网络的前向传…

×××作,不知写些什么
博客,老是有写的冲动,不过,没什么韧劲坚持,自己感觉文采一般般啦,有时兴起,挥毫泼墨,蜡笔重唱一番,呵呵,自个爽朗了,呵呵 所以,自己坚持ÿ…

centos7 install 安装mysql
CentOS 7的yum源中貌似没有正常安装mysql时的mysql-sever文件,需要去官网上下载 # wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm # rpm -ivh mysql-community-release-el7-5.noarch.rpm # yum install mysql-community-server成功安装之…
AI四巨头Google、DeepMind、Microsoft、Uber深度学习框架大比拼
编者按:Google、Uber、DeepMind和Microsoft这四大科技公司是当前将深度学习研究广泛应用于自身业务的典型代表,跻身全球深度学习研究水平最高的科技公司之列。GPipe、Horovod、TF Replicator和DeepSpeed分别是这四家公司开发应用的深度学习框架ÿ…

转《刘润的数字化家庭》
数字家庭也是我的一大梦想,感谢刘润让我的想法更加丰富和具体。。。 转载自刘润的博客,原文地址:http://blog.run2me.com/runliu/archive/2010/06/12/37082.aspx 1 of 22 (大图):用数字化的技术,…
自己写的内存池Slabs
看memcached的源码写的,虽然很粗糙,但是基本思想还是有的,自娱自乐,后期不断改进。 #include <stdio.h> #include <stdlib.h> #include <string.h>struct st{void * start;void * end;char ptr[10]; }; struct …
Eclispse Che(2):启动Che服务,进入IDE界面
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/50888878 未经博主允许不得转载。 博主地址是:http://blog.csdn.net/freewebsys 1,关于Docker 上次使用Che的时候没有成功创建Project。 其实主要问题就是docker的网络问题。 使用…
使用strace和ltrace跟踪程序调用
ltrace能够跟踪进程的库函数调用,它会显现出哪个库函数被调用,而strace则是跟踪程序的每个系统调用.1.系统调用的输出对比程序代码:#include <stdio.h> main(){char str[] "Abcde";printf("\n string %s length %d \n",str,str_length(…

NeHe OpenGL第三十三课:TGA文件
NeHe OpenGL第三十三课:TGA文件 加载压缩和未压缩的TGA文件: 在这一课里,你将学会如何加载压缩和为压缩的TGA文件,由于它使用RLE压缩,所以非常的简单,你能很快地熟悉它的。 我见过很多人在游戏开发论坛或其它地方询问…

阿里自动驾驶新突破!达摩院自研ISP图像处理器大幅提升安全性
阿里巴巴达摩院在自动驾驶领域取得新突破!4月8日,据记者了解,达摩院已经自主研发出用于车载摄像头的ISP处理器,保障自动驾驶车辆在夜间拥有更好的“视力”,“看”得更清晰,从而大幅提升自动驾驶安全性, 而背…

3月14号作业
<!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title></title> </head> <body> <br/> <br/> <img src"51job表单_03.gif"</br> <br/> <br/>…

NeHe OpenGL第三十五课:播放AVI
NeHe OpenGL第三十五课:播放AVI 在OpenGL中播放AVI: 在OpenGL中如何播放AVI呢?利用Windows的API把每一帧作为纹理绑定到OpenGL中,虽然很慢,但它的效果不错。你可以试试。 首先我得说我非常喜欢这一章节.Jonathan de Blok使我产生…
为什么TCP的TIME_WAIT状态要保持2MSL?
TIMEWAIT状态也称为 2MSL等待状态。每个具体TCP实现必须选择一个报文段最大生存时间MSL(Maximum Segment Lifetime)。它是任何报文段被丢弃前在网络内的最长时间。我们知道这个时间是有限的,因为TCP报文段以IP数据报在网络内传输,而IP数据报则有限制其生…
深度 | 一文读懂“情感计算”在零售中的应用发展
作者 | 黄程韦博士、刘刚、包飞博士、杨现博士、孙皓博士、沈艺博士来源 | 苏宁零售技术研究院零售商需要不断通过创新服务来提高顾客的购物体验,而情感计算在该领域具有独特优势。它在零售行业的应用,主要集中在提升购物体验的服务中。在这个科技逐步改…

mysql基于replication实现最简单的M-S主从复制
2019独角兽企业重金招聘Python工程师标准>>> 什么是replication Replication可以实现数据从一台数据库服务器(master)复制到一到多台数据库服务器。 默认情况下,属于异步复制,因此无需维持长连接。 通过配置࿰…

Linux下高并发socket最大连接数所受的各种限制
修改最大打开文件数 # ulimit -n 修改最大进程数 # ulimit -u ------------------------------------------------------ Linux下高并发socket最大连接数所受的各种限制 转自:http://blog.csdn.net/guowake/article/details/6615728 1、修改用户进程可打开…

linux安全问答(1)
一、如何限制对系统资源的过度使用? (1)、编辑/etc/security/limits.conf文件,在其中加入或改变下面这些内容: * hard core 0 //禁止创建core文件 * hard rss 5000 //表示除root用户之外,其他用户都只能最多…
快速搭建对话机器人,就用这一招!
作者 | Milvus.io 责编 | 胡巍巍问答系统是自然语言处理领域一个很经典的问题,它用于回答人们以自然语言形式提出的问题,有着广泛的应用。其经典应用场景包括:智能语音交互、在线客服、知识获取、情感类聊天等。常见的分类有:生成…

目前流行的源程序版本管理软件和项目管理软件都有哪些?各有什么优缺点?...
目前流行的源程序版本管理软件和项目管理软件:Microsoft TFS,Github,SVN,Coding 各自的优缺点: Microsoft TFS:优点:任务版上能将需求、项目进度一览无余,对于小团队而言,…

孙鑫mfc学习笔记第十四课
第十四课网络的相关知识,网络程序的编写,Socket是连接应用程序与网络驱动程序的桥梁,Socket在应用程序中创建,通过bind与驱动程序建立关系。此后,应用程序送给Socket的数据,由Socket交给驱动程序向网络上发…