elasticsearch 通过grok筛选器(logstash)分析日志数据,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok" /> elasticsearch 通过grok筛选器(logstash)分析日志数据,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok" />

elasticsearch 通过grok筛选器(logstash)分析日志数据

elasticsearch 通过grok筛选器(logstash)分析日志数据,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok,我对麋鹿很陌生,我正试图通过logstash解析我的日志。日志由filebeat发送 日志看起来像: 2019.12.02 16:21:54.330536 [ 1 ] {} <Information> Application: starting up 2020.03.21 13:14:54.941405 [ 28 ] {xxx23xx-xxx23xx-4f0e-a3c6-rge3gu1} <Debug> executeQuery: (from [::ffff:192.0.

我对麋鹿很陌生,我正试图通过logstash解析我的日志。日志由filebeat发送

日志看起来像:

2019.12.02 16:21:54.330536 [ 1 ] {} <Information> Application: starting up
2020.03.21 13:14:54.941405 [ 28 ] {xxx23xx-xxx23xx-4f0e-a3c6-rge3gu1} <Debug> executeQuery: (from [::ffff:192.0.0.0]:9999) blahblahblah
2020.03.21 13:14:54.941469 [ 28 ] {xxx23xx-xxx23xx-4f0e-a3c6-rge3gu0} <Error> executeQuery: Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 1
在我的日志示例中,我提取如下字段: 时间戳 代码 管道样 对数电平 程序 信息

但是我的grok模式有几个问题。首先,日志上的时间戳与经典时间戳大不相同。我怎样才能把它认出来? 当{}可以为空或不为空时,我也会遇到问题。你能给我一些关于正确的格洛克模式的建议吗

此外,在Kibana中,我有很多信息,例如主机名、操作系统详细信息、代理详细信息、源等。我已经了解到这些字段是ES元数据,因此无法删除它们。我发现它是 通过大量信息,有没有办法“隐藏”这些信息?

Grok模式 在下面的屏幕截图上,您可以看到我为您的示例日志(in)构建的模式:

这就是你想要的结果吗

日志存储配置 我不是自己写这么长的图案的。我从这句话开始:

CUSTOM_DATE %{YEAR}\.%{MONTHNUM}\.%{MONTHDAY}\s%{TIME}
然后,我用相应的正则表达式(直接在Grok调试器中一个接一个地)替换了每个。您可以在应用程序中使用
%{YEAR}\.%{MONTHNUM}\.%{MONTHDAY}\s%{TIME}
,但Grok调试器界面将分别打印每个部分

是否要删除空字段? 如果
pipeline\u id
字段为空,我不知道您要做什么。如果您想完全删除它,可以尝试将以下行添加到配置中:

# logstash.conf
…
filter {
    grok {
        …
    }
    if [pipeline_id] == "" {
        mutate {
            remove_field => ["pipeline_id"]
        }
    }
}
…
有用资源
Grok图案 在下面的屏幕截图上,您可以看到我为您的示例日志(in)构建的模式:

这就是你想要的结果吗

日志存储配置 我不是自己写这么长的图案的。我从这句话开始:

CUSTOM_DATE %{YEAR}\.%{MONTHNUM}\.%{MONTHDAY}\s%{TIME}
然后,我用相应的正则表达式(直接在Grok调试器中一个接一个地)替换了每个。您可以在应用程序中使用
%{YEAR}\.%{MONTHNUM}\.%{MONTHDAY}\s%{TIME}
,但Grok调试器界面将分别打印每个部分

是否要删除空字段? 如果
pipeline\u id
字段为空,我不知道您要做什么。如果您想完全删除它,可以尝试将以下行添加到配置中:

# logstash.conf
…
filter {
    grok {
        …
    }
    if [pipeline_id] == "" {
        mutate {
            remove_field => ["pipeline_id"]
        }
    }
}
…
有用资源
# logstash.conf
…
filter {
    grok {
        …
    }
    if [pipeline_id] == "" {
        mutate {
            remove_field => ["pipeline_id"]
        }
    }
}
…