【问题标题】:Split a message using grok使用 grok 拆分消息
【发布时间】:2018-09-20 22:39:28
【问题描述】:

我有以下格式的日志:

2018-09-17 15:24:34;Count of files in error folder in;C:\Scripts\FOLDER\SUBFOLDER\error;1

我想在一个单独的字段中输入文件夹的路径和后面的数字。 喜欢

dirTEST=C:\Scripts\FOLDER\SUBFOLDER\
count.of.error.filesTEST=1

dir=C:\Scripts\FOLDER\SUBFOLDER\
count.of.error.files=1

我在 logstash 配置中使用这个 grok 模式:

if  "TestLogs" in [tags] {
    grok{
    match => { "message" => "%{DATE:date_in_log}%{SPACE}%{TIME:time.in.log};%{DATA:message.text.log};%{WINPATH:dir};%{INT:count.of.error.files}" }
    add_field => { "dirTEST" => "%{dir}" } 
    add_field => { "count.of.error.filesTEST" => "%{count.of.error.files}" }
    }

}

logstash 日志中没有错误。

但是在 Kibana 中,我得到了没有新字段的普通日志。

【问题讨论】:

  • 您是否尝试过从设置-> 索引-> 索引模式刷新字段列表?

标签: elasticsearch logstash logstash-grok filebeat


【解决方案1】:

这里有几点说明。首先,必须说解决方案似乎在做你所期望的,所以问题可能是你的索引模式没有用新字段更新。要在 Kibana 中执行此操作,您可以转到 Management -> Kibana -> Index Patterns 并刷新右上角的字段列表(在删除索引模式按钮旁边)。

其次,您必须考虑到使用点来分隔术语会使结构化数据看起来像这样:

{
  "date_in_log": "18-09-17",
  "count": {
    "of": {
      "error": {
        "files": "1"
      }
    }
  },
  "time": {
    "in": {
     "log": "15:24:34"
    }
  },
  "message": {
    "text": {
      "log": "Count of files in error folder in"
    }
  },
  "dir": "C:\\Scripts\\FOLDER\\SUBFOLDER\\error"
}

我不知道这是否是您希望数据表示的方式,但也许您应该考虑其他解决方案来更改 grok 模式中字段的命名。

【讨论】:

    猜你喜欢
    • 2017-08-26
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2021-10-16
    • 2019-05-06
    相关资源
    最近更新 更多