Fluentd mongodb實現log檔案的過濾

2021-09-02 04:21:13 字數 2605 閱讀 9564

fluentd+mongodb 的安裝不多說了,官網上很詳細各種作業系統版本的都有。由於,我的專案中需要將多個log檔案進行初步的過濾,所以,官網上提供的in_tail 外掛程式不能夠滿足需求,需要基於in_tail外掛程式寫乙個適合自己需求的外掛程式。 

直接上**:

module fluent

require 'fluent/plugin/in_tail'

class ltabcinput < fluent::tailinput

fluent::plugin.register_input('lt_abc', self)

# override the 'configure_parser(conf)' method.

# you can get config parameters in this method.

def configure_parser(conf)

@time_format = conf['time_format'] || '%y%m%d%h%m%s'

end# override the 'parse_line(line)' method that returns the time and record.

# this example method assumes the following log format:

# %y-%m-%d %h:%m:%s\tkey1\tvalue1\tkey2\tvalue2...

# %y-%m-%d %h:%m:%s\tkey1\tvalue1\tkey2\tvalue2...

# ...

def parse_line(line)

elements = line.split("|") //獲取輸入的每一行的資訊

time = elements.shift

time = time.strptime(time, @time_format).to_i

# [k1, v1, k2, v2, ...] ->

record = {}

mark = elements.shift

record["mark"] = mark //這裡是我的log中每行資料的型別

while (p = elements.shift)

pair = p.split(":")

if (k = pair.shift) && (v = pair.shift)

record[k] = v

endif (p == "e")

record["e"] = "e";

endif (p == "n")

record["n"] = "n";

endend

return time, record

endend

end

下面是log檔案的格式

20131228182935|heart|id:40354|obu:102198|type:0x1

20131228182935|gps|id:40444|obu:104751|type:0|lat:363936|lon:1170118|speed:0.0000|direction:0|time:182935|e|n|mile:27647448

20131228182935|time sync|id:46576|obu:105450|termtime:1388255374:20131229022934

20131228182935|gps|id:40886|obu:103611|type:0|lat:363819|lon:1165236|speed:0.0000|direction:0|time:182933|e|n|mile:3140237

20131228182935|gps|id:50446|obu:104756|type:0|lat:363936|lon:1170135|speed:31.687|direction:90|time:182934|e|n|mile:12300444

20131228182935|gps|id:41464|obu:103569|type:0|lat:364212|lon:1165313|speed:0.0000|direction:0|time:182934|e|n|mile:4211590

20131228182935|gps|id:47602|obu:103170|type:0|lat:364309|lon:1170235|speed:13.575|direction:310|time:192249|e|n|mile:17175434

20131228182935|heart|id:43991|obu:102578|type:0x1

20131228182935|gps|id:40221|obu:104703|type:0|lat:364051|lon:1165917|speed:36.632|direction:181|time:182934|e|n|mile:938709

20131228182935|heart|id:40303|obu:104036|type:0x1

20131228182935|inout|id:42517|obu:102431|io:0|auto^hand:1|route:00027|service:00w|station:00271048|time:182934

實變函式 實分析總結

一 概述。實變函式,又叫實分析,整本書滿滿的證明就講了乙個勒貝格積分。最為大家所熟知的是用牛頓 萊布尼茨公式算的黎曼積分。但是黎曼積分本身依賴於函式的連續性,像不連續的狄利克雷函式就無法積分了。為了解決這一問題,勒貝格利用分割值域的方法,使得函式可積。但是分割出來的值域,只能放在一起,形式集合。如果...

NestedScrollWebview實現與優化

nestedscrollwebview實現與優化 原文如下 好久沒寫了,好像也沒什麼人關注我,呵呵,但我還是堅持寫一下,希望能幫到有需要的人!今天我來說一下nestedscrollwebview。最近在弄乙個需求,我需要用到coordinatorlayout webview 實現滾動互動效果,但要實...

saltstack keepalived實現高可用

本篇部落格承接saltstack安裝部署和saltstack grains,pillar,jinja模組的使用 建立目錄。root server1 keepalived vim files keepalived.conf configuration file for keepalived globa...