会话ID和空值的{Logstash Grok模式

时间:2016-03-09 09:31:49

标签: logstash logstash-grok

问题1 -

56dd573d.5edd这是我的会话ID,我有像

这样的grok过滤器

%{WORD:session_id}.%{WORD:session_id} - 这将读取会话ID,输出将如下所示

 "session_id": [
    [
      "56dd573d",
      "5edd"
    ]
  ]

有没有办法让我得到类似

的输出
  "session_id": [
    [
      "56dd573d.5edd"
    ]
  ]

我只需要在单一领域

问题2 -

2016-03-08 06:48:15.477 GMT

这是我的日志条目中的一行,我使用了

%{DATESTAMP:log_time} %{WORD} 

grok过滤器读取此日期,这里我只想放弃或忽略GMT

是否有任何特殊模式可以忽略日志行中的下一个单词,这是无用的?

更新

问题3 - 我如何处理空值,它在GMT之后

2016-03-07 10:26:05 GMT,,

这是我的postgresql日志条目

2016-03-08 06:48:15.477 GMT," postgres"," sugarcrm",24285," [local]",56dd573d.5edd ,4,"空闲",2016-03-07 10:26:05 GMT ,, 0,LOG,00000,"断开连接:会话时间:20:22:09.928 user = postgres database = sugarcrm host = [local]" ,,,,,,,,,""

  

注意 - 空值可能在""或,,

回答问题3

我找到了处理的解决方案,

以下是通过用它替换0来处理,值的配置

input {
  file {
    path => "/var/log/logstash/postgres.log"
    start_position => "beginning"
    type => "postgres"
  }
}

filter {
  mutate {
    gsub => [
      "message", "^,", "0,",
      "message", ",,", ",0,",
      "message", ",,", ",0,",
      "message", ",,", ",0,",
      "message", ",$", ",0"
    ]
  }
grok {
        match => ["message","%{GREEDYDATA:msg1}"]
}
}

output {
  stdout { codec => rubydebug }
}
  

参考 -   http://comments.gmane.org/gmane.comp.sysutils.logstash.user/13842

但我正在努力"" null值我尝试下面的配置,但我收到配置错误

filter {   mutate {
    gsub => [
      "message", "^,", "0,",
      "message", ",,", ",0,",
      "message", ",,", ",0,",
      "message", ",,", ",0,",
      "message", ",$", ",0",
      "message", "^\""  "null\""
      "message", """" ""null""
      "message", """" ""null""
      "message", ""$", ""null"
    ]   }

我需要更换""使用null

1 个答案:

答案 0 :(得分:2)

关于问题1.它将两者分开,因为基本上你要求它做的是为session_id添加另一个值。你想要这样的东西:

(?<session_ID>(%{WORD}.%{WORD})) 

https://grokdebug.herokuapp.com/上试用。你可以在哪里测试你的模式。我以上不是最好的解决方案,但我没有足够的信息来消息的其余部分。因为如果你知道更多,你可以扔掉WORD比赛。例如,如果它是具有固定长度的结构化session_ID,则可以执行以下操作:

(?<session_ID>([a-zA-Z0-9]{1,8}\.)[a-zA-Z0-9]{1,4})

关于第二个问题。我会用硬编码来快速破解:

%{DATESTAMP:log_time} GMT

提供更多信息,我们可以提供更具体的答案。以上应该可以,但有几种方法可以给猫皮肤!