首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GELF中的Rsyslog输出

GELF中的Rsyslog输出
EN

Server Fault用户
提问于 2016-06-23 09:57:09
回答 2查看 3.9K关注 0票数 0

rsyslog很强大,但是它的文档并不那么明确。我不知道如何解析日志文件并以GELF格式将其直接路由到Graylog。

我已经找到了一些关于在rsyslog中输出g亲自的文档,但我不知道如何继续。

到目前为止,它试图将下面的conf放在/etc/rsyslog.d/01-access.conf中,但这似乎不适用于…

代码语言:javascript
复制
template(name="gelf" type="list") {
    constant(value="{\"version\":\"1.1\",")
    constant(value="\"host\":\"")
    property(name="hostname")
    constant(value="\",\"short_message\":\"")
    property(name="msg" format="json")
    constant(value="\",\"timestamp\":\"")
    property(name="timegenerated" dateformat="unixtimestamp")
    constant(value="\",\"level\":\"")
    property(name="syslogseverity")
    constant(value="\"}")
}

input(type="imfile"
      File="/var/log/apache2/access.log"
      Tag="apache-access"
)

if $programname == 'apache-access' then {
    action(
        type="omfwd"
        Target="GRAYLOG-IP"
        Port="12201"
        Protocol="tcp"
        template="gelf"
    )
    stop
}
EN

回答 2

Server Fault用户

回答已采纳

发布于 2016-06-30 05:39:54

您会遇到此问题,因为通过tcp发送无法使用rsyslog,这是因为G精灵的空字节消息分隔符规范。在官方的rsyslog文档中:(http://www.rsyslog.com/doc/v8-stable/tutorials/gelf_forwarding.html)“请注意,上面的情况只适用于UDP传输。当使用TCP时,Graylog需要一个Null字节作为消息分隔符。这在rsyslog中目前是不可能的。”但是,您的示例应该通过udp工作。

一句忠告,我肯定会建议签出rsyslog过滤规则,因为您的示例将继续消息处理(请查看倾斜字符)。

票数 4
EN

Server Fault用户

发布于 2020-04-09 18:35:47

来自:https://www.rsyslog.com/doc/master/tutorials/gelf_forwarding.html

在使用TCP时,Graylog需要一个Null字节作为消息分隔符。因此,要使用TCP,需要通过TCP_FrameDelimiter选项更改分隔符。

代码语言:javascript
复制
action(type="omfwd" target="graylogserver" port="12201" protocol="tcp" template="gelf" TCP_FrameDelimiter="0" KeepAlive="on")
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/785776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档