Linux如何安装使用logwatch以便处理日志禁止

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux如何安装使用logwatch以便处理日志禁止相关的知识,希望对你有一定的参考价值。

参考技术A   在Linux系统操作中,logwatch能够对系统log报告进行分析,用于Linux日志的处理,下面我就详细介绍下Linux安装使用logwatch的方法,感兴趣的朋友不妨来了解下。

  logwatch 的主要目的是生成更易于使用的日志摘要,并不是用来对日志进行实时的处理和监控的。正因为如此,logwatch 通常被设定好时间和频率的自动定时任务来调度运行或者是有需要日志处理的时候从命令行里手动运行。一旦日志报告生成,logwatch 可以通过电子邮件把这报告发送给您,您可以把它保存成文件或者直接显示在屏幕上。

  Logwatch 报告的详细程度和报告覆盖范围是完全可定制化的。Logwatch 的日志处理引擎也是可扩展的,从某种意义上来说,如果您想在一个新的应用程序中使用 logwatch 功能的话,只需要为这个应用程序的日志文件编写一个日志处理脚本(使用 Perl 语言),然后挂接到 logwatch 上就行。

  logwatch 有一点不好的就是,在它生成的报告中没有详细的时间戳信息,而原来的日志文件中是存在的。您只能知道被记录下来的一段时间之内的特定事件,如果想要知道精确的时间点的信息,就不得不去查看原日志文件了。

  安装 Logwatch

  在 Debian 系统或其派生的系统上:

  # aptitude install logwatch

  在基于 Red Hat 的发布系统上:

  # yum install logwatch

  配置 Logwatch

  安装时,主要的配置文件(logwatch.conf)被放到 /etc/logwatch/conf 目录中。此文件(默认是空的)定义的设置选项会覆盖掉定义在 /usr/share/logwatch/default.conf/logwatch.conf 文件中的系统级设置。

  在命令行中,启动 logwatch, 如果不带参数的话,将会使用 /etc/logwatch/conf/logwatch.conf 文件中定义的选项。但,只要一指定参数,它们就会覆盖 /etc/logwatch/conf/logwatch.conf 文件中的任意默认/自定义设置。

  这篇文章里,我们会编辑 /etc/logwatch/conf/logwatch.conf 文件来对一些默认的设置项做些个性化设置。

  Detail=《Low,Med,High,或数字》

  “Detail” 配置指令控制着 logwatch 报告的详细程度。它可以是个正整数,也可以是分别代表着10、5和0数字的 High、Med、Low 几个选项。

  MailTo= youremailaddress@yourdomain.com

  如果您让把一份 logwatch 的报告邮件给您,就要使用 “MailTo” 这个配置指令。要把一份报告发送给多个用户,只需要把他们的邮件地址用空格格开,然后配置上去。但是,您需要在 logwatch 运行的服务器上配置好本地邮件传输代理(MTA)如,sendmail、 Postfix 等,这个配置指令项才能起作用。

  Range=《Yesterday|Today|All》

  “Range” 配置指令定义了生成 logwatch 报告的时间段信息。这个指令通常可选的值是 Yesterday、Today、All。当作用了“Rang = All”时,“Archive = yes” 这个指令项也必须配置上,那么所有的已存档的日志文件 (比如,/var/log/maillog、/var/log/maillog.X 或 /var/log/maillog.X.gz 文件)都会被处理到。

  除了这些通用的 range 值,您也可以使用复杂点的选择值,如下所示:

  Range = “2 hours ago for that hour”

  Range = “-5 days”

  Range = “between -7 days and -3 days”

  Range = “since September 15, 2014”

  Range = “first Friday in October”

  Range = “2014/10/15 12:50:15 for that second”

  要使用上面例子中自由形式的 range,您需要从 CPAN(注:ComprehensivePerlArchiveNetwork) 上下载安装 Perl 的 Date::Manip 模块。关于 CPAN 模块的安装说明,请请参阅此文 http://www.linuxidc.com/Linux/2014-12/110704.htm 。

  Service=《service-name-1》

  Service=《service-name-2》

  。。。

  “Service” 选项指定想要监控的一个或多个服务。在 /usr/share/logwatch/scripts/services 目录下列出的服务都能被监控,它们已经涵盖了重要的系统服务(例如:pam,secure,iptables,syslogd 等),也涵盖了一些像 sudo、sshd、http、fail2ban、samba等主流的应用服务。如果您想添加新的服务到列表中,得编写一个相应的日志处理 Perl 脚本,并把它放在这个目录中。

  如果这个选项要用来选择特定的服务话,您需要把 /usr/share/logwatch/default.conf/logwatch.conf 文件中的 “Service = All ” 这一行注释掉。

  Format=《text|html

  “Format” 配置指令定义了一份 logwatch 报告的格式(比如 text 或者 HTML)。

  Output=《file|mail|stdout》

  “Output” 配置指令定义生成的 logwatch 报告要发送的目的地。它能被保存成文件(file),生成电子邮件(mail)或者是直接在屏幕上显示(stdout)。

  用 Logwatch 来分析日志文件

  要弄明白怎么使用 logwatch 来分析日志文件,可以参考下面的 logwatch.conf 文件例子:

  Detail=High

  MailTo= youremailaddress@yourdomain.com

  Range=Today

  Service= http

  Service= postfix

  Service= zz-disk_space

  Format= html

  Output= mail

  使用这些设置,logwatch 将会处理三个应用服务(http、postfix 和 zz-disk_space)当天产生的日志,生成一份非常详细的 HTML 格式报告,然后邮件给您。

  如果您不想个性化 /etc/logwatch/conf/logwatch.conf,您可以不修改此文件让其默认,然后在命令行里运行如下所示的'命令。也会得到同样的输出。

  # logwatch --detail 10 --mailto youremailaddress@yourdomain.com --range today --service http --service postfix --service zz-disk_space --format html --output mail

  电子邮件发送的报告样子如图示:

  这份电子邮件头部包含指向导航到报告细节的链接,在每个选中的服务细节,也会有“返回顶部”的链接。

  接收人很少的情况下您可能会使用电子邮件发送报告这个选项。其它情况下,您可能会把让其生成为 HTML 格式的报告,这样每个想看这份报告的人都可以从网络共享里看到。只需要把上面例子中的配置做些修改就可以实现:

  Detail=High

  Range=Today

  Service= http

  Service= postfix

  Service= zz-disk_space

  Format= html

  Output= file

  Filename=/var/www/html/logs/dev1.html

  同样的,也可以在命令行中运行如下的命令。

  # logwatch --detail 10 --range today --service http --service postfix --service zz-disk_space --format html --output file --filename /var/www/html/logs/dev1.html

  最后,让我们使用 cron 来配置 logwatch 的定时执行任务。下面的例子中,将会在每个工作日的下午 12:15 分运行 logwatch 调度任务。

  # crontab -e

  1512**1,2,3,4,5/sbin/logwatch

  上面就是Linux安装使用logwatch的方法介绍了,本文还介绍了Linux运用logwatch查看日志的实例,已经logwatch的详细配置,希望对你有所帮助。

