linux 日志分析工具logwatch 及实时监控swatch

【 描述 】
Logwatch是使用 Perl 开发的一个日志分析工具
Logwatch能够对Linux 的日志文件进行分析,并自动发送mail给相关处理人员,可定制需求
Logwatch的mail功能是借助宿主系统自带的mail server 发邮件的,所以系统需安装mail server , 如sendmail,postfix,Qmail等


本文yum安装配置
yum install -y logwatch

【 配置 】

a. 配置文件在 /etc/logwatch , 相关配置模板在 /usr/share/logwatch

cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf

如果不做这一步 , /etc/logwatch/conf/logwatch.conf 是一个空文件

默认配置会使用 /usr/share/logwatch/default.conf/logwatch.conf

b. vim /etc/logwatch/conf/logwatch.conf

LogDir = /var/log              logwatch 会去 /var/log 找你定义的 log 文件
TmpDir = /var/cache/logwatch
# Save = /tmp/logwatch         开启此项, 处理结果将保存在/tmp/logwatch, 不邮寄或显示
MailTo = [email protected]         多个邮箱逗号隔开
MailFrom = Logwatch            当你收到邮件时, 显示是谁发给你的
Range = All                    处理什么时候的日志 , 可选项  All , Yesterday , Today , 即所有, 昨天的 , 今天的
Detail = High                  日志详细度, 可选项 Low , Med , High , 或是 0-10数字
Print = No                     可选项, Yes 会被打印到系统标准输出, 并且不会以邮件的形式发送到 MailTo 设定的邮箱里 , No 选项则会发到邮箱中
Server = All                   监控所有服务 all
Service = “-httpd”             不监控的服务前面加 “-” , 如 -httpd , 即不监控 httpd 服务 , 可以写多条
Service = “-sshd”

【 Logwatch 使用 】
a. 配置好以后 , 使用如下命令测试
/usr/bin/perl /usr/share/logwatch/scripts/logwatch.pl

你会发现没有 httpd , sshd 服务的日志报告 ,
去掉 Service = “-sshd” 配置 , 再执行上面命令 , 就可以看到 sshd 服务的 report 了

b. Logwatch 并不是以系统服务形式来跑的 , 而是靠在命令行上敲的 , 所以可以使用 crontab 来定时执行
在配置好 Logwatch 后 , 会生成一个软链 /etc/cron.daily/0logwatch , 对应文件为 /usr/share/logwatch/scripts/logwatch.pl
你可以删除这个软链 , 并重写 crontab :

* 00 * * *  /usr/bin/perl /usr/share/logwatch/scripts/logwatch.pl >/dev/null 2>&1


【 Logwatch 命令行使用 】
Logwatch 也可以在命令行上使用, 如下例子:
logwatch �Cdetail High �CService All �Crange All �Cprint    # 显示所有日志, �Cdetail , �CService, �Crange 开关可以在 logwatch.conf 中 找到
logwatch �Cservice cron �Cdetail High                     # 查看 sshd 日志

以下是 logwatch 的参数解释:
�Cdetail <level>:            报告的详细度,可选项: High, Med, Low , 数字 0-10
�Clogfile <name>:            指日志文件名
�Cservice <name>:            服务名,有对应的解析脚本,可以在 /usr/share/logwatch/scripts/services 中找到
�Cprint:                     打印打标准输出
�Cmailto <addr>:             收件人地址
�Carchives:                  使用压缩的文件, 轮转的文件, 例如 messages.1、messages.1.gz
�Csave <filename>:           保存到文件
�Crange <range>:             日期范围, Yesterday, Today, All
�Cdebug <level>:             调试级别: High, Med, Low
�Csplithosts:                为每个主机创建一份报告
�Cmultiemail:                将报告发送给多个邮件地址

【 故障排除 】
如果没有收到 Logwatch日志报告邮件 , 请检察本地 sendmail 服务是否正常

直接指定邮件发送

#logwatch --range today --print --mailto 你的邮箱地址  当天

/usr/share/logwatch/scripts/logwatch.pl --mailto 你的邮箱地址



