如何在 Centos 中将第三方日志重定向到日志服务器

如何在 Centos 中将第三方日志重定向到日志服务器

我想设置一个简单的日志服务器来接受来自所有客户端的日志。我说的不是标准系统日志,例如 /var/log/mail、message、boot 等。我想重定向或发送应用程序日志,它们可能根本不使用 syslog 守护程序来记录其消息。

例如 /appdir/log/error.log。

我在网上看到了很多帖子;大多数都建议使用 rsyslog 或 syslog-ng。到目前为止,我已经能够重定向标准系统日志,而不是应用程序日志。我使用的是 centos 5/6 环境。

答案1

我看到过针对这一问题有两种主要方法。

首先,许多应用程序都能够本机写入 syslog 主机。这是最好的方法。在其他情况下,我将使用基本脚本 - 如下所示的脚本即可。

sudo tail /my/app/log | nc -w0 -u 192.168.1.1 514

编辑 - 如果您在生成日志的系统上运行 syslog-ng,确实有一种方法可以在 syslog-ng 中处理此问题。根据需要替换命名约定和目标。rsyslog 也有类似的东西,但它更笨重(恕我直言)。

source s_trbdk3 {
   file("/var/log/trbdk3.log" flags(no-parse) program_override("trbdk3")  );
};
log{
    source(s_trbdk3);
    destination( d_mesg );
 };

答案2

rsyslog 的imfile输入模块可以:

提供将任何标准文本文件转换为系统日志消息的功能。标准文本文件是由可打印字符组成的文件,行由 LF 分隔。

你可以阅读官方文档了解更多信息。

我从未尝试过,而且它可能不是很有效,但听起来它可以完成这项工作。

syslog-ng 似乎能够用其file()源极驱动器这个例子建议像这样的来源声明:

source s_all {  
    file("/path/to/your/file" follow_freq(1) flags(no-parse)); 
};  

相关内容