日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Logstash 父子关系 配置

發(fā)布時(shí)間:2025/7/14 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Logstash 父子关系 配置 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近在使用Lostash的過程中遇到了一個(gè)問題:在一個(gè)log文件里包含兩類數(shù)據(jù),而且兩類數(shù)據(jù)之間存在父子關(guān)系,那如何使用lostash的configuration實(shí)現(xiàn)這個(gè)需求呢

思路:

  • 首先定義父事件的pattern,因?yàn)樽邮录黄ヅ涓竝attern,所以logstash會(huì)自動(dòng)為子事件添加_grokparesefailure 標(biāo)簽。通過該標(biāo)簽即可知道當(dāng)前事件是父事件還是子事件?
  • 使用filter->ruby生成document_id,并把它放到ruby全局變量中 ,這樣子事件就可以訪問到父事件的document_id
  • 同時(shí)為父事件和子事件添加一個(gè)字段例如doc_id用來存放步驟二中生成的document_id,單獨(dú)為子事件添加一個(gè)字段例如parent_id,用來存儲(chǔ)父事件的document_id。
  • 在此要感謝elastic官方論壇的一個(gè)帖子:"keep global variable in logstash",它讓我知道了如何使用filter->ruby來實(shí)現(xiàn)全局變量。

    以下是logstash的完整配置?

    input {beats {port => 5044} }filter { # remove the empty linesif [message] =~ /^\s*$/ {drop { }}# define parent event patterngrok {match => {"message" => "%{DATESTAMP:EventTime},%{NUMBER:Mil:INT} %{WORD:Type} %{GREEDYDATA:Item} %{GREEDYDATA:RIC} %{GREEDYDATA:Detail} %{GREEDYDATA:Category}"}}# children eventsif "_grokparsefailure" in [tags] {grok {match => {"message" => "\<%{NUMBER:FID:INT}\>,%{GREEDYDATA:FName},%{WORD:FType},%{GREEDYDATA:FValue}"}add_field => {"DocID" => '' "ParentID" => ''}add_tag => ["%{FType}"]remove_tag => ["_grokparsefailure"]}ruby {code => "require 'digest/md5';event['ParentID'] = @@parentid;event['DocID'] = Digest::MD5.hexdigest(@@parentdate+event['FID'])"}}else{mutate {add_field => {"DocID" => ''}add_tag => ["parent"]}# define a global variable to keep the parent id# must set the default value for the variables in ruby -> init block, or it will raise exceptionruby {init => "@@parentid = '';@@parentdate=''"code => "require 'digest/md5';@@parentid = Digest::MD5.hexdigest(event['EventTime']+event['Mil']);event['DocID'] = @@parentid;@@parentdate = event['EventTime']+event['Mil']"}}#remove the redundant fields created by filebeat. you can ignore it if you don't use filebeat as shipper mutate {remove_field => ["[beat][hostname]","[beat][name]","count","fields","input_type","offset","type","beat","@version"]} }output {elasticsearch {hosts => ["localhost:9200"]index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"#set the document_iddocument_id => %{"DocID"}document_type => "%{[@metadata][type]}"#template => "/appserver/ELK/logstash-2.3.4/conf/template_tolreport.json"#template_name =>"template_tolreport"#template_overwrite => true}# file {# path => "./test-%{+YYYY-MM-dd}.txt"# } }

    英語(yǔ)好的同學(xué)可以參考我在elastic 的官方論壇中發(fā)的帖子:https://discuss.elastic.co/t/logstash-parent-child-event-configuration/58117

    轉(zhuǎn)載于:https://www.cnblogs.com/jjhe369/p/5785845.html

    總結(jié)

    以上是生活随笔為你收集整理的Logstash 父子关系 配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。