如何让Logstash Grok Fliter看到新线和车厢返回?
我正在尝试解析我们的日志文件并将它们发送到elasticsearch。问题是我们的S3客户机正在向包含回车符(\r)的文件中注入行,而不是新行字符(\n)。使用“\n”作为分隔符的文件输入筛选器的配置与99%的数据一致。当我对这些数据运行logstash时,它漏掉了我真正想要的最后一行。这是因为文件输入筛选器将“\r”字符视为普通文本而不是新行。为了解决这个问题,我尝试使用一个变异过滤器将'\r'字符重写为'\n'。变异有效,但格罗克仍将其视为一条主线。和34; grokparsefailure" 我的“正常”日志文件行正常运行 配置 输入 这个来自输入文件的示例说明了这个问题。^M字符是vim显示“\r”回车的方式(“更多”隐藏了大部分回车)。我保留了这一行,以便您可以看到整个内容在linux和文件插件中被看作是一行文本如何让Logstash Grok Fliter看到新线和车厢返回?,logstash,logstash-grok,logstash-configuration,logstash-file,Logstash,Logstash Grok,Logstash Configuration,Logstash File,我正在尝试解析我们的日志文件并将它们发送到elasticsearch。问题是我们的S3客户机正在向包含回车符(\r)的文件中注入行,而不是新行字符(\n)。使用“\n”作为分隔符的文件输入筛选器的配置与99%的数据一致。当我对这些数据运行logstash时,它漏掉了我真正想要的最后一行。这是因为文件输入筛选器将“\r”字符视为普通文本而不是新行。为了解决这个问题,我尝试使用一个变异过滤器将'\r'字符重写为'\n'。变异有效,但格罗克仍将其视为一条主线。和34; grokparsefailure
^M[Stage 79:=======> (30 + 8) / 208]^M[Stage 79:============> (49 + 8) / 208]^M[Stage 79:=================> (65 + 8) / 208]^M[Stage 79:=====================> (83 + 8) / 208]^M[Stage 79:===========================> (105 + 8) / 208]^M[Stage 79:===============================> (122 + 8) / 208]^M[Stage 79:====================================> (142 + 8) / 208]^M[Stage 79:=========================================> (161 + 8) / 208]^M[Stage 79:==============================================> (180 + 6) / 208]^M[Stage 79:==================================================> (195 + 3) / 208]^M[Stage 79:=====================================================>(206 + 1) / 208]^M ^M^M[Stage 86:==============> (55 + 8) / 208]^M[Stage 86:===================> (75 + 8) / 208]^M[Stage 86:==========================> (101 + 8) / 208]^M[Stage 86:===============================> (123 + 8) / 208]^M[Stage 86:======================================> (147 + 8) / 208]^M[Stage 86:============================================> (173 + 6) / 208]^M[Stage 86:==================================================> (193 + 3) / 208]^M[Stage 86:=====================================================>(205 + 1) / 208]^M ^M^M[Stage 93:===================> (74 + 8) / 208]^M[Stage 93:===========================> (104 + 8) / 208]^M[Stage 93:==================================> (132 + 8) / 208]^M[Stage 93:========================================> (157 + 9) / 208]^M[Stage 93:================================================> (186 + 6) / 208]^M[Stage 93:=====================================================>(206 + 2) / 208]^M ^M15/12/09 13:03:46 INFO SomethingProcessor$: Something Processor completed
15/12/09 13:04:44 INFO CassandraConnector: Disconnected from Cassandra cluster: int
输出
我需要grok解析这一行,因为它是新行“\n”。有人知道怎么解决这个问题吗
15/12/09 13:03:46 INFO SomethingProcessor$: Something Processor completed
我相信您正在寻找的可能是多行过滤器 如果我没记错的话,这个过滤器负责决定日志行是否是新行。例如,我使用它将所有不以“[INFO]”开头的行连接在一起
我希望这有帮助您的输入与输出不匹配。输入为“142+8”,输出为“49+8”?谢谢@AlainCollins。好眼睛。linux“more”命令似乎没有显示整行内容。我想这是因为马车返回。我已经用vim的输出更新了原始问题,它包含了整个问题行。如果它作为一行输入(并且您无法更改写入文件的内容),那么“拆分”过滤器可能会工作。它从一个文档创建多个事件。
{
"message" => "\n[Stage 79:=======> (30 + 8) / 208]\n[Stage 79:============>
(49 + 8) / 208]\n[Stage 79:=================> (65 + 8) / 208]\n[Stage 79:===
==================> (83 + 8) / 208]\n[Stage 79:===========================> (105 + 8
) / 208]\n[Stage 79:===============================> (122 + 8) / 208]\n[Stage 79:====================================>
(142 + 8) / 208]\n[Stage 79:=========================================> (161 + 8) / 208]\n[Stage 79:================
==============================> (180 + 6) / 208]\n[Stage 79:==================================================> (195 + 3) / 208]\n[St
age 79:=====================================================>(206 + 1) / 208]\n
\n\n[Stage 86:==============> (55 + 8) / 208]\n[Stage 86:===================>
(75 + 8) / 208]\n[Stage 86:==========================> (101 + 8) / 208]\n[Stage 86:====
===========================> (123 + 8) / 208]\n[Stage 86:======================================> (147 + 8)
/ 208]\n[Stage 86:============================================> (173 + 6) / 208]\n[Stage 86:========================================
==========> (193 + 3) / 208]\n[Stage 86:=====================================================>(205 + 1) / 208]\n
\n\n[Stage 93:===================> (74 + 8) / 208]\n[S
tage 93:===========================> (104 + 8) / 208]\n[Stage 93:==================================>
(132 + 8) / 208]\n[Stage 93:========================================> (157 + 9) / 208]\n[Stage 93:============================
====================> (186 + 6) / 208]\n[Stage 93:=====================================================>(206 + 2) / 208]\n
\n15/12/09 13:03:46 INFO SomethingProcessor$: Something Processor com
pleted",
"@version" => "1",
"@timestamp" => "2015-12-09T22:16:52.898Z",
"host" => "ip-10-252-1-225",
"path" => "/home/something/pa_stg/runs/2015-12-09-cron-1449666001/run.log",
"type" => "spark",
"tags" => [
[0] "_grokparsefailure"
]
}
15/12/09 13:03:46 INFO SomethingProcessor$: Something Processor completed
multiline {
pattern => "^\[%{LOGLEVEL}\]"
negate => true
what => "previous"
}