rsyslog:如何在imfile中分配属性?

rsyslog:如何在imfile中分配属性?

我将 rsyslog 配置为在 UDP/514 上侦听来自环境中其他设备的系统日志,但我有某些日志无法通过正常的 UDP/TCP 系统日志发送,唯一的方法是在以下情况下发送实际的日志文件:它使用 SCP 进行轮换。

我已经将所有 rsyslog 配置为按 UDP 连接的预期工作,但现在我试图弄清楚如何让 rsyslog 处理使用 SCP 复制的日志文件,并将它们包含在通过 syslog 端口接收到的文件中。

我已设置服务器将文件复制到临时位置/scp_tmp/[source_ip_address]/syslog.log,并且我已阅读有关 imfile 的文档,并且我确信如何让 rsyslog 读取文件并将其输出到预期文件,但存在的问题是我需要设置属性fromhost-ip[source_ip_address]使我现有的模板能够正常工作。

我知道如何从 Bash 中的路径中提取此属性/值,但是有没有办法在 rsyslog 中执行此操作? rsyslog.conf 是否允许命令替换?

笔记:

  • 我遇到此问题的原因是服务器生成的日志不包含主机名,并且格式无法更改,因为它们来自配置灵活性有限的软件。
  • 运行 rsyslogd 8.2004.0
  • 运行 RHEL 6.10

答案1

您无法更改标准属性,例如fromhost-ip.但是,您可以将局部变量设置为字符串并将其用作属性。例如

template(name="abc" type="string" string="note %$.myvar%")
set $.myvar = "this-value";

此外,imfile 允许您检索文件名元数据如果您使用以下选项addMetadata

input(type="imfile"
      File="/my/logs/*.log"
      addMetadata="on")

文件名放在变量中$!metadata!filename

因此,如果您将配置更改为默认设置

set $.myvar = $fromhost-ip;

并仅覆盖它imfile,然后您可以在规则中使用if $.myvar而不是,并且对所有输入都有通用规则。if $fromhost-ip

相关内容