首页 > 解决方案 > 如何删除转发时间戳?OSE 版本 Syslog-NG

问题描述

按照答案

我尝试在 Syslog-NG 3.17 OSE 版本中进行更改,配置如下,

@version: 3.17

@include "scl.conf"

options {
};

source s_network_to_forward {
        network(
                flags(no-parse)
                transport(udp)
                port(514)
                keep-timestamp(no)
                persist-name("somekey")
        );
};


template forward_template {
        template($RAWMSG);
        template_escape(no);
};

destination forward_to_syslog2{
        network("1.2.3.4" transport(udp)  port(514) template(forward_template));
};

log {
        source(s_network_to_forward);
        destination(forward_to_syslog2);
};

要转发的消息:Oct 31 16:44:29.071 UTC: %SYS-3-DUP_TIMER: Same tty2 in linewatch_timers, type 2

上面的配置能够转发消息,如下所示(额外的标头以粗体显示):

10 月 31 日 12:44:29 XXXX 5277586: Oct 31 16:44:29.071 UTC: %SYS-3-DUP_TIMER: Same tty2 in linewatch_timers, type 2

其中 XXXX 显示实际发件人地址(如预期)、进程 ID(5277586)和转发时间戳(Oct 31 12:44:29

只希望转发Oct 31 16:44:29.071 UTC: X.X.X.X 5277586: %SYS-3-DUP_TIMER: Same tty2 in linewatch_timers, type 2

通过删除转发时间戳


如何转发所需的格式?

标签: linuxloggingsyslogsyslog-ng

解决方案


如果您想在发送消息时转发消息,$RAWMESSAGE宏是个好主意,但默认情况下它是空的(因为它使消息内存占用更大)。

flags(...,store-raw-message)您必须在源配置中添加一个额外的标志。(参见相关文档

您的配置看起来像这样:

@version: 3.17

@include "scl.conf"

options {
};

source s_network_to_forward {
        network(
                flags(no-parse,store-raw-message)
                transport(udp)
                port(514)
                keep-timestamp(no)
                persist-name("somekey")
        );
};


template forward_template {
        template("$RAWMSG");
        template_escape(no);
};

destination forward_to_syslog2{
        network("1.2.3.4" transport(udp)  port(514) template(forward_template));
};

log {
        source(s_network_to_forward);
        destination(forward_to_syslog2);
};

推荐阅读