上次說,閑着無聊,想把華為USG防火牆的日志收集到ES中進行大屏展示。。已經忙活了兩周了,心态崩潰了無數次。。我也不知道這款産品,到底有多少種格式的日志。。先給大家看我的比對記錄。
grok {
match => [
"message", "(?<timestamp>%{MONTH}\s+%{MONTHDAY}\s+%{YEAR}\s+%{TIME})%{SPACE}*%{HOSTNAME:fwname}\s+%%(?<log_ver>\d{2})(?<modulename>\w+)\/%{WORD:severity}\/%{WORD:brief}\(%{WORD:log_type}\)\[%{WORD:num}\]\:\[%{WORD:description}\]%{GREEDYDATA:info}",
"message", "(?<timestamp>%{MONTH}\s+%{MONTHDAY}\s+%{YEAR}\s+%{TIME})%{SPACE}*%{HOSTNAME:fwname}\s+%%(?<log_ver>\d{2})(?<modulename>\w+)\/%{WORD:severity}\/%{WORD:brief}\(%{WORD:log_type}\)\[%{WORD:num}\]:(?<description>(.*))\s+\(%{GREEDYDATA:info}\)" ,
"message", "(?<timestamp>%{MONTH}\s+%{MONTHDAY}\s+%{YEAR}\s+%{TIME})%{SPACE}*%{HOSTNAME:fwname}\s+%%(?<log_ver>\d{2})(?<modulename>\w+)\/%{WORD:severity}\/%{WORD:brief}\(%{WORD:log_type}\)\[%{WORD:num}\]\:%{GREEDYDATA:info}",
"message", "(?<timestamp>%{MONTH}\s+%{MONTHDAY}\s+%{YEAR}\s+%{TIME})%{SPACE}*%{HOSTNAME:fwname}\s+%%(?<log_ver>\d{2})(?<modulename>\w+)\/%{WORD:severity}\/%{WORD:brief}\(%{WORD:log_type}\)\:(?<description>(.*))\s+\(%{GREEDYDATA:info}\)",
"message", "(?<timestamp>%{MONTH}\s+%{MONTHDAY}\s+%{YEAR}\s+%{TIME})%{SPACE}*%{HOSTNAME:fwname}\s+%%(?<log_ver>\d{2})(?<modulename>\w+)/%{INT:severity}/%{WORD:brief}\(%{WORD:log_type}\):%{GREEDYDATA:info}"
]
}
先看相對标準的日志頭内容,記住,這裡用的是相對。
格式一:這裡有中括号 [187010]加描述資訊
<190>Oct 18 2022 09:09:10 WAN-FW-M %%01USERS/6/NESRV(l)[187010]:id=USG6680
格式二:這裡又沒有了中括号,直接是描述
<188>Oct 19 2022 07:44:20 WAN-FW-M %%01IPS/4/DETECT(l):An intrusion was detected.
格式三:中括号後面的描述又變成了中括号
<189>Oct 18 2022 07:03:38 WAN-FW-M %%01CM/5/USER_ACCESSRESULT(s)[182860]:[USER_INFO_AUTHENTICATION]
格式四:時間戳後,從上面一個空格,變成兩個空格。。(問候一下這個産品經理的親戚)
<188>Oct 19 2022 07:44:20 WAN-FW-M %%01IPS/4/DETECT(l):An intrusion was detected.
格式五:到此結束。。後面沒有描述了
<190>Oct 18 2022 09:09:09 WAN-FW-M %%01POLICY/6/POLICYPERMIT(l):
---
經過幾天的折騰,先把前面标準内容比對出來了。接着下來,解析後面的内容。
這裡使用fiter的kv插件進行解析。
大緻如下:
kv {
source => "info"
trim_value => "<>\[\]\"\\(\\),"
trim_key => "<>\[\],"
value_split => "="
# 寬松模式比對空格whitespace
whitespace => "lenient"
}
你以為這樣就能正确比對了?
接下來又是崩潰的。。有的日志格式中使用的鍵值格式是source-port=22470,有的是source-port:22470,有的是source port=22470。
日志内時間格式,有的是time=2022/10/18 17:09:09,有的是:TIME=1666166434;ZONE=UTC+0800;
字段間隔,有的是空格,有的是,号,有的是;号。。。
好吧,我崩潰了。。大華為的産品經理們,這出自一款産品,一個團隊啊,怎能如此狗屎?