Logstash:基于文件名的动态字段名称

时间:2017-12-07 14:10:53

标签: logstash logstash-grok logstash-configuration

我得到了<key>:<value>-<key>:<value>.log格式的文件名,例如pr:64-author:mxinden-platform:aws.log包含测试运行的日志。

我想通过logstash将文件的每一行流式传输到elasticsearch。应将每一行视为单独的文件。每个文档都应该根据文件名获取字段。所以例如对于上面的示例,让我们说日志行17-12-07 foo something happened bar会得到字段pr,其值为64author的值为mxinden且{值platform的{​​1}}。

在我编写logstash配置的时间点我不知道字段的名称

如何根据文件名中包含的字段为每行动态添加字段?

到目前为止,静态方法是:

aws

对文件名结构的更改很好。

1 个答案:

答案 0 :(得分:0)

根据@ dan-griffiths comment回答我自己的问题:

pr=64,author=mxinden,platform=aws.log这样的文件的解决方案是使用Elasticsearch kv filter,例如:

  filter {
    kv {
      source => "file"
      field_split => ","
    }
  }

其中file是通过AWS S3输入插件从文件名中提取的字段。