Logstash - 将日志拆分为 csv 文件
Logstash - splitting the log into a csv file
我想用logstash通过这些日志中出现的一个常量值来分隔相应的日志,然后在分隔符(“|”)之后将日志分成几块,并放入一个csv文件中 headers.我要查找的日志由常量 (WID2) 识别。我还注意到 GREEDYDATA 提取的消息在大约 85 个字符后被截断
示例日志:
2022-01-02 10:32:30,0000001 | WID2 | 3313141414 |请求 | STEP_1 |好的 |留言
我想从这个日志中创建包含 headers 的 csv 文件:TIMESTAMP、VALUE、MESSAGE_TYPE、STEP、STATUS、MESSAGE。我不想在 csv 文件中保存常量值 (WID2),它只用于在其他文件中查找我的日志。
我写了但是没用:
input {
file {
path => ["path"]
start_position => "beginning"
sincedb_path => "path"
}
}
filter {
grok {
match => {
"message" => "%{GREEDYDATA:SYSLOGMESSAGE}"
}
}
if ([SYSLOGMESSAGE] !~ "WID2"){
drop {}
}
if([SYSLOGMESSAGE] =~ 'WID2") {
csv {
separator => "|"
columns => ["TIMESTAMP", "VALUE", "MESSAGE_TYPE", "STEP", "STATUS", "MESSAGE"]
}
}
}
output{
file {
path => ["path.csv"]
}
}
如果您的日志消息采用这种格式:
2022-01-02 10:32:30,0000001 | WID2 | 3313141414 | Request | STEP_1 | OK | Message
并且您想解析每条包含 WID2
的邮件,以下过滤器将起作用。
filter {
if "WID2" in [message] {
csv {
separator => "|"
columns => ["TIMESTAMP", "[@metadata][wid2]", "VALUE", "MESSAGE_TYPE", "STEP", "STATUS", "MESSAGE"]
}
} else {
drop {}
}
}
if
条件将测试消息中是否存在 WID2
,如果为真,它将使用 csv
过滤器来解析它,因为第二列你的 csv 是值 WID2
而你不想保存它,你可以将它的值存储在字段 [@metadata][wid2]
中,这个元数据字段将不会出现在输出块中。
如果消息字段中不存在字符串 WID2
,则事件将被删除。
我想用logstash通过这些日志中出现的一个常量值来分隔相应的日志,然后在分隔符(“|”)之后将日志分成几块,并放入一个csv文件中 headers.我要查找的日志由常量 (WID2) 识别。我还注意到 GREEDYDATA 提取的消息在大约 85 个字符后被截断
示例日志: 2022-01-02 10:32:30,0000001 | WID2 | 3313141414 |请求 | STEP_1 |好的 |留言
我想从这个日志中创建包含 headers 的 csv 文件:TIMESTAMP、VALUE、MESSAGE_TYPE、STEP、STATUS、MESSAGE。我不想在 csv 文件中保存常量值 (WID2),它只用于在其他文件中查找我的日志。
我写了但是没用:
input {
file {
path => ["path"]
start_position => "beginning"
sincedb_path => "path"
}
}
filter {
grok {
match => {
"message" => "%{GREEDYDATA:SYSLOGMESSAGE}"
}
}
if ([SYSLOGMESSAGE] !~ "WID2"){
drop {}
}
if([SYSLOGMESSAGE] =~ 'WID2") {
csv {
separator => "|"
columns => ["TIMESTAMP", "VALUE", "MESSAGE_TYPE", "STEP", "STATUS", "MESSAGE"]
}
}
}
output{
file {
path => ["path.csv"]
}
}
如果您的日志消息采用这种格式:
2022-01-02 10:32:30,0000001 | WID2 | 3313141414 | Request | STEP_1 | OK | Message
并且您想解析每条包含 WID2
的邮件,以下过滤器将起作用。
filter {
if "WID2" in [message] {
csv {
separator => "|"
columns => ["TIMESTAMP", "[@metadata][wid2]", "VALUE", "MESSAGE_TYPE", "STEP", "STATUS", "MESSAGE"]
}
} else {
drop {}
}
}
if
条件将测试消息中是否存在 WID2
,如果为真,它将使用 csv
过滤器来解析它,因为第二列你的 csv 是值 WID2
而你不想保存它,你可以将它的值存储在字段 [@metadata][wid2]
中,这个元数据字段将不会出现在输出块中。
如果消息字段中不存在字符串 WID2
,则事件将被删除。