gpt4 book ai didi

rsyslog - 如何使用 rsyslog 和 imfile 正确解析文本文件

转载 作者:行者123 更新时间:2023-12-03 14:50:17 27 4
gpt4 key购买 nike

再会

我想使用 imfile 文件输入模块将文本文件导入 rsyslog。但是,rsyslog 并没有像我预期的那样解析文本文件的内容,我正在努力寻找关于它是如何完成的文档。为了测试设置,我使用 imfile 从文本文件中读取,然后使用 omfile 将日志写入另一个文本文件。

文本文件的内容是“标准”系统日志格式的日志:

<PRI>TIMESTAMP HOSTNAME MESSAGE

我要导入 Rsyslog 的示例文本文件 (example_file.txt.) 如下所示:
<34>Feb 15 12:12:12 hostname1 tag1: message1
<34>Feb 16 12:12:12 hostname2 tag2: message2
<34>Feb 17 12:12:12 hostname3 tag3: message3

我在 rsyslog-d 中的 rsyslog 配置文件如下所示:
module(load = "imfile")
input(type = "imfile" file = "/home/.../Desktop/example_file.txt" Tag = "example")
action(type = "omfile" file = "/home/.../Desktop/example_output.log")

example_output.log 中的结果输出如下所示:
Feb 15 17:10:21 username example <34>Feb 15 12:12:12 hostname1 tag1: message1
Feb 15 17:10:21 username example <34>Feb 16 12:12:12 hostname1 tag2: message2
Feb 15 17:10:21 username example <34>Feb 17 12:12:12 hostname1 tag3: message3

如您所见,example_file.txt 中的所有内容都放置在 example_output.log 中生成日志的 MSG 字段中,而不是使用字段信息并将它们放置在正确的位置,例如时间戳、主机名、标签、消息。我在 .txt 文件中尝试过不同的格式,甚至将 .txt 文件保存为 .log 文件,但 rsyslog 每次都将整个内容放在 MSG 字段中。

那我的问题:

如何告诉 rsyslog 和 imfile 我的 .txt 内容实际上是日志并正确解析它们?

考虑到:
  • 我正在使用 Linux v4.4.0-ubi4-amd64 (UbiLinux)
  • 开发 Up-Board
  • 我正在使用 rsyslog8.24(最新稳定版本)
  • 我已经通读了:

    -Rsyslog 官方文档,

    -Imfile 官方文档,

    -Rainer Gerhards 在 rsyslog (http://www.rsyslog.com/doc/syslog_parsing.html) 中的 syslog 解析,

    - 甚至是 BSD Syslog 协议(protocol) RFC3164 ( http://www.ietf.org/rfc/rfc3164.txt )
  • 的文档

    最佳答案

    您可以使用templates从消息中提取字段。这是一个示例模板。

    template(name="structured-format" type="list") {
    constant(value="{")
    property(outname="pri" name="msg" field.number="1" field.delimiter="32" format="jsonf")
    constant(value=", ")
    property(outname="hostname" name="msg" field.number="4" field.delimiter="32" format="jsonf")
    constant(value=", ")
    property(name="msg" format="jsonf")
    constant(value="} \n")
    }

    您可以像这样在输出中使用此模板。
    action(type = "omfile" file = "/home/.../Desktop/example_output.log" template="structured-format") 

    输出如下所示:
    {"pri":"<34>", "hostname":"hostname1", "msg":"<34>Feb 15 12:12:12 hostname1 tag1: message1"}

    也就是说,我还没有弄清楚如何从 msg 中排除已解析的字段,只将剩余的字段添加到 msg 字段中。希望您发现这些指针对您有所帮助。

    关于rsyslog - 如何使用 rsyslog 和 imfile 正确解析文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42253635/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com