我遇到了一个问题。我有2个VM运行实例,我想设置从1个VM转移到另一个VM的日志(让我们将它们标记为客户端和服务器)。 我把一切都搞定了。我的客户端rsyslog包含:
。 @@ 192.168.174.132:515
意味着通过tcp将本地日志传输到端口515上的192.168.174.132。 在服务器端我安装了rsyslog-mysql,我的服务器配置包含:
$ ModLoad imtcp $ InputTCPServerRun 515
我还安装了loganalyzer。 所以,一切都很好,但问题是:我关闭远程服务器并在客户端vm上运行此代码几次:
<?php
openlog("php_script_test", LOG_PID | LOG_PERROR, LOG_LOCAL0);
$access = date("Y/m/d H:i:s");
syslog(LOG_CRIT, "This is to be sent after shutdown: $access");
closelog();
然后我运行远程虚拟机,这些消息不会发送到远程虚拟机。 是否有任何配置选项可以让客户端在本地保存日志并在启动时将它们发送到远程服务器? 我尝试使用$ WorkDirectory选项,但失败了。 我的rsyslog版本是4.6.4,我的操作系统是Debian 6.
谢谢。
答案 0 :(得分:2)
您可以按照此处的说明使用排队系统:http://www.rsyslog.com/doc/queues.html
以下是在磁盘上配置队列的示例。一旦连接可用,它将清理队列。
$ActionQueueType disk
$WorkDirectory /var/spool/rsyslog
$ActionQueueFilename actionRq
$ActionQueueMaxDiskSpace 1m
$ActionQueueSize 4000
$ActionQueueTimeoutEnqueue 0
$ActionResumeRetryCount -1
**确保在rsyslog启动之前已经创建了工作目录