Logstash Grok解析器

时间:2015-12-02 17:10:00

标签: logstash logstash-grok grok

我是log-stash和grok的新手,我需要解析非常自定义的日志文件。我找不到任何好的教程来完成这项工作。试过系统日志示例,但它在我的情况下不起作用。

示例:

11月19日00:06:37 srv-fe-05 ssh-server-g3:2037 Sft_server_open_dir," 2037 Sft_server_open_dir,目录名:/ home / folder1 / input,文件句柄:007800B000782170,"成功",Session-Id:162351"

我想要提取的项目:

  1. 时间戳:11月19日00:06:37将被添加到当前年份并存储在弹性搜索中作为时间戳。
  2. 服务器主机srv-fe-05
  3. 来自/ home / folder1 / input
  4. 的文件夹名称folder1
  5. 成功状态"成功"
  6. Session-Id:162351来自Session-Id:162351
  7. 任何帮助或指示都将不胜感激。

    根据答案,我提出了这种模式:

    %{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}
    

    我的两个新问题是:

    1. 效率如何?我的意思是提高效率的方法是什么?

1 个答案:

答案 0 :(得分:2)

首先,熟悉basic built-in grok patterns。了解%{WORD},%{NUMBER}等基本工具将会有很长的路要走。

其次,熟悉在线调试器(herokuappspot)。它们各有优势。

第三,慢慢开始。在您的示例中,您是否可以匹配调试器中字符串开头的日期和时间?如果是,则尝试为主机名添加匹配项。从左到右缓慢移动,直到你完成所有操作。

如果你看一下核心模式,你会发现" nov"只显示一次,作为模式%{MONTH}的一部分。有道理,对吗?但另请注意,%{MONTH}是较大结构的一部分,例如%{SYSLOGTIMESTAMP},它可以在一步上匹配您的日期时间。

最后,还有一些在线指南和教程。 Here's one