大家在做分布式web系统的时候,比如那么多个tomcat,每天都会产生很多的日志(虽然已经按小时进行日志拆分了,但日志内容还是很大,vim查日志的时候很慢),而且那么多个tomcat,每个tomcat都要去查询,这样日志查询会很麻烦,效率很低,想请教大家是如何处理的呢?我赶脚这是个系统设计问题,不知道大家是用的什么架构和组件来解决这样的问题的?
tail -f catalina.out 【单机简单万能好使,如果要特定条件直接加|grep **即可】
搜索指定日期日志文件:
sed -n '/^起始日期/,/^结束日期/p' 日志文件 > 新文件(输出文件)
例如:查询2018-02-15这天的所有日志内容:
sed -n '/^2018-02-15/,/^2018-02-16/p' catalina.out > catalina_20180215.out
前提是catalina.out日志中的每行都是以日期格式开头的!
二、Tomcat日志配置远程Syslog(现在升级是Rsyslog)采集
第一步:初始化日志采集环境
先确保系统中的/var/spool/rsyslog 目录已存在:
mkdir -v /var/spool/rsyslog
if [ "$(grep Ubuntu /etc/issue)" != "" ]; then
chown -R syslog:adm /var/spool/rsyslog
fi
第二步:创建Tomcat日志文件采集配置
新建Rsyslog的子配置文件,他通常在/etc/rsyslog.d下,需要/etc/rsyslog.conf去包含这个目录下的子配置文件:
vim /etc/rsyslog.d/tomcat-biglog.conf
复制以下内容到tomcat-biglog.conf,注意注释部分的修改:
$ModLoad imfile
$InputFilePollInterval 10
$WorkDirectory /var/spool/rsyslog
$PrivDropToGroup adm
## 指定日志格式模板:
$template BiglogFormatTomcat,"%msg%\n"
## Tomcat的catalina.log路径,根据实际情况修改:
$InputFileName /var/log/tomcat6/catalina.log
$InputFileTag catalina-log
$InputFileStateFile stat-catalina-log
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Tomcat的catalina.out路径,根据实际情况修改:
$InputFileName /var/log/tomcat6/catalina.out
$InputFileTag catalina-out
$InputFileStateFile stat-catalina-out
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Tomcat的host-manager.log路径,根据实际情况修改:
$InputFileName /var/log/tomcat6/host-manager.log
$InputFileTag host-manager
$InputFileStateFile stat-host-manager
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Tomcat的initd.log路径,根据实际情况修改:
$InputFileName /var/log/tomcat6/initd.log
$InputFileTag initd
$InputFileStateFile stat-initd
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Tomcat的localhost.log路径,根据实际情况修改:
$InputFileName /var/log/tomcat6/localhost.log
$InputFileTag localhost-log
$InputFileStateFile stat-localhost-log
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Tomcat的manager.log路径,根据实际情况修改:
$InputFileName /var/log/tomcat6/manager.log
$InputFileTag manager
$InputFileStateFile stat-manager
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## 注意syslog日志服务器接收地址,根据实际情况修改:
if $programname == 'catalina-log' then @10.x.x.x:514;BiglogFormatTomcat
if $programname == 'catalina-log' then ~
if $programname == 'catalina-out' then @10.x.x.x:514;BiglogFormatTomcat
if