2015-12-02 113 views
0

我是新來的日誌存儲和grok,我需要解析非常自定義的日誌文件。我無法在任何地方找到一個很好的教程來完成此任務。嘗試了系統日誌的例子,但它不適用於我的情況。Logstash Grok解析器

例子:

11月19日0時06分37秒SRV-FE-05 SSH服務器-G3:2037 Sft_server_open_dir,「2037 Sft_server_open_dir,目錄名稱:/首頁/文件夾1 /輸入,文件句柄:007800B000782170, 「成功」,會話ID:162351"

我期待的項目提取:

  1. 時間戳:11月19日0時06分37秒將被添加到當前年份,存儲在彈性搜索時間戳。 162351從會話Id:162351
從/家/文件夾1 /輸入
  • 成功狀態 「成功」
  • 會話Id
  • Server主機SRV-FE-05
  • 文件夾名稱文件夾1

    任何幫助或方向,將不勝感激。

    接着我想出了這個模式的答案:

    %{SYSLOGTIMESTAMP:logTimestamp} %{USERNAME:sftpServer} %{USERNAME:processName}: %{INT:operationType} %{WORD}, \"%{INT} %{WORD}, %{WORD} %{WORD}: /%{WORD}/%{WORD:clientName}/%{WORD}, %{WORD} %{WORD}: %{WORD:submissionId}, \"%{WORD:status}\", %{WORD}-%{WORD}: %{INT:sessionId} 
    

    我的2分新的問題是:

    1. 效率如何呢?我的意思是讓它更高效的方法是什麼?
  • 回答

    1

    首先,熟悉basic built-in grok patterns。知道%{WORD},%{NUMBER}等基本工具將會有很長的路要走。

    其次,熟悉在線調試器(herokuappspot)。他們各有優勢。

    三,慢慢開始。在你的例子中,你能匹配調試器中字符串開頭的日期和時間嗎?如果是,則嘗試爲主機名添加匹配項。繼續從左向右緩慢移動,直到完成全部任務。

    如果您查看核心模式,您會注意到「nov」僅出現一次,作爲模式%{MONTH}的一部分。有道理,對嗎?但是請注意,%{MONTH}是更大的結構(如%{SYSLOGTIMESTAMP})的一部分,它將在一個步驟中匹配您的日期時間。

    最後,有一些在線指南和教程。 Here's one

    +0

    感謝您的指導,有沒有關於定義自定義模式的任何教程?以我的日誌行爲例:%{SYSLOGTIMESTAMP:logTimestamp}%{SPACE}%{USERNAME:sftpServer}%{SPACE}%{USERNAME:sftpProcessName}%{GREEDYDATA:message},但找不到方法在「:」字符之後繼續,因爲它不在常用模式中。我如何定義自己的模式並在grok匹配器中使用它們? –

    +0

    您可以將文字放入您的圖案中。對於單個空間,我更願意使用「」而不是%{空格}。您也可以在您的圖案中放置冒號,例如%{WORD}:%{WORD}。 –