Политика жизненного цикла индекса

Я хотел бы создать политику Hot-warm, и индекс должен обновляться, когда размер индекса составляет 20 ГБ или max_age равен 30 дням, НО, если условие размера возникает до условия возраста, индекс должен быть перенесен, но данные должны оставаться в горячем узле до тех пор, пока не произойдет условие max_age. а затем данные должны быть в теплых данных в течение 5 месяцев, а затем удалены.

Пример: если по прошествии 15 дней индекс составляет 20 ГБ, выполняется обновление индекса, но не покидает узел горячих данных до тех пор, пока его возраст не достигнет 30 дней, поэтому следует оставаться в горячих данных еще 15 дней, прежде чем переходить в теплые данные (надеюсь, я объясню это хорошо: sweat_smile :)

ТАК Я создал эту политику

PUT _ilm/policy/hot-warm-cold-delete-6months-policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_size":"20gb",
            "max_age":"30d"
          },
          "set_priority": {
            "priority": 50
          }
        }
      },
      "warm": {
        "min_age": "30d",
        "actions": {
          "forcemerge": {
            "max_num_segments": 1
          },
          "shrink": {
            "number_of_shards": 1
          },
          "allocate": {
            "require": {
              "data": "warm"
            }
          },
          "set_priority": {
            "priority": 25
          }
        }
      },
      "delete": {
        "min_age": "150d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

но, если я хорошо понимаю, это означает, что индекс будет отправлен в теплые данные через 30 дней после ролловера, а не с даты создания, и он не работает так, как я хочу точно

Не могли бы вы сказать мне, возможно ли то, что я пытаюсь сделать с ILM?

Спасибо за вашу помощь


person abdelhalim    schedule 30.12.2020    source источник


Ответы (1)


Вы можете обойти дату пролонгации с помощью _ 1_:

Если указано, это метка времени, используемая для расчета возраста индекса для его фазовых переходов. Используйте этот параметр, если вы создаете новый индекс, содержащий старые данные, и хотите использовать исходную дату создания для расчета возраста индекса. Указывается как значение эпохи Unix.

Вы можете установить это значение вручную или использовать _ 2_ из имени индекса:

Установите значение true, чтобы анализировать дату создания из имени индекса. Эта дата создания используется для расчета возраста индекса фазовых переходов. Имя индекса должно соответствовать шаблону ^.*-{date_format}-\\d+, где date_format равно yyyy.MM.dd, а конечные цифры необязательны. Индекс, который был пролонгирован, обычно соответствует полному формату, например logs-2016.10.31-000002. Если имя индекса не соответствует шаблону, создание индекса завершится ошибкой.

Таким образом, с правильными именами индексов это должно быть выполнимо (хотя это IMO, скорее, обходной путь, чем функция).

person xeraa    schedule 31.12.2020
comment
Спасибо за ответ @xeraa. У вас есть пример того, как это настроить, потому что я не понял, где мне добавить эту конфигурацию (политику или шаблон)! - person abdelhalim; 31.12.2020
comment
Я также хотел бы знать, работает ли он только с политиками, которые я создаю вручную, или может работать также с интегрированными политиками, например, с политикой, созданной winlogbeat, packetbeat ... и т. Д. - person abdelhalim; 31.12.2020
comment
Вы должны установить это в шаблоне индекса, поэтому он применяется ко всем индексам, для которых вы хотите использовать это правило. Тогда любой индекс с этим параметром, управляемый ILM, должен его использовать. - person xeraa; 01.01.2021