Logstash Grok 解析器
Posted
技术标签:
【中文标题】Logstash Grok 解析器【英文标题】:Logstash Grok parser 【发布时间】:2015-12-02 17:10:00 【问题描述】:我是 log-stash 和 grok 的新手,我需要解析非常自定义的日志文件。我在任何地方都找不到一个很好的教程来完成这项工作。尝试了 syslog 示例,但在我的情况下它不起作用。
例子:
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"
我要提取的项目:
-
时间戳:11 月 19 日 00:06:37 将添加到当前年份并作为时间戳存储在弹性搜索中。
服务器主机 srv-fe-05
/home/folder1/input 中的文件夹名称 folder1
成功状态“成功”
Session-Id: 162351 来自 Session-Id: 162351
任何帮助或指示将不胜感激。
按照答案我想出了这个模式:
%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】:首先,熟悉basic built-in grok patterns。了解 %WORD、%NUMBER 等基本工具将大有帮助。
其次,熟悉在线调试器(heroku 和appspot)。他们各有优势。
第三,慢慢开始。在您的示例中,您可以匹配调试器中字符串开头的日期和时间吗?如果是这样,请尝试为主机名添加匹配项。继续从左到右慢慢移动,直到完成。
如果您查看核心模式,您会注意到“nov”仅出现一次,作为模式 %MONTH 的一部分。有道理,对吧?但还要注意,%MONTH 是较大结构的一部分,例如 %SYSLOGTIMESTAMP,它会在一个步骤中匹配您的日期时间。
最后,还有一些在线指南和教程。 Here's one.
【讨论】:
感谢指导,有没有关于定义自定义模式的教程?例如,我使用日志行到达这里: %SYSLOGTIMESTAMP:logTimestamp%SPACE%USERNAME:sftpServer%SPACE%USERNAME:sftpProcessName%GREEDYDATA:message 但找不到方法在“:”字符之后继续,因为它不是常见的模式。如何定义自己的模式并在 grok 匹配器中使用它们? 你可以在你的模式中加入文字。对于单个空格,我更喜欢使用“”而不是 %SPACE。你也可以在你的模式中加入一个冒号,例如%WORD:%WORD。以上是关于Logstash Grok 解析器的主要内容,如果未能解决你的问题,请参考以下文章