在我的standalone.xml,我有这样的syslog-handler配置:
<syslog-handler name="SYSLOG" enabled="true">
<level name="INFO"/>
<hostname value="i-XXXXXXX"/>
<formatter><syslog-format syslog-type="RFC3164"/></formatter>
</syslog-handler>
...
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="SYSLOG"/>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
Run Code Online (Sandbox Code Playgroud)
然而,没有输出传送到/var/log/syslog. 如果我用 启动 jboss standalone.sh | logger,我会在那里看到输出,所以我认为我的 rsyslogd 设置/工作合理(一个股票的 Ubuntu 安装,FWIW)。
我正在尝试设置我的 rsyslog 以将 /opt/appname/logs 下的应用程序生成的日志发送到远程 syslog 服务器。我已经将 rsyslog 配置为发送操作系统级别的日志,但想看看它是否也可以发送应用程序的日志。我不确定 IncludeConfig 指令是否在寻找另一个 *.conf 文件时起作用。
在 /etc/rsyslog.d/ 的文件中,我有以下内容:
local3.* /var/log/mylog.log
Run Code Online (Sandbox Code Playgroud)
当我登录到该设施时,记录的时间戳如下所示:
Apr 27 21:12:20 hostname msg
Run Code Online (Sandbox Code Playgroud)
我如何设置东西,使它们看起来像这样?
2014-04-27T21:12:20 hostname msg
Run Code Online (Sandbox Code Playgroud) 我是 Linux 和 rsyslog 的新手。我已经使用日志文件很多年了,但我从来没有设置过。在这一点上,我有一些概念证明设备指向我的 Debain Linux 服务器。我将系统日志消息传入并写入单个文件:/var/log/prd/fwlog 我只关心 3 种设备类型 - 交换机、路由器和防火墙。(所有思科)我的 rsyslog.conf 相当简单,我只修改了基本配置,注释掉了我不喜欢/不需要的东西?
剪掉了注释掉的东西。
$ModLoad immark # provides --MARK-- message capability
$ModLoad imudp
$UDPServerRun 514
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$WorkDirectory /var/spool/rsyslog
$IncludeConfig /etc/rsyslog.d/*.conf
*.* /var/log/prd/fwlog
Run Code Online (Sandbox Code Playgroud)
最后我的问题!
我想将日志中的路由器和交换机旋转和分离,日志中的日期标记为“rslog-YYYY-MM-DD”,防火墙也转换为日志中的日期标记为“fwlog-YYYY-MM-DD”
我想在 48 小时后压缩(gzip?)日志。
我需要在我的配置中添加什么?
我想我将目录和文件添加到 /etc/logrotate.d/rsyslog 中的 rsyslog
/var/log/syslog
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
/var/log/prd/fwlog*
/var/log/prd/rslog*
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress …Run Code Online (Sandbox Code Playgroud) 尝试登录到中央 syslog 服务器,或者直接使用 Apache 的 ErrorLog 管道到记录器,或者让 syslog 转发,但没有任何工作,并且错误对我来说没有意义。我可以让自定义日志工作,但不能让 ErrorLog 工作。在 Ubuntu 14.04 和 rsyslogd 7.4.4 上使用 Apache/2.4.7。
在我的 vhost 中配置(记录器选项后有和没有空间没有区别):
LogLevel warn
ErrorLog "|/usr/bin/tee -a /var/log/apache2/error.log | /usr/bin/logger -tapache_err -plocal1.error"
CustomLog "|/usr/bin/logger -p local4.warning -t apache" combined
Run Code Online (Sandbox Code Playgroud)
然后得到这个错误:
/usr/bin/tee: invalid option -- 't'
Run Code Online (Sandbox Code Playgroud)
也试过(有和没有双引号):
ErrorLog "|syslog:local1"
Run Code Online (Sandbox Code Playgroud)
但后来得到:
(2)No such file or directory: AH00089: Couldn't start ErrorLog process 'syslog:local1'.
AH00015: Unable to open logs
Run Code Online (Sandbox Code Playgroud)
甚至尝试过:
ErrorLog "| /usr/bin/tee -a /var/log/apache2/error.log | nc -u -j xxx.xxx.xxx.xxx 514"
Run Code Online (Sandbox Code Playgroud)
但随后 tee 仍在抱怨:
/usr/bin/tee: …Run Code Online (Sandbox Code Playgroud) 我刚刚在我的 ubuntu 服务器上安装了 postfix,并试图调试为什么没有发送外发邮件。这让我注意到 /var/log/mail.log 文件丢失了。就此而言,我的 /var/log 中没有名为 mail* 的内容。我尝试了以下方法无济于事:
sudo apt-get remove rsyslog / sudo apt-get install rsyslog运行postconf syslog_facility返回syslog_facility = mail
还有其他想法吗?
我有以下 rsyslog.conf:
$PreserveFQDN on
# rsyslog v5 configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html
#### MODULES ####
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # provides kernel logging support (previously done by rklogd)
#$ModLoad immark # provides --MARK-- message capability
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
#### GLOBAL DIRECTIVES ####
# Use …Run Code Online (Sandbox Code Playgroud) 我习惯于使用 rsyslog 将我的日志从服务器发送到远程 Logstash,配置文件大致如下(通常更具体,以防止发送太多日志):
*.* @192.168.5.5:5000
Run Code Online (Sandbox Code Playgroud)
我现在开始在没有运行 syslog 而是使用 journald 的服务器上工作。是否有与 Syslog 类似的使用 journald 将日志发送到 Logstash 的方法,还是需要更多工作?我在网上找不到很多关于 Logstash 和 journald 使用的信息。
所以..我已经安装了 Logstash,而不是使用 logstash 托运人(因为它需要 JVM 并且通常很大),我使用的是具有以下配置的 rsyslogd。
# Use traditional timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
# Provides kernel logging support (previously done by rklogd)
$ModLoad imklog
# Provides support for local system logging (e.g. via logger command)
$ModLoad imuxsock
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none;local6.none /var/log/messages
# The authpriv file …Run Code Online (Sandbox Code Playgroud) 我已经配置了 rsyslog (CentOS 6.3) 添加-c 0 -r选项和行
local2.* /var/log/haproxy.log
Run Code Online (Sandbox Code Playgroud)
并重新启动,rsyslog但发生的一切都是haproxy.log创建。它永远不会被写入。
不太确定如何解决这个问题。
下面是我的haproxy.cfg文件。闲来无事被配置为使用local2根据grepping它rsyslog.conf。我的 haproxy 配置基本上是默认配置,只是尝试先让日志记录工作。