通过 HTTP 转发 Rsyslog

Rsyslog forwarding over HTTP

我希望 rsyslog 通过 HTTP 将日志消息转发到将处理它们的服务。

我没有看到 Rsyslog 的确切 http-forwarding 模块,我不想在另一个端口上创建另一个侦听器来处理传入的 TCP 连接,因为TCP 输出模块需要它。

是否可以通过 HTTP 处理程序处理 Rsyslog 消息或有哪些替代方法?

有一个名为 omhttp 的新输出模块。我也在研究它,但很难找到文档。

https://github.com/rsyslog/rsyslog/issues/3024

编辑:更新的文档在这里 https://www.rsyslog.com/doc/v8-stable/configuration/modules/omhttp.html#message-batching

从 rsyslog 版本 8.2202 开始,有 omhttp 模块。

这是您需要在 /etc/rsyslog.conf:

中实现的示例
# include the omhttp module
module(load="omhttp")

# template for each indivdual message, not the format of the resulting batch
template(name="tpl_omhttp_forwarding" type="string" string="%msg%")

# action to send ALL log (files) messages via http
*.* { 
    action(
        type="omhttp"
        server="192.1.1.1"
        serverport="443"
        template="tpl_omhttp_forwarding"

        batch="on"
        batch.format="jsonarray"
        batch.maxsize="10"

        action.resumeRetryCount="-1"
    )
}

omhttp的所有动作参数,你可以找到here

注意:

根据您使用的 OS,您可能需要自己构建它,或者使用存储库 here。 对于某些平台,由于缺少或太旧的依赖项,没有 omhttp 包。