我被指派在 Linux 设备上配置 syslog-ng,使其以某种方式运行。我对使用 syslog-ng 还很陌生,所以请在回复时考虑到这一点。
以下语句解释了配置的先决条件:
- 发送数据到指定IP(这里无法显示)
- 如果无法访问上述 IP 的设备,则缓冲到内存
- 当内存满了,缓冲到文件
- 当文件已满时,创建一个新文件,一旦创建了 5 个文件,就开始覆盖第一个文件(就像循环过程一样)
我需要的帮助是了解如何配置 syslog-ng 来执行内存和文件先决条件。
任何帮助深表感谢!
答案1
所有这些都应该在 syslog-ng.conf 文件中配置。您需要单独配置您的源。首先您需要本地日志:
destination i_assume_you_already_have_this {
file("/var/log/whatever");
};
您想使用目标块发送到远程服务器:
destination a_name {
syslog("10.1.2.3" transport("tcp"));
};
以及将本地日志发送到此目的地的相关条目:
log {
source(i_assume_you_already_have_this); destination(a_name);
};
通过在远程目标块中添加类似这样的内容来启用磁盘缓冲+内存缓冲:
disk-buffer(
mem-buf-length(<size in bytes>)
disk-buf-size(<size in bytes>)
reliable(no)
)
默认情况下,syslog-ng 不支持基于大小的日志轮换。您需要使用 logrotate 和 postrotate 来重新加载 syslog-ng。您需要在 logrotate 配置中添加类似以下内容:
/var/log/whatever {
rotate 5
size <some size>
postrotate
/etc/init.d/syslog-ng reload >/dev/null
endscript
}
您可以在手册中找到很多此类信息,网址为:https://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-edition/3.16/administration-guide