Linux Logwatch的学习总结

Logwatch功能介绍

 

Logwatch是一款Perl脚本编写的、开源的日志分析工具。它能对原始的日志文件进行解析并转换成结构化格式的文档,也能根据您的使用情况和需求来定制报告。Logwatch的特点是配置简单、监控、分析日志方便,而且可以对某些功能进行定制化。 项目源码位于https://sourceforge.net/projects/logwatch/

 

LogWatch的官文档介绍:

Logwatch is a customizable, pluggable log-monitoring system. It will go through your logs for a given period of time and make a report in the areas that you wish with the detail that you wish.

 

Logwatch安装升级

 

1: 查看是否安装Logwatch组件

[[email protected] ~]# rpm -qa | grep logwatch
logwatch-7.3-9.el5_6

 

 

2: Logwatch的安装、升级、卸载

 

2.1.1 Logwatch的RPM安装

[[email protected] Server]# rpm -ivh logwatch-7.3-9.el5_6.noarch.rpm 
warning: logwatch-7.3-9.el5_6.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
        package logwatch-7.3-9.el5_6.noarch is already installed
[[email protected] Server]# 
 
 
 
[[email protected] Server]# yum install logwatch

 

2.1.2 Logwatch的源码安装

[[email protected] tmp]# tar -xzvf logwatch-7.4.3.tar.gz 
[[email protected] tmp]# cd logwatch-7.4.3
[[email protected] logwatch-7.4.3]# ./install_logwatch.sh
#################################
Preparing to install Logwatch
Enter the path to the Logwatch BaseDir [/usr/share/logwatch] : 
### Using /usr/share/logwatch
Enter the path for the Logwatch ConfigDir [/etc/logwatch] : 
### Using /etc/logwatch
Enter the dir name to be used for temp files [/var/cache/logwatch] : 
### Using /var/cache/logwatch
Enter the location of perl [/usr/bin/perl] : 
### Using /usr/bin/perl
Enter the dir name to used for the manpage [/usr/share/man] : 
### Using /usr/share/man
### Installing
Created symlink for /usr/sbin/logwatch 
Created /etc/cron.daily/0logwatch 

