[英]Logstash - splitting the log into a csv file
我想使用logstash通過這些日志中出現的常量值來分隔適當的日志,然后將日志在分隔符(“|”)之后分成幾部分,並將其放入帶有標題的csv文件中。 我要查找的日志由常量 (WID2) 識別。 我還注意到 GREEDYDATA 提取的消息在大約 85 個字符后被截斷
示例日志:2022-01-02 10:32:30,0000001 | WID2 | 3313141414 | 請求 | STEP_1 | 好的 | 信息
我想從這個日志中創建帶有標題的 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]
中,此元數據字段將不會出現在 output 塊中。
如果消息字段中不存在字符串WID2
,則刪除該事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.