参考文章:
https://segmentfault.com/a/1190000002537665
http://hxl2009.blog.51cto.com/779549/703971
logwatch是perl语言写的。能够对Linux 的日志文件进行分析,并自动发送mail给相关处理人员。
Logwatch的mail功能是借助宿主系统自带的mail server 发邮件的,所以系统需安装mail server , 如sendmail,postfix,Qmail等
环境:CentOS6.7
【说明:在CentOS7上测试时候,接收到的邮件内容自动变成了附件形式,按照网上的方法http://www.shangxueba.com/jingyan/1642876.html也没解决掉】
安装配置logwatch
yum install logwatch安装即可。
主要释放的文件如下:
# cd /etc/logwatch/conf/
# cp /usr/share/logwatch/default.conf/logwatch.conflogwatch.conf
# vim logwatch.conf 内容如下:
LogDir = /var/log # logwatch 会去 /var/log 找你定义的 log 文件 TmpDir = /var/cache/logwatch MailTo = xxx@126.com # 多收件人直接用逗号隔开 MailFrom = sender@sina.com Print = No #可选项, Yes 会被打印到系统标准输出, 并且不会以邮件的形式发送到 MailTo设 # 定的邮箱里 , No 选项则会发到邮箱中 Range = Yesterday # 处理什么时候的日志,可选All、Yesterday、Today Detail = Low # 日志详细度, 可选项 Low , Med , High , 或是 0-10数字 Output = mail #可以选择mail, html or unformatted Service = All # 监控所有服务 all Service = "-exim" # 不监控的服务前面加-, 如 -exim, 即不监控exim 服务,可以写多条 mailer = "mailx -t" # 我服务器上用的是mailx,所有默认的sendmail -t 被我改掉了。 DailyReport = No
为了发送邮件,还得安装邮件发送客户端,如下
yum install mailx
vim /etc/mail.rc 在最后添加个能发送邮件的账号
set from=xxxx@sina.com smtp=smtp.sina.com setsmtp-auth-user=xxxx@sina.com smtp-auth-password=xxxx set smtp-auth=login
添加后,我们执行/usr/bin/perl/usr/share/logwatch/scripts/logwatch.pl 发送邮件测试。
邮件发送没问题的话,可以添加一条计划任务让系统自动发每天早上发邮件。
echo ‘30 6 * * * /usr/bin/perl/usr/share/logwatch/scripts/logwatch.pl > /dev/null 2>&1‘ >>/var/spool/cron/root
此外,默认在安装logwatch的时候,在/etc/cron.daily/会自动生成个0logwatch文件。
我们可以删掉这个/etc/cron.daily/0logwatch文件,反正上面操作中也配置了cron计划任务。
其它:
Logwatch 也可以在命令行上使用:
logwatch -h 即可列出全部的参数
Usage: /usr/sbin/logwatch [--detail<level>] [--logfile <name>]
[--print] [--mailto <addr>] [--archives] [--range <range>][--debug <level>]
[--save <filename>] [--help] [--version] [--service <name>]
[--numeric] [--output <output_type>]
[--splithosts] [--multiemail] [--no-oldfiles-log]
--detail <level>: 报告的详细度,可选项: High, Med, Low , 数字 0-10 --logfile <name>: 日志文件名 --logdir <name>: 日志路径 --service <name>: 服务名称 --print: 结果输出到屏幕 --mailto <addr>: 结果通过邮件发送 --archives: 以归档格式发送 --save <filename>: 结果保存到本地文件中 --range <range>: 搜集的日志时间,可以为: Yesterday,Today,All,接参数help还可以看到更详细的参数 --numeric: 不进行DNS反解析,只显示数字格式的IP --debug <level>: Debug级别,High, Med, Low or any #. --splithosts: 为每个主机创建一份报告 --multiemail: 将报告发送给多个邮件地址,没有使用--splithosts参数时,这个选项自动忽略 --output <output type>: 报告的输出格式,可以是mail、html、unformatted#. --encode: 使用base64编码 on output mail. --no-oldfiles-log: Suppress the logwatch log,which informs about the old files in logwatchtmpdir. --version: Displays current version.
例如:
logwatch --detail High --Service All --rangeAll --print # 显示所有日志 logwatch --service cron --detail High # 查看 sshd 日志
【故障排除】
如果没有收到 Logwatch日志报告邮件 , 请检察本地 sendmail 服务是否正常
# logwatch --range today 直接将结果发送邮件 # logwatch --range today --print 当天不发送邮件 # logwatch --range today --print --mailto xxx@sina.com 当天并且发送邮件 # /usr/share/logwatch/scripts/logwatch.pl --print # /usr/share/logwatch/scripts/logwatch.pl--mailto xxx@sina.com
摘录:定制自己要监控的日志
用一个简单的例子介绍自定义logwatch的配置方法。
首先创建logwatch日志文件组
/etc/logwatch/conf/logfiles/test.conf:
LogFile = /path/to/your/logfile
LogFile = /path/to/your/second/logfile
然后创建logwatch服务配置文件
/etc/logwatch/conf/services/test.conf:
Title = testtitle # 日志文件里的标题
LogFile = test # logwatch日志文件组的名字,通常是对应的配置文件的文件名部分
创建logwatch服务过滤器脚本
/etc/logwatch/scripts/services/test:
#!/bin/bash
grep -i ERROR
上面的脚本会从日志文件里过滤出包含ERROR的行。最后,为新建的脚本添加执行权限:
全选复制放进笔记
chmod+x /etc/logwatch/scripts/services/test
原文地址:http://lee90.blog.51cto.com/10414478/1790880