Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
会话id和空值的Logstash Grok模式_Logstash_Logstash Grok - Fatal编程技术网

会话id和空值的Logstash Grok模式

会话id和空值的Logstash Grok模式,logstash,logstash-grok,Logstash,Logstash Grok,问题1- 56dd573d.5edd这是我的会话id,我有grok筛选器 %{WORD:session\u id}.%{WORD:session\u id}-这将读取会话id,输出如下所示 "session_id": [ [ "56dd573d", "5edd" ] ] 有没有什么方法可以让我得到像这样的输出 "session_id": [ [ "56dd573d.5edd" ] ] 我只需要一个字段 问题2-

问题1-

56dd573d.5edd这是我的会话id,我有grok筛选器

%{WORD:session\u id}.%{WORD:session\u id}
-这将读取会话id,输出如下所示

 "session_id": [
    [
      "56dd573d",
      "5edd"
    ]
  ]
有没有什么方法可以让我得到像这样的输出

  "session_id": [
    [
      "56dd573d.5edd"
    ]
  ]
我只需要一个字段

问题2-

2016-03-08 06:48:15.477 GMT

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

%{DATESTAMP:log_time} %{WORD} 
格罗克过滤器读取这个日期,在这里我只想删除或忽略GMT

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

已更新

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

2016-03-07 10:26:05 GMT,,
这是我的postgresql日志条目

2016-03-08 06:48:15.477 GMT,“postgres”,“sugarcrm”,24285,“本地”,56dd573d.5edd,4,“空闲”,2016-03-07 10:26:05 GMT,0,LOG,00000,“断开连接:会话时间:20:22:09.928用户=postgres数据库=sugarcrm主机=[本地],,,,,,,,,,,,”

注意-空值可能在“”或、

问题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 }
}
参考文献-

但我正在尝试“”空值。我在配置下面尝试过,但得到配置错误

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

关于问题1,我需要将“”替换为null。它将两者分开,因为从本质上讲,您要求它做的事情会为会话id增加另一个值

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

提供更多的信息,我们就能给出更好更具体的答案。上述方法应该有效,但有几种方法可以剥猫皮

您好,回答得很好(问题1和问题2),我还有一个问题,请查找更新的问题。@TusharSarde很好奇为什么不在grok中使用“替换”命令?另外,请尝试转义这些字符,让它知道这是文字匹配谢谢,我这样做了,并将、、替换为0,将“”替换为nil@TusharSarde伟大的在中添加解决方案,以便其他人不必找到这些注释:P
(?<session_ID>([a-zA-Z0-9]{1,8}\.)[a-zA-Z0-9]{1,4})
%{DATESTAMP:log_time} GMT