攝取節點 - Ingest Node
使用Elasticsearch進行輸出時,可以將Filebeat配置爲使用 攝取節點在Elasticsearch中進行實際索引之前預處理文檔。當您想對數據進行一些額外處理時,攝取節點是一個方便的處理選項,但您不需要Logstash的全部功能。例如,您可以在Elasticsearch中創建一個攝取節點管道,該管道由一個處理器組成,該處理器刪除文檔中的字段,然後是另一個重命名字段的處理器。
使用elasticsearch自帶的節點篩選日誌,默認ingest node是啓動着的。
可使用 http請求添加ingest的pipeline 規則,例如:
添加一個Spring-logs名爲pipeline 的管道規則:
構造 PUT 請求,注意是PUT ,向ES添加pipeline。 如,添加一個Spring-logs的管道:http://127.0.0.1:9200/_ingest/pipeline/Spring-logs
put _inget/pipeline/Spring-logs
{
"description" : "test pipeline",
"processors" : [
{
"grok": {
"field": "message",
"patterns": ["\\[(?<date>.*)\\]\\[(?<level>[A-Z]{4,5})\\]\\[(?<thread>[A-Za-z0-9/-]{4,70})\\]\\[(?<class>[A-Za-z0-9/.]{4,40})\\]\\[(?<msg>[\\s\\S]*)"]
},"remove": {
"field": "message"
}
}
]
}
注意patterns中如果使用到正則匹配,需要注意轉義問題,最好查看添加成功後的管道規則和最初的是否一樣,此處經常出錯導致無法篩選日誌。
備註:
#grok 裏邊有定義好的現場的模板你可以用,但是更多的是自定義模板,規則是這樣的,小括號裏邊包含所有一個key和value,例子:(?<key>value),比如以下的信息,第一個我定義的key是data,表示方法爲:?<key> 前邊一個問號,然後用<>把key包含在裏邊去。value就是純正則了,這個我就不舉例子了。這個有個在線的調試庫,可以供大家參考,
http://grokdebug.herokuapp.com/
查看是否添加成功:
curl http://127.0.0.1:9200/_ingest/pipeline
如果上述執行失敗,請檢查Ingest node是否啓動,可手動在elasticsearch.yml中設置:
node.ingest: true
在Elasticsearch中定義管道之後,只需配置Filebeat即可使用管道。要配置Filebeat,請在文件中的parameters選項下指定管道ID。
讓它輸出到自定義的pipeline:
filebeat:
prospectors:
- type: log
//開啓監視,不開不採集
enable: true
paths: # 採集日誌的路徑這裏是容器內的path
- /var/log/elkTest/error/*.log
# 日誌多行合併採集
multiline.pattern: '^\['
multiline.negate: true
multiline.match: after
# 爲每個項目標識,或者分組,可區分不同格式的日誌
tags: ["java-logs"]
# 這個文件記錄日誌讀取的位置,如果容器重啓,可以從記錄的位置開始取日誌
registry_file: /usr/share/filebeat/data/registry
output:
elasticsearch: # 我這裏是輸出到elasticsearch,也可以輸出到logstash
hosts: ["127.0.0.1:9200"] # elasticsearch地址
pipelines:
- pipeline: "Spring-logs"
注:6.0以上該filebeat.yml需要掛載到/usr/share/filebeat/filebeat.yml,另外還需要掛載/usr/share/filebeat/data/registry 文件,避免filebeat容器掛了後,新起的重複收集日誌。
一起配置完後,可觸發下錯誤日誌的生成,在Kibana中,便可看到有Ingest node處理過的日誌內容。
效果展示
測試項目和Ingest Node 配置以及結合Logstash的測試例子以上傳到github
地址: https://github.com/liaozihong/ELK-CollectionLogs
參考:
Grok Debugger
Filebeat官方文檔
Filebeat-Ingest Node
Ingest Node