Nis*_*ngh 4 logging tomcat rsyslog nxlog papertrail-app
我有一个应用程序服务器(Ubuntu 14.04),上面运行着 tomcat 服务器。这个相同的应用程序服务器由“ rsyslog ”服务器组成,该服务器被配置为将日志发送到NXlog服务器(在 Ubuntu 14.04 上)。
rsyslog 服务器将其所有日志(包括 tomcat 错误、异常和堆栈跟踪)发送到 syslog 服务器,但问题在于多行日志。当日志消息存储在文件中或在没有任何封装的情况下通过网络转发时,跨越多行的消息中出现的换行符会混淆简单的基于行的解析器,这些解析器将每一行视为一个单独的事件;&因此我的异常日志在新行中被破坏。
我的 rsyslog 版本是:7.4.4
rsyslog.conf 文件如下所示:
#################
#### MODULES ####
#################
$EscapeControlCharactersOnReceive off
$LocalHostName nishant-app
$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog # provides kernel logging support (previously done by rklogd)i
#$ModLoad immark # provides --MARK-- message capability
$ModLoad imfile
$ModLoad omrelp
#$ModLoad omhdfs
# provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514
# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
module(load="imfile" PollingInterval="10")
###########################
#### GLOBAL DIRECTIVES ####
###########################
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# Filter duplicated messages
$RepeatedMsgReduction on
#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog
#
# Where to place spool files
#
$WorkDirectory /var/spool/rsyslog
#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf ## This includes all the conf files which tells rsyslog which logs need to be sent
Run Code Online (Sandbox Code Playgroud)
所以基本上我需要发送 tomcat 堆栈跟踪和异常,这样异常就不会分散在多行中。
任何帮助将不胜感激。
我认为答案取决于您的日志如何在 rsyslog 中结束。如果有一个附加程序而不是将内容发送到系统日志套接字,则由它决定。据我所知,您可以在那里发送多行日志,但是如果附加程序在到达 rsyslog 之前破坏了它们,那么您在那里无能为力。UDP转发也是一样,每个数据包都是一个日志,所以rsyslog只是在它得到它的时候拿它。
如果它通过 TCP 发送,消息的默认分隔符是换行符。尽管 rsyslog 支持八位字节分隔的帧,但这又是发送方要处理的事情。
但是,如果您正在拖尾文件,那么您可以在这里做一些事情。虽然你可能需要最新版本的rsyslog现在的(有Ubuntu的软件包在这里)。有了它,您将获得此用例的两个重要功能:
关键是,对于多行日志,您(或者更确切地说,rsyslog)必须找出另一种分隔消息的方法。使用 imfile,即使在 7.4.4 中,也可以选择使用 ReadMode,默认为 0(换行符是分隔符),但您可以将其设置为 2(如果行以空格/制表符开头,则它属于前一个)。
您可以在此处找到有关 imfile 的所有选项:http ://www.rsyslog.com/doc/master/configuration/modules/imfile.html
| 归档时间: |
|
| 查看次数: |
9136 次 |
| 最近记录: |