1

我遇到了一个问题。我有 2 个正在运行的虚拟机实例,我想设置从 1 个虚拟机传输到另一个虚拟机的日志(让我们将它们标记为客户端和服务器)。我设置了一切。我的客户端 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。

谢谢你。

4

1 回答 1

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 启动之前已经创建了工作目录

于 2013-08-20T07:37:17.023 回答