【问题标题】:Log fields are not parsing as expected using grok filter in elasticsearch在 elasticsearch 中使用 grok 过滤器未按预期解析日志字段
【发布时间】:2021-07-04 20:25:44
【问题描述】:

我正在使用以下配置,并希望它能够按照以下字段进行解析。

下面是pipeline.conf 文件。

input {
    beats {
        port => "5044"
    }
}
filter {
    grok {
        match => { "message" => "%{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:%{MINUTE}(?::?%{SECOND})\| %{USERNAME:exchangeId}\| %{DATA:trackingId}\| %{NUMBER:RoundTrip:int}%{SPACE}ms\| %{NUMBER:ProxyRoundTrip:int}%{SPACE}ms\| %{NUMBER:UserInfoRoundTrip:int}%{SPACE}ms\| %{DATA:Resource}\| %{DATA:subject}\| %{DATA:authmech}\| %{DATA:scopes}\| %{IPV4:Client}\| %{WORD:method}\| %{DATA:Request_URI}\| %{INT:response_code}\| %{DATA:failedRuleType}\| %{DATA:failedRuleName}\| %{DATA:APP_Name}\| %{DATA:Resource_Name}\| %{DATA:Path_Prefix}"} 
    }
    geoip {
        source => "Client"
    }
}
output {
    elasticsearch {
        hosts => [ "localhost:9200" ]
    }
}

实际的日志是这样的 -

2021-06-25T08:51:38,788| ETxatokABfg2U2wVXx2ww| atid:1b9mgcaaCgpwrcgE1FLBAiF88mk| 270 ms| 212 ms| 0 ms| api.dev.only.bfco.io [] / /*:443| | OAuth| | 156.50.222.27| POST| /piie-aiip/v5/aiip/account-success-constant| 201| | | Ba API| Root Resource| /* 

2021-06-25T13:02:41,254| 3rURHHJEh936dQEBMx-6yA| atid:x6UY50zGPx2L_qZmFm251FkQDiU| 160 ms| 8 ms| 0 ms| api.dev.only.bfco.io [] / /*:443| | OAuth| | 156.50.222.27| GET| /piie-aiip/v5/aiip/account-success-constant/97e7a7b9-3e60-4508-a35b-d0a01ba902bb| 200| | | Ba API| Root Resource| /* 

2021-06-25T13:03:51,257| P0nH46kGVFnhZZ5iC6ZU1g| atid:y7UX49zBPy1P_wXnFm251FkQDiU| 39 ms| 2 ms| 0 ms| api.dev.only.bfco.io [] / /*:443| | OAuth| | 156.50.222.27| GET| /piie-aiip/v5/aiip/account-success-constant-asu| 400| | | Ba API| Root Resource| /*

但是当在 kibana 上进行检查时,我看到消息字段是一个字段(如下),而不是如 pipeline.conf 中提到的那样分成上述各个字段。

以下来自扩展文档 - 表格。

message         2021-06-25T13:01:03,478| XQvIx-qYtp2lP0tLcr53pQ| 
                atid:y7UX99zGPx2L_qZmFm101EkQBiU| 180 ms| 10 ms| 0 ms| api.dev.only.bfco.io 
                [] / /*:443| | OAuth| | 156.50.222.27| POST| /piie-aiip/v5/aiip/account-success- 
                constant| 201| | | Ba API| Root Resource| /*

我想在其中一个字段上运行查询 (NUMBER:RoundTrip:int)

当在 Grok Debugger 中进行上述检查时,它会显示预期的结果。

即将样本数据放在日志行之一的上方, 用在 grok Patten 上面, 它给出了以下输出。

{
  "response_code": "201",
  "method": "POST",
  "subject": "",
  "Request_URI": "/piie-aiip/v5/aiip/account-success-constant",
  "Resource": "api.dev.only.bfco.io [] / /*:443",
  "UserInfoRoundTrip": 0,
  "APP_Name": "Ba API",
  "authmech": "OAuth",
  "Resource_Name": "Root Resource",
  "failedRuleName": "",
  "exchangeId": "XEyIx-yYtp2lP0kLcr08kP",
  "RoundTrip": 180,
  "ProxyRoundTrip": 10,
  "scopes": "",
  "Client": "156.50.222.27",
  "Path_Prefix": "",
  "failedRuleType": "",
  "trackingId": "atid:y8YX50zGPx3L_qZmg981FkEBiU"
}

1 Q. 有人可以请教 pipeline.conf 中的问题,防止消息字段成为单个字段。

2 Q. 也不确定为什么当索引模式以 int 形式传递时,以下字段在索引模式中显示的长度一样长。

【问题讨论】:

    标签: elasticsearch logstash kibana logstash-grok


    【解决方案1】:

    它能够解析上述预期字段。错过了。

    【讨论】:

      猜你喜欢
      • 2021-01-26
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多