filebeat 提取獲取massage字段 利用pipeline grok 7.12

嘴巴會說(情商)比技術有時候更重要!php

 

水平有限,但願你看完有所收穫!html

 

背景

1,filebeat直連Elasticsearch,須要對massage提取一些特定的字段。java

2,若是你對數據須要處理的比較多仍是建議用logstash,logstash更強大一些。linux

 

pipeline 簡單介紹

pipeline 我最開始瞭解的時候是使用jenkins的時候,即交付流水線。json

平時寫的jenkinsfile就是用的pipeline。vim

我理解的pipeline就是把你在界面上配置的自動化變成代碼腳本。即Pipeline as Code。瀏覽器

 

1、原始massage

原始的日誌內容以下,bash

我須要提取:4975481caf96a734bdb300acc118b5b5app

2021-06-17 20:50:39|ERROR|4975481caf96a734bdb300acc118b5b5|1623934239.079|20003|user service error|/var/www/html/vendor/mdp/java-client/src/JavaClientResponse.php

 

2、操做

想要使用filebeat提取massage字段curl

1,得先在es裏面建立一個pipeline腳本。

2,配置filebeat使用es的pipeline腳本。

 

2.1 建立pipeline.json文件

就是隨便在linux目錄建立一個文件。

文件名稱隨便起,後期能找到就行。方便之後作更改。
vim extract-traceid-pipeline.json
{
  "description" : "extract-traceid-pipeline",    # 描述,能夠描述一下這個pipeline的做用
  "processors" : [
    {
      "grok" :{            # grok 語法
        "field" : "message",    # 須要對你採集的信息的哪一個字段進行處理。其實就是filebeat採集完一條日誌以後 來執行這個處理。你能夠對採集的任何字段的值進行處理
        "patterns" : ["ERROR\\|%{DATA:trace_id}\\|"]    # 這個就是從message信息中提取信息的語法了。
      }
    }
  ]
}

# [""] 這個是固定寫法,裏面的纔是正則
# 2021-06-17 20:50:39|ERROR|4975481caf96a734bdb300acc118b5b5|1623934239.079......
# 提取4975481caf96a734bdb300acc118b5b5,能夠看到這段數據以前的是ERROR|
# 那我前面就寫ERROR\\| |須要轉義可是es也須要轉義一層,因此就是兩個\\
# %{} 這個是固定的寫法,就是你想要提取哪一個信息而後 使你提取出來的信息成爲一個字段key:value。
# DATA 是grok的語法,內置字段類型,好比
                               DATE:表示你提取的信息是日期
                               NUMBER:表示爲數值
                               DATA:表示爲字符串
                               IP:表示爲一個ip地址
                               你在這標識的類型會在kibana上面把key的類型標識出來。
# :trace_id 這個表示你給 你提取出來的信息定義一個Key的名稱,好比
                               trace_id:4975481caf96a734bdb300acc118b5b5
                               到時候你收集到的這條日誌信息裏面就會多出這一個字段
                               你在kibana就能搜索到。
                               這個名稱你隨便定義就行。

 

2.2 將json文件傳到es

在你json文件所在的目錄執行
curl -H "Content-Type: application/json" -XPUT 'http://192.168.31.61:9200/_ingest/pipeline/extract-traceid-pipeline' -d@extract-traceid-pipeline.json

# extract-traceid-pipeline 這個名稱你能夠隨便起,可是在filebeat配置的時候須要寫這個名稱
# extract-traceid-pipeline.json 這個就是你本身的json文件

 

2.3 查看pipeline腳本

能夠看到es裏面有咱們上傳的pipeline規則了

訪問:http://192.168.31.61:9200/_ingest/pipeline,我沒安裝google瀏覽器json插件。安裝一個就格式化了。

還有就是能夠用kibana的開發工具看到:

 

2.4 filebeat配置

# 編輯filebeat.yml配置文件

output.elasticsearch:
  hosts: ["192.168.31.61:9200","192.168.31.62:9200","192.168.31.63:9200"]
  pipelines:                                  # pipelines 就是你下面能夠放多個pipeline
    - pipeline: "extract-traceid-pipeline"    # 這個名稱就是你curl put到es裏面 你後面寫的那個名稱
      when.contains:                          # 這裏是一個filebeat的配置語法,能夠看看filebeat的官方文檔,大體的意思就是if 條件判斷
        log_topics: "php-errlogs"             # 就是當log_topics:"php-errlogs" 的時候才用這個pipeline 
        
        
   # when 就是if
   # contains 就是 包含的意思 還有其餘的好比:and,or,not,equals(必須相等)

 

2.5 查看數據

能夠直接查看es數據,也能夠去kibana上面看。收集的數據裏面就會多出一個字段。

 

3、grok在線調試工具

https://www.5axxw.com/tools/v2/grok.html

相關文章
相關標籤/搜索