使用Filebeat結合Es的Ingest Node 攝取我想要的日誌

攝取節點 - 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章