美好的一天
我想使用imfile文件输入模块将文本文件导入rsyslog.但是,rsyslog没有像我预期的那样解析文本文件的内容,而且我正在努力寻找关于它是如何完成的文档.为了测试设置,我正在使用imfile读取文本文件,然后使用omfile将日志写入另一个文本文件.
文本文件的内容是"标准"syslog格式的日志:
<PRI>TIMESTAMP HOSTNAME MESSAGE
Run Code Online (Sandbox Code Playgroud)
我要导入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
Run Code Online (Sandbox Code Playgroud)
我在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")
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
如您所见,example_file.txt中的所有内容都放在example_output.log中生成的日志的MSG字段中,而不是使用字段信息并将它们放在正确的位置,例如TIMESTAMP,HOSTNAME,TAG,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中的syslog解析(http://www.rsyslog.com/doc/syslog_parsing.html),
- 甚至是BSD Syslog协议RFC3164的文档(http://www.ietf.org/rfc/rfc3164.txt)
小智 2
您可以使用模板从消息中提取字段。这是一个示例模板。
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")
}
Run Code Online (Sandbox Code Playgroud)
您可以在输出中使用此模板,如下所示。
action(type = "omfile" file = "/home/.../Desktop/example_output.log" template="structured-format")
Run Code Online (Sandbox Code Playgroud)
输出如下所示:
{"pri":"<34>", "hostname":"hostname1", "msg":"<34>Feb 15 12:12:12 hostname1 tag1: message1"}
Run Code Online (Sandbox Code Playgroud)
也就是说,我还没有弄清楚如何从 msg 中排除已解析的字段,而只将剩余的字段添加到 msg 字段中。希望这些指示对您有所帮助。
| 归档时间: |
|
| 查看次数: |
1512 次 |
| 最近记录: |