会话id和空值的Logstash Grok模式
问题1- 56dd573d.5edd这是我的会话id,我有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-
%{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