Swatch从字面上可以简单理解为Watcher(守护者). 其它的日志分析软件定期地扫描日志文件, 向你报告系统已经发生的问题或者状况. Swatch程序不仅能够做这些, 而且它能够像Syslogd守护程序那样主动的扫描日志文件并对特定的日志消息采取修复行动.

  Swatch 提供了许多通知方式,例如:email,振铃,终端输出,多种颜色等等。

  swatch 的安装需要一些 perl 库的支持,安装前确信您的系统已经可以支持 perl。

  一. 准备

  1. 下载和解压缩最新的Swatch软件包.建议从Swatch的官方网站获得可靠的Swatch软件包.

  下载网址:http://sourceforge.net/projects/swatch/files/swatch/3.2.3/

  解压缩源代码包,

  #tar zvxf swatch-3.2.3.tar.gz

  二. 安装

  #cd swatch-3.2.3

      perl Makefile.PL  

      #make
  #make test
  #make install
  #make realclean

  Swatch程序安装成功后, Perl模块将会用于Swatch程序的运行.

   

Swatch 可以在命令行中进行一些简单的设置,例如日志循环时告诉 swatch 在循环完毕后重新启动等等。

配置文件 swatchmessage 是 swatch 软件的重点。这个文本文件告诉 swatch 需要监视什么日志,需要寻找什么触发器,和当触发时所要执行的动作。当 swatch 发现到与 swatchmessage 中定义的触发器正则表达式相符时,它将执行在 swatchrc 中定义的通知程序。Swatch 通过使用/usr/bin/tail -f 实时监视日志文件。

在这里我们不想过多的将如何配置,配置 swatch 非常简单,您可以参考 swatch 自带的配置文件。针对每个服务例如:ftp,sendmail 等等,你必须为每个您所关心的服务配置一个 swatchmessage 文件。

Swatch 启动时可以带很多参数,但使用通常如下格式启动它就可以了:

/usr/local/bin/swatch -c /var/log/syslogmessage -t /var/log/syslog -r 06:00&

-c 参数用于指定配置文件,-t 参数指定实时监视的日志文件,-r 指定重起的时间,"&" 使 swatch 在后台运行。启动后,swatch 产生子进程,因此 swatch 是以两个进程运行的,在停止 swatch 时必须杀掉两个进程。

也可以通过 logrotate 配置在日志循环后重起 swatch,可以在 /etc/logrotate.d 建立一个您所要关心的日志的循环文件,其中最关键的是要加入下面这行:

/usr/local/bin/swatch -c /var/log/syslogmessage -t /var/log/syslog -r + 0

其他的地方可以仿造别的同目录下的文件。'

  三. 配置

  Swatch程序使用正向表达式(Regular Expressions)来发现感兴趣的目标行. 一旦Swatch发现某一行匹配预设定的模式, 它会立即采取行动, 比如说屏幕打印, 发送电子邮件, 或者采取用户预先设定的行动.

  watchfor /[dD]enied│/DEN.*ED/
  echo bold
  bell 3
  mail
  exec "/etc/call_pager 5551234 08"

  上面的脚本是Swatch配置文件一个部分的例子. 首先Swatch在指定的日志文件中寻找包含设定单词"denied, Denied, 或者其它以DEN开始或者以ED结束的单词的行. 一旦搜索到某行包含三个搜索单词中的任何一个. Swatch程序立即向终端显示粗体行和响铃三下, 然后发送电子邮件给运行swatch程序的用户(通常是
  root用户)警报所在行和执行/etc/call_paper程序, 忽略sendmail, fax, unimportant stuff. 在这个例子当中, 搜索字符串sendmail, fax和unimportant stuff将被忽略. 甚至他们符合预定搜索字符串中的一个.

四. 使用

  使用Swatch非常的简单, 如通常使用Swatch检查日志, 运行:
  swatch --config-file=/home/zhaoke/swatch.conf   --examine=/var/log/messages

  上面的例子中配置文件所在的系统绝对路径是/home/zhaoke/swatch.conf,需要检查的日志文件是/var/log/messages.

  使用swatch检查不段增加的日志文件:
  swatch --config-file=/home/zhaoke/swatch.conf  --tail-file=/var/log/messages


你可能感兴趣的:(linux,日志分析工具logwatch,及实时监控swatch)