1
由於類似的問題已經重複,我仔細看過以前的答案,不幸的是它還沒有解決我的問題。通過logstash進行日誌分析,沒有產生字段
通過下面提到的logstash的過濾配置,我期望在解析日誌之後生成字段線程,日誌級別和消息。
我試過這個過濾器https://grokdebug.herokuapp.com/和輸出生成過濾器中提到的字段。
但是除了消息之外,在輸出JSON/Kibana上沒有顯示的字段。解析時沒有錯誤。
如果有人能指出這裏的錯誤,會有所幫助。謝謝!
過濾配置
filter {
if [type] == "reporting" {
grok {
match => { "message" => "\[(?<timestamp>%{TIMESTAMP_ISO8601})\] - %{NOTSPACE:thread} - %{LOGLEVEL:loglevel} (?<logger>[A-Za-z0-9$_.]+) - %{GREEDYDATA:message}$"}
}
}
}
日誌示例
[2016-08-15 09:44:36,858] - RServer - INFO transformation - [01] starting the process for day 2016-06-06
生成JSON
{
"_index": "filebeat-2016.08.15",
"_type": "log",
"_id": "xxx",
"_score": null,
"_source": {
"message": "[2016-08-15 09:44:36,858] - RServer - INFO transformation - [01] starting the process for day 2016-06-06",
"@version": "1",
"@timestamp": "2016-08-15T09:44:37.700Z",
"source": "/xxx/yyy/main.log",
"count": 1,
"fields": {
"application": "reporting",
"category": "main"
},
"beat": {
"hostname": "xxx",
"name": "xxx"
},
"offset": 5033597,
"type": "log",
"input_type": "log",
"host": "xxx",
"tags": [
"beats_input_codec_plain_applied"
]
},
"fields": {
"@timestamp": [
1471254277700
]
},
"sort": [
1471254277700
]
}
它看起來不像你設置的類型變量,因此你的過濾器永遠不會被調用。刪除if,然後再試一次。 – pandaadb
@pandaadb所以你的評論觸發了一個想法來檢查FileBeat的配置(因爲Logstash中的if條件是有意的)。我發現其中一個字段'output_type'缺失。我添加了它,現在這些字段正在出現。謝謝你的幫助! – Srikanta
沒問題:)或者,你可以在你的輸入中做類似type =>「reporting」的事情,這也可以設置 – pandaadb