wiki-js/DevOps/ELK/Rotation-logs-ILM.md

6.4 KiB
Raw Blame History

title description published date tags editor dateCreated
Ротация логов с помощью Lificycle ILM true 2025-03-13T08:16:59.504Z ilm, elk, efk markdown 2025-03-13T08:16:59.504Z

Ротация логов в ELK

Конечно! Давайте разберем настройку ротации логов с помощью ILM (Index Lifecycle Management) в Elasticsearch простым языком. Это пошаговая инструкция, которая поможет вам настроить автоматическое управление жизненным циклом индексов (логов).


1. Что такое ротация логов с ILM?

Ротация логов — это процесс автоматического создания новых индексов (например, когда текущий индекс становится слишком большим или старым) и удаления старых индексов, чтобы освободить место. ILM помогает автоматизировать этот процесс.


2. Основные шаги настройки ILM для ротации логов:

Шаг 1: Создайте алиас для индексов

Алиас — это "псевдоним", который будет указывать на текущий активный индекс. Все новые данные будут писаться в индекс, на который указывает этот алиас.

Пример:

PUT _aliases
{
  "actions": [
    {
      "add": {
        "index": "logs-2023.10.01-000001",  # текущий индекс
        "alias": "logs-alias"                # алиас
      }
    }
  ]
}

Шаг 2: Создайте политику ILM

Политика ILM определяет, что делать с индексами на разных этапах их жизни (например, когда переходить на новый индекс, когда удалять старые данные).

Пример политики:

PUT _ilm/policy/logs-policy
{
  "policy": {
    "phases": {
      "hot": {                               # этап "горячих" данных
        "actions": {
          "rollover": {                       # ротация индекса
            "max_size": "50gb",               # ротация при достижении 50 ГБ
            "max_age": "7d"                   # или через 7 дней
          }
        }
      },
      "delete": {                             # этап удаления
        "min_age": "30d",                     # удалить через 30 дней
        "actions": {
          "delete": {}                        # действие — удалить индекс
        }
      }
    }
  }
}

Шаг 3: Создайте шаблон индекса

Шаблон индекса автоматически применяет настройки (например, политику ILM и алиас) к новым индексам, которые соответствуют определенному шаблону имени.

Пример шаблона:

PUT _index_template/logs-template
{
  "index_patterns": ["logs-*"],              # шаблон имени индекса
  "template": {
    "settings": {
      "index.lifecycle.name": "logs-policy", # применяем политику ILM
      "index.lifecycle.rollover_alias": "logs-alias"  # указываем алиас
    }
  }
}

Шаг 4: Создайте начальный индекс

Создайте первый индекс, который будет использоваться для записи данных. Убедитесь, что он соответствует шаблону и имеет алиас.

Пример:

PUT logs-2023.10.01-000001
{
  "aliases": {
    "logs-alias": {}                        # назначаем алиас
  }
}

Шаг 5: Настройте сбор логов

Убедитесь, что ваши логи (например, из Filebeat, Logstash или другого источника) пишутся в алиас logs-alias. Это гарантирует, что данные будут попадать в текущий активный индекс.


Шаг 6: Проверка работы ILM

  • Когда текущий индекс достигнет 50 ГБ или пройдет 7 дней, ILM создаст новый индекс (например, logs-2023.10.08-000002) и перенаправит запись на него.
  • Старые индексы будут автоматически удаляться через 30 дней.

3. Как проверить, что все работает?

  • Проверьте статус ILM:
    GET _ilm/status
    
  • Посмотрите информацию по конкретному индексу:
    GET logs-2023.10.01-000001/_ilm/explain
    
  • Убедитесь, что новые индексы создаются, а старые удаляются.

4. Пример полного цикла:

  1. Создаете алиас logs-alias и первый индекс logs-2023.10.01-000001.
  2. Данные начинают писаться в logs-2023.10.01-000001.
  3. Через 7 дней или при достижении 50 ГБ создается новый индекс logs-2023.10.08-000002, и данные начинают писаться туда.
  4. Через 30 дней индекс logs-2023.10.01-000001 автоматически удаляется.

5. Частые ошибки:

  • Алиас не указан: Убедитесь, что алиас указан в шаблоне индекса и в самом индексе.
  • Политика не применяется: Проверьте, что политика ILM указана в шаблоне индекса.
  • Нет данных для ротации: Убедитесь, что данные пишутся в алиас.

Если все настроено правильно, ILM будет автоматически управлять вашими индексами, и вам не придется вручную заниматься ротацией логов. 😊