4

我已经对我的fluentd.*索引设置了一个简单的 ILM 策略,以便在(用于测试 - )短时间内删除。

工业光魔:

PUT _ilm/policy/fluentd
{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "rollover": {
            "max_age": "1d",
            "max_size": "1gb"
          },
          "set_priority": {
            "priority": 100
          }
        }
      },
      "delete": {
        "min_age": "4d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

索引模板:

PUT _template/fluentd
{
  "order": 0,
  "index_patterns": [
    "fluentd.*"
  ],
  "settings": {
    "index": {
      "lifecycle": {
        "name": "fluentd"
      }
    }
  },
  "aliases": {
    "fluent": {}
  }
}

通过这些设置,我预计 ES 会删除 5-6 天之前的索引,但 ES 中仍有 3 周前的索引。目前,它表示该 ILM 政策有 108 个链接指数。

它实际上在做什么,似乎它根本没有做任何事情......如何在 x 天后删除索引?

我首先尝试使用“索引模板”,但它没用,它不会将设置应用于每个索引(可能是但仅在创建时????)。

然后我手动将 ILM 放在索引上(另一个错误:您无法选择所有索引并点击“添加 ILM 策略” - 您需要逐个添加策略),这需要我单击大约 600 次。

现在的问题是,我定义了“热”阶段但它没有触发(它有问题?) - 因为热阶段没有触发(我设置为“创建索引后 1 天后翻转”) - 删除阶段也没有。当我删除热阶段并将 ILM 再次应用于索引时,仅删除 - 它起作用了!但是添加和删除所有这些都是错误的,我得到了 Ooops,这里和那里出现了一些错误错误。

我不明白为什么当我更改 ILM 策略中的某些内容时,我必须删除 ILM 并将其重新应用到每个索引。这是1000%不方便。

ES 确实需要做一些工作,它仍然是测试版,我得到了很多状态码 500,尽管我直接在 Elastic Cloud 上使用最新版本。

4

2 回答 2

6

通过这些设置,我预计 ES 会删除 5-6 天之前的索引,但 ES 中仍有 3 周前的索引。目前,它表示该 ILM 政策有 108 个链接指数。

使用您的设置,删除阶段从rollover的第 4 天开始。如果您想在“索引创建”的第 4 天开始删除阶段,您需要从热阶段删除翻转操作:

{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "set_priority": {
            "priority": 100
          }
        }
      },
      "delete": {
        "min_age": "4d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

我首先尝试使用“索引模板”,但它没用,它不会将设置应用于每个索引(可能是但仅在创建时????)。

是的,它适用于索引创建。

然后我手动将 ILM 放在索引上(另一个错误:您无法选择所有索引并点击“添加 ILM 策略” - 您需要逐个添加策略),这需要我单击大约 600 次。

Kibana 不允许您将 ILM 策略应用于所有索引,但 elasticsearch API 允许!只需打开一个 kibana 开发工具并运行以下请求:

PUT fluentd.*/_settings
{
  "index": {
    "lifecycle": {
      "name": "fluentd"
    }
  }
}

现在的问题是,我定义了“热”阶段但它没有触发(它有问题?) - 因为热阶段没有触发(我设置为“创建索引后 1 天后翻转”) - 删除阶段也没有。当我删除热阶段并将 ILM 再次应用于索引时,仅删除 - 它起作用了!但是添加和删除所有这些都是错误的,我得到了 Ooops,这里和那里出现了一些错误错误。

如果未触发翻转阶段,则 ILM 无法进行。

我不明白为什么当我更改 ILM 策略中的某些内容时,我必须删除 ILM 并将其重新应用到每个索引。这是1000%不方便。

因为 ILM 定义缓存在每个索引上。请参阅文档:https ://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-index-lifecycle.html#ilm-phase-execution

于 2020-12-09T15:42:08.437 回答
1

有点晚了,但也许它会帮助别人。

另一个原因可能是这里提到的:

ILM 并不是真的打算用于 1m 生命周期。我不相信你会实现你想要的行为。我的理解是,ILM 是一个机会主义的后台任务,它不是抢占式的,因此不会在确切的时间范围内执行。

它的设计目的是按小时或天的顺序工作,而不是几分钟。

我的索引也有同样的情况,我检查了 - 索引被删除了,但比我坐起来晚了。

于 2021-08-10T14:18:11.547 回答