AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 785776
Accepted
Buzut
Buzut
Asked: 2016-06-24 01:57:09 +0800 CST2016-06-24 01:57:09 +0800 CST 2016-06-24 01:57:09 +0800 CST

GELF 中的 Rsyslog 输出

  • 772

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

我找到了一些关于在 rsyslog 中输出 gelf的文档,但我不确定如何继续。

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

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
}
logging syslog rsyslog graylog
  • 2 2 个回答
  • 3549 Views

2 个回答

  • Voted
  1. Best Answer
    oboukili
    2016-06-30T21:39:54+08:002016-06-30T21:39:54+08:00

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

    一句忠告,我肯定会建议检查 rsyslog 过滤器规则,因为消息处理将继续您的示例(检查波浪字符)。

    • 4
  2. Rahim Khoja
    2020-04-10T10:35:47+08:002020-04-10T10:35:47+08:00

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

    使用 TCP 时,Graylog 需要 Nullbyte 作为消息分隔符。因此,要使用 TCP,您需要通过 TCP_FrameDelimiter 选项更改分隔符。

    action(type="omfwd" target="graylogserver" port="12201" protocol="tcp" template="gelf" TCP_FrameDelimiter="0" KeepAlive="on")
    
    • 0

相关问题

  • IIS 6 - 仅记录某些目录

  • 什么是好的日志查看器,例如 apache、postfix、syslog?

  • 如何提供可搜索的 IRC 日志?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

  • Tomcat 6 HTTP 日志滚动和清除

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve