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


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

 

水平有限,希望你看完有所收獲!

 

背景

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

2,如果你對數據需要處理的比較多還是建議用logstash,logstash更強大一些。

 

pipeline 簡單介紹

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

平時寫的jenkinsfile就是用的pipeline。

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

 

一、原始massage

原始的日志內容如下,

我需要提取:4975481caf96a734bdb300acc118b5b5

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

 

二、操作

想要使用filebeat提取massage字段

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上面看。收集的數據里面就會多出一個字段。

 

三、grok在線調試工具

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

 

 

水平有限!抱拳  抱拳  抱拳

 

大家可以看我的另一篇文章,elk的,實際運用pipline:https://www.cnblogs.com/fanfanfanlichun/p/14917736.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM