我有一个如下所示的日志文件,我需要使用grok过滤器进行解析。请引导我了解过滤器的内容
登录
.error()
预期过滤器
id:twsoper AIX230
JOB:load_data /jobs/system/load_data.bat 2017-05-14
trying to connect to database
connected to database Target_DB
答案 0 :(得分:1)
使用grok时,您需要知道正则表达式(用于模式匹配)。
此外,在将其放入logstash之前,您需要使用该模式,因为这里有一些在线模式测试人员
现在开始你的例子。假设所有这些都是文件中的单独行,您将最终获得弹性搜索所有这些文档。除非您在filebeat或logstash中查看多行,以将多行合并为一条消息。
filter {
grok {
# get the entire message
match => ["message", "%{GREEDYDATA:message}"]
overwrite => [ "message" ]
# get ID and server
match => ["message", "id:%{WORD:ID}\s+%{WORD:server}"]
# get Date
match => ["message", "JOB.+%{DATE:Date}"]
#get database
match => ["message", "connected to database %{WORD:database}"]
}
}
如果您不想使用多行,则需要if语句匹配消息然后匹配字段,如下所示:
filter {
#if line starts with id
if [message] =~ /^id/ {
grok {
# get ID and server
match => ["message", "id:%{WORD:ID}\s+%{WORD:server}"]
}
#if line starts with JOB
if [message] =~ /^JOB/ {
grok {
# get Date
match => ["message", "JOB.+%{DATE:Date}"]
}
.
.
.
.
}