会话 ID 和空值的 Logstash Grok 模式
Logstash Grok pattern for session id and null values
问题 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,"idle" ,2016-03-07 10:26:05 GMT,0,LOG,00000,"disconnection: session time: 20:22:09.928 user=postgres database=sugarcrm host=[local]","""
Note - null value may be in "" or ,,
问题 3 的答案
我找到了处理 ,
的解决方案
下面是处理 , value 的配置,用它替换 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 }
}
Reference -
http://comments.gmane.org/gmane.comp.sysutils.logstash.user/13842
但我正在尝试“”空值我尝试了以下配置但我收到配置错误
filter { mutate {
gsub => [
"message", "^,", "0,",
"message", ",,", ",0,",
"message", ",,", ",0,",
"message", ",,", ",0,",
"message", ",$", ",0",
"message", "^\"" "null\""
"message", """" ""null""
"message", """" ""null""
"message", ""$", ""null"
] }
我需要将“”替换为 null
关于问题 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
提供更多信息,我们可以给出更好更具体的答案。以上应该可行,但有几种方法可以给猫剥皮!
问题 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,"idle" ,2016-03-07 10:26:05 GMT,0,LOG,00000,"disconnection: session time: 20:22:09.928 user=postgres database=sugarcrm host=[local]","""
Note - null value may be in "" or ,,
问题 3 的答案
我找到了处理 ,
的解决方案下面是处理 , value 的配置,用它替换 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 }
}
Reference - http://comments.gmane.org/gmane.comp.sysutils.logstash.user/13842
但我正在尝试“”空值我尝试了以下配置但我收到配置错误
filter { mutate {
gsub => [
"message", "^,", "0,",
"message", ",,", ",0,",
"message", ",,", ",0,",
"message", ",,", ",0,",
"message", ",$", ",0",
"message", "^\"" "null\""
"message", """" ""null""
"message", """" ""null""
"message", ""$", ""null"
] }
我需要将“”替换为 null
关于问题 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
提供更多信息,我们可以给出更好更具体的答案。以上应该可行,但有几种方法可以给猫剥皮!