技术分享

 

2.2 Logwatch的卸载

[[email protected] Server]# rpm -e logwatch-7.3-9.el5_6

 

 

2.2 Logwatch的升级

[[email protected] Server]#rpm -Uvh logwatch***.rpm

 

 

Logwatch的配置介绍

 

Logwatch的配置文件为 /etc/logwatch/conf/logwatch.conf ,初始安装后,这个配置文件是空的。你可以将配置文件的模板拷贝过来,如果不做这一步,就会默认使用/usr/share/logwatch/default.conf/logwatch.conf 这个配置文件。

[[email protected] ~]# more  /etc/logwatch/conf/logwatch.conf
# Local configuration options go here (defaults are in /usr/share/logwatch/default.conf/logwatch.conf)
[[email protected] ~]# cp  /usr/share/logwatch/default.conf/logwatch.conf  /etc/logwatch/conf/logwatch.conf 
cp: overwrite `/etc/logwatch/conf/logwatch.conf‘? yes

 

配置的具体参数介绍:

 

LogDir = /var/log                系统日志或需要分析日志所在路径
 
TmpDir = /var/cache/logwatch     临时文件位置
 
Output = stdout                  输出格式(stdout 屏幕上显示)
 
Format = text                    输出格式,有text、html选项可以选择
 
Encode = none                    编码格式
 
MailTo = root                    分析结果发送给那些人或邮件组。多个邮箱逗号隔开
 
MailFrom = Logwatch              邮件的发件人
 
Range = yesterday                处理什么时候的日志 , 可选项 All(所有) ,Yesterday(昨天) , Today(今天)
 
                                 Range = "1 hours ago for that hour"
 
                                 Range = "-7 days"
 
                                 Range = "between -7 days and -3 days"
 
                                 Range = "since March 15, 2017"
 
                                 Range = "first Friday in October"
 
                                 Range = "2017/04/15 12:50:15 for that second"
 
Detail = Low                     该参数控制着 Logwatch 报告的详细程, 可选项:Low , Med , High 也可以用0-10数字表示
 
                                 其中High、Med、Low 几个选项分别代表着10、5和0数字。
 
Service = All                    监控所有服务 all
 
Service = "-httpd"               不监控的服务前面加 “-” , 如 -httpd ,即不监控 httpd 服务 , 可以写多条
 
mailer = "/usr/sbin/sendmail -t" 发送邮件的方式(可以选sendmail,postfix,Qmail)

 

注意不同版本的Logwatch的参数有所区别,例如如下logwatch-7.3-9与logwatch-7.4.3的对比如下

[[email protected] ~]# sed -n "/^\\s*[^#\\t].*$/p" /usr/share/logwatch/default.conf/logwatch.conf
LogDir = /var/log
TmpDir = /var/cache/logwatch
MailTo = root
MailFrom = Logwatch
Print = No
Range = yesterday
Detail = Low 
Service = All
Service = "-zz-network"     # Prevents execution of zz-network service, which
                            # prints useful network configuration info.
Service = "-zz-sys"         # Prevents execution of zz-sys service, which
                            # prints useful system configuration info.
Service = "-eximstats"      # Prevents execution of eximstats service, which
                            # is a wrapper for the eximstats program.
mailer = "sendmail -t"
 
 
 
[[email protected] ~]# sed -n "/^\\s*[^#\\t].*$/p" /etc/logwatch/conf/logwatch.conf 
LogDir = /var/log
TmpDir = /var/cache/logwatch
Output = stdout
Format = text
Encode = none
MailTo = root
MailFrom = Logwatch
Range = yesterday
Detail = Low
Service = All
Service = "-zz-network"     # Prevents execution of zz-network service, which
                            # prints useful network configuration info.
Service = "-zz-sys"         # Prevents execution of zz-sys service, which
                            # prints useful system configuration info.
Service = "-eximstats"      # Prevents execution of eximstats service, which
                            # is a wrapper for the eximstats program.
mailer = "/usr/sbin/sendmail -t"
[[email protected] ~]# 

技术分享

 

Logwatch 并不是以系统服务形式来跑的 ,而是在/etc/cron.daily下生成了一个脚本/etc/cron.daily/0logwatch ,有些版本是一个软链 。如下所示。 当然你也可以在crontab里面设置自己的作业.如果要使用发送邮件功能,你必须提前进行配置。例如,配置sendmail。

 

logwatch-7.3-9

 

[[email protected] ~]# ls -l /etc/cron.daily/0logwatch
lrwxrwxrwx 1 root root 39 Apr 23  2015 /etc/cron.daily/0logwatch -> /usr/share/logwatch/scripts/logwatch.pl

 

logwatch-7.4.3

[[email protected] tmp]# more  /etc/cron.daily/0logwatch
#!/bin/sh
 
#Set logwatch location
LOGWATCH_SCRIPT="/usr/sbin/logwatch"
#Add options to this line. Most options should be defined in /etc/logwatch/conf/logwatch.conf,
#but some are only for the nightly cronrun such as --output mail and should be set here.
#Other options to consider might be "--format html" or "--encode base64", man logwatch for more details.
OPTIONS="--output mail"
 
#Call logwatch
$LOGWATCH_SCRIPT $OPTIONS
 
exit 0
[[email protected] tmp]# ls -l  /etc/cron.daily/0logwatch
-rwxr-xr-x 1 root root 434 Apr 27 15:09 /etc/cron.daily/0logwatch
[[email protected] tmp]# 

 

Logwatch的用例介绍

 

1: 查看logwatch的帮助信息(注意不同版本间的区别)

[[email protected] log]# logwatch --help
 
Usage: /usr/sbin/logwatch [--detail <level>] [--logfile <name>] [--output <output_type>]
   [--format <format_type>] [--encode <enconding>] [--numeric]
   [--mailto <addr>] [--archives] [--range <range>] [--debug <level>]
   [--filename <filename>] [--help|--usage] [--version] [--service <name>]
   [--hostformat <host_format type>] [--hostlimit <host1,host2>] [--html_wrap <num_characters>]
 
--detail <level>: Report Detail Level - High, Med, Low or any #.
--logfile <name>: *Name of a logfile definition to report on.
--logdir <name>: Name of default directory where logs are stored.
--service <name>: *Name of a service definition to report on.
--output <output type>: Report Output - stdout [default], mail, file.
--format <formatting>: Report Format - text [default], html.
--encode <encoding>: Enconding to use - none [default], base64.
--mailto <addr>: Mail report to <addr>.
--archives: Use archived log files too.
--filename <filename>: Used to specify they filename to save to. --filename <filename> [Forces output to file].
--range <range>: Date range: Yesterday, Today, All, Help
                             where help will describe additional options
--numeric: Display addresses numerically rather than symbolically and numerically
           (saves  a  nameserver address-to-name lookup).
--debug <level>: Debug Level - High, Med, Low or any #.
--hostformat: Host Based Report Options - none [default], split, splitmail.
--hostlimit: Limit report to hostname - host1,host2.
--hostname: overwrites hostname
--html_wrap <num_characters>: Default is 80.
--version: Displays current version.
--help: This message.
--usage: Same as --help.
* = Switch can be specified multiple times...

 

 

2:Logwatch的使用案例:

 

logwatch --service sshd --print

logwatch --detail High --Service All --range All --print

logwatch --detail High --Service All --range All --output stdout

logwatch --detail 10 --range today --service http --service postfix --service zz-disk_space --format html --output file --filename /tmp/logwatch.html

注意上面有些版本不能执行,例如logwatch-7.4.3中就没有参数--print,需要用参数--output

[[email protected] ~]#  logwatch --service sshd --print  
 
 ################### Logwatch 7.3 (03/24/06) #################### 
        Processing Initiated: Mon Apr 24 08:11:00 2017
        Date Range Processed: yesterday
                              ( 2017-Apr-23 )
                              Period is day.
      Detail Level of Output: 10
              Type of Output: unformatted
           Logfiles for Host: xxx.xxx.xxx
  ################################################################## 
 
 --------------------- SSHD Begin ------------------------ 
 
 Users logging in through sshd:
    xxxxx:
       192.168.xxx.xxx (xxxx): 276 times
    oracle:
       192.168.xxx.xxx (xxxxx): 1 time
 
 
 Received disconnect:
    11: The user disconnected the application
       192.168.xxx.xxx : 276 Time(s)
 
 ---------------------- SSHD End ------------------------- 
 
 
 ###################### Logwatch End ######################### 
 
[[email protected] log]# logwatch --detail 10 --range all --service sshd --format text --output file --filename /tmp/logwatch.txt
[[email protected] log]# more /tmp/logwatch.txt 
 
 ################### Logwatch 7.4.3 (04/27/16) #################### 
        Processing Initiated: Thu Apr 27 17:17:42 2017
        Date Range Processed: all
        Detail Level of Output: 10
        Type of Output/Format: file / text
        Logfiles for Host: DB-Server.localdomain
 ################################################################## 
 
 --------------------- SSHD Begin ------------------------ 
 
 Couldn‘t resolve these IPs:
    get253194.gfg1.esquel.com(192.168.103.21): 1 Time(s)
    get253194.gfg1.esquel.com(192.168.103.26): 1 Time(s)
 
 Failed logins from:
    192.168.7.xxx: 1 time
       root/password: 1 time
 
 Users logging in through sshd:
    root:
       192.168.103.15 (xxxxx): 4 times
       192.168.103.21 (xxxxx): 4 times
       192.168.103.22 (xxxxx): 3 times
       192.168.103.26 (xxxxx): 2 times
 
 SFTP subsystem requests: 6 Time(s)
 
 ---------------------- SSHD End ------------------------- 
 
 
 ###################### Logwatch End ######################### 

以上是关于Linux如何安装使用logwatch以便处理日志禁止的主要内容,如果未能解决你的问题,请参考以下文章

centos6.5安装logwatch监控日志

Linux Logwatch的学习总结

logwatch配置笔记

centos7安装Logwatch配合msmtp邮件客户端发送服务器监控分析日志

在Linux上怎么安装和配置DenyHosts工具以便进行自动屏ip

如何查看oracle的日志文件?