当"时间单位"时,ELK策展人如何管理月/周指数? ="天"

时间:2018-04-06 19:09:02

标签: elasticsearch-5 elasticsearch-curator

我们在公司的标准elasticsearch和curator实现之上有一个自定义包装器。我想知道策展人处理"每月/每周"当默认"时间单位"设置为"天"。

**我无法覆盖默认的"时间单位"

以下是我们的月/周指数如何命名的示例格式

每月索引的格式

logstash-test-monthly-2018.01
logstash-test-monthly-2018.02
logstash-test-monthly-2018.03
logstash-test-monthly-2018.04
...
...
logstash-test-monthly-2018.12

每周索引的格式

logstash-test-weekly-2018.01
logstash-test-weekly-2018.02
...
...
...
logstash-test-weekly-2018.51
logstash-test-weekly-2018.52

Delete_Index.yml - 策展人删除说明

actions:
  1:
    action: delete_indices
    options:
      ignore_empty_list: true
    filters:
      - exclude: true
        filtertype: kibana
      - exclude: false
        kind: regex
        filtertype: pattern
        value: .*-monthly-.*
      - range_to: 0
        filtertype: period
        source: name
        range_from: -60
        period_type: relative
        timestring: '%Y.%m.%d'
        exclude: true
        unit: days
    description: Delete indices more than X days old
  2:
    action: delete_indices
    options:
      ignore_empty_list: true
    filters:
      - exclude: true
        filtertype: kibana
      - exclude: false
        kind: regex
        filtertype: pattern
        value: .*-weekly-.*
      - range_to: 0
        filtertype: period
        source: name
        range_from: -30
        period_type: relative
        timestring: '%Y.%m.%d'
        exclude: true
        unit: days

实施上述配置,每月索引保留期为60天,每周索引保留期为30天。

配置在** 08年4月4日执行,结果是**

执行后保留每月索引

logstash-test-monthly-2018.03
logstash-test-monthly-2018.04

由于以上索引^^仅包含31 + 4 = 35天的索引数据,而不是预期的60天。

我期待策展人将保留以下索引

logstash-test-monthly-2018.02
logstash-test-monthly-2018.03
logstash-test-monthly-2018.04

有人可以解释为什么策展人无法保留60天的索引吗?

1 个答案:

答案 0 :(得分:4)

TL; DR :2月的天数较短,age计算是秒数的倍数* unit的适当数量。< / p>

所有这些都在Elastic网站的age filter documentation中进行了解释。

  

年龄过滤器与期间过滤器

     

时间差的计算方法可能会导致沮丧。

     

将单位设为monthsunit_count3实际计算   年龄为3*30*24*60*60,即7776000秒。这可能很大   应对。如果日期为2017-01-01T02:30:00Z,或1483237800在纪元   时间,减去7776000秒使1475461800,即。{   2016-10-03T02:30:00Z。如果你试图匹配monthly指数,   index-2016.12index-2016.112016.102016.09等,然后两者都有   index-2016.09index-2016.10将是截止日期older。   这可能会导致意外行为。

     

这可能导致问题的另一种方法是使用weeks。每周指数可能   从周日或周一开始。 age过滤器的计算不需要   考虑到这一点,仅仅测试它们之间的区别   执行时间和索引上的时间戳(来自任何来源)。

     

另一种选择索引和快照的方法是period过滤器,   这可能是选择数周和数月的更好选择   补偿这些差异。

一旦您了解age计算不超过unit_count * unit的适当秒数,那么保留是有道理的发生的方式。如上所述,您可以使用period过滤器做得更好,因为它适用于完整的日,周,月和年。