Syslog-NG:可以禁用 "keep_hostname" 但启用特定过滤器?

Syslog-NG: Possible to disable "keep_hostname" but enable for a specific filter?

想知道这是否可能。我目前面临的情况是,我有一个遗留的 NG 系统,其中集成了许多源。我们正在努力慢慢过渡到这个特定实例,但要做到这一点,我需要确保发出的消息保留其源主机。

不幸的是,在构建这个遗留环境时,keep_hostname 选项设置为 false,这意味着工程师专注于源日志特定 HOST 提取。

在我努力将数据传输到新系统时,我需要数据保留其源主机名。理想情况下,只需将 keep_hostname 翻转为 yes,但现在风险太大,因为它可能会影响整个系统中数据的解析方式。

我的问题是,虽然 keep_hostname 是全局禁用的,但有没有办法在 filterdestination 内启用它?

使用全局禁用的 keep-hostname() 选项执行此操作是不可能的,因为原始主机信息已丢失。

当使用 keep-hostname(no) 时,可以启用名为“store-raw-message”的功能,它将整个传入消息存储在 $RAWMSG 宏中。原始邮件肯定包含原始主机名,但是您可以从整个邮件中提取主机名。


My ask is, while keep_hostname is globally disabled, is there a way that I can enable it within a filter or destination?

你可以反过来实现类似的东西: 将 keep-hostname() 设置为 yes 可保持原始主机名不变,但您将拥有 2 个不同的宏:

  • $HOST 包含原始主机名
  • $HOST_FROM 包含“源的”主机名

应用用 $HOST_FROM 覆盖 $HOST 的重写规则可以添加到您想要保留旧行为的路径。