2017-08-07 70 views
0

,我監控日誌文件有以下格式的日誌:如何使用FileBeat以管道分隔格式向Jlastic格式的Elasticsearch發送日誌數據?

Oct 23 16:06:44 server smbd_audit: user01|192.168.0.23|project|opendir|ok|. 
Oct 23 16:06:44 server smbd_audit: user01|192.168.0.23|project|closedir|ok| 
Oct 23 16:06:44 server smbd_audit: user01|192.168.0.23|project|open|ok|r|file.txt 
Oct 23 16:06:44 server smbd_audit: user01|192.168.0.23|project|pread|ok|file.txt 
Oct 23 16:06:44 server smbd_audit: user01|192.168.0.23|project|close|ok|file.txt 

我怎麼可以在發送使用FileBeat到Elasticsearch之前格式化這個數據?

我希望我的文件看起來像以下(不含elasticsearch元數據字段):

{ 
    "timestamp": "Oct 23 16:06:44", 
    "machine-name": "server", 
    "type": "smbd_audit", 
    "username": "user01", 
    "machine-ip": "192.168.0.23", 
    "directory": "project", 
    "operation": "opendir", 
    "success": "ok", 
    "file": "file.txt" 
} 

回答

1

我假設你不想使用Logstash,所以你很可能使用的ingest pipelineGrok

put _ingest/my-pipeline  
{ 
    "description": "My Ingest Pipeline", 
    "processors": [ 
    { 
     "grok": { 
     "field": "message", 
     "patterns": [ 
      "%{SYSLOGTIMESTAMP:log_date} %{WORD:machine-name} %{WORD:type}: %{WORD:username}|{IP:machine-ip}|{WORD:directory}|{WORD:operation}|{WORD:success}|{WORD:file}" 
     ] 
     } 
    }, 
    { 
     "date": { 
     "field": "log_date" 
     } 
    } 
    ] 
} 

完全未經測試,但至少應該給你一些繼續。

+0

謝謝@dwjv向我介紹攝入管道。 –

+0

沒有問題,僅供參考,底部的「日期」部分是爲了您可以使用日誌中的日期/時間來搜索(以Kibana等),而不是默認的攝取日期。未經測試,您可能需要添加一種格式,以便ES可以正確翻譯它。例如'「date」:{「field」:「log_date」,「formats」:[「MMM dd HH:mm:ss」]}' – dwjv