elasticsearch - 在 Logstash 配置中每天为 Elasticsearch 创建一个新索引

标签 elasticsearch logstash logstash-configuration

我打算建立一个 ELK 堆栈设置,其中每天的 JSON 输入存储在创建的日志文件中,每个日期一个。我的 logstash 应通过这些日志监听输入,并将其存储到 Elasticsearch 中与日志文件条目日期对应的索引处。

我的 logstash-output.conf 是这样的:

output {
  elasticsearch { 
    host => localhost
    cluster => "elasticsearch_prod"
    index => "test"
  }
}

因此,就目前而言,logstash 的所有输入都存储在 elasticsearch 的索引 test 中。我想要的是发生在 2015.11.19 的 logstash 条目,它存储在名为 logstash-2015.11.19.log 的日志文件中,必须相应地存储在索引 test- 2015.11.19.

我应该如何编辑我的 logstash 配置文件以启用此功能?

最佳答案

回答是因为评论无法格式化而且看起来很糟糕。

您的文件名(我假设您使用文件输入)存储在您的路径变量中:

file {
            path => "/logs/**/*my_log_file*.log"
            }
            type => "myType"
    }

这个变量在你的整个配置中都可以访问,所以你可以做的是使用正则表达式过滤器从路径中解析你的日期,例如使用 grok,你可以做类似的事情(注意:伪代码)

if [type] == "myType" {
   grok {
      match => {
          "path" => "%{MY_DATE_PATTERN:myTimeStampVar}"
      }
   }
}

有了这个,你现在在“myTimeStampVar”中有了你的变量,你可以在你的输出中使用它:

elasticsearch {
            host => "127.0.0.1"
            cluster => "logstash"
            index => "events-%{myTimeStampVar}"
        }

说了这么多,我不太清楚你为什么需要这个?我认为最好让 ES 为您完成这项工作。它会知道您日志的时间戳并相应地对其进行索引,以便您可以轻松访问它。但是,上面的设置应该适合你,我使用了一种非常相似的方法来解析客户端名称并在每个客户端的基础上创建子索引,例如:myIndex-%{client}-%{+YYYY.MM .dd

希望对您有所帮助,

阿图尔

编辑:我做了一些挖掘,因为我怀疑你担心你的日志因为在错误的时间被解析而被放入错误的索引中?如果这是正确的,解决方案不是从日志文件中解析出索引,而是从每个日志中解析出时间戳。

我假设您的每个日志行都有一个时间戳。 Logstash 将创建一个 @timestamp 字段,它是当前日期。所以这不等于索引。然而,解决这个问题的正确方法是改变 @timestamp 字段,而不是在日志行(已解析的行)中使用时间戳。这样 logstash 就会有正确的索引并将其放在那里。

关于elasticsearch - 在 Logstash 配置中每天为 Elasticsearch 创建一个新索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33800009/

相关文章:

elasticsearch - 使用 http 输入插件设置与 SSL 的通信 logstash

java - Spring 数据 Elasticsearch : Multiple Index with same Document

logstash - 结果有一个 grok 过滤器创建嵌套字段

elasticsearch - 如何使用grok模式从同一输入行中获取多个相似模式的条目?

oracle - 更新Elasticsearch中关于向我的数据库添加新文档的索引

elasticsearch - 如何通过使用logstash索引json文件?

elasticsearch - Logstash 不使用 Shield 写入 Elasticsearch

elasticsearch - Elasticsearch 1.7中的重新索引编制

elasticsearch - 如何在没有偏移的Elasticsearch中对嵌套对象进行分页?

javascript - react : Uncaught TypeError: Cannot read property 'setState' of undefined