--- title: Ротация логов с помощью Lificycle description: ILM published: true date: 2025-03-13T08:16:59.504Z tags: ilm, elk, efk editor: markdown dateCreated: 2025-03-13T08:16:59.504Z --- # Ротация логов в ELK Конечно! Давайте разберем настройку ротации логов с помощью ILM (Index Lifecycle Management) в Elasticsearch простым языком. Это пошаговая инструкция, которая поможет вам настроить автоматическое управление жизненным циклом индексов (логов). --- ### **1. Что такое ротация логов с ILM?** Ротация логов — это процесс автоматического создания новых индексов (например, когда текущий индекс становится слишком большим или старым) и удаления старых индексов, чтобы освободить место. ILM помогает автоматизировать этот процесс. --- ### **2. Основные шаги настройки ILM для ротации логов:** #### **Шаг 1: Создайте алиас для индексов** Алиас — это "псевдоним", который будет указывать на текущий активный индекс. Все новые данные будут писаться в индекс, на который указывает этот алиас. Пример: ```bash PUT _aliases { "actions": [ { "add": { "index": "logs-2023.10.01-000001", # текущий индекс "alias": "logs-alias" # алиас } } ] } ``` --- #### **Шаг 2: Создайте политику ILM** Политика ILM определяет, что делать с индексами на разных этапах их жизни (например, когда переходить на новый индекс, когда удалять старые данные). Пример политики: ```bash 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 и алиас) к новым индексам, которые соответствуют определенному шаблону имени. Пример шаблона: ```bash PUT _index_template/logs-template { "index_patterns": ["logs-*"], # шаблон имени индекса "template": { "settings": { "index.lifecycle.name": "logs-policy", # применяем политику ILM "index.lifecycle.rollover_alias": "logs-alias" # указываем алиас } } } ``` --- #### **Шаг 4: Создайте начальный индекс** Создайте первый индекс, который будет использоваться для записи данных. Убедитесь, что он соответствует шаблону и имеет алиас. Пример: ```bash 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: ```bash GET _ilm/status ``` - Посмотрите информацию по конкретному индексу: ```bash 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 будет автоматически управлять вашими индексами, и вам не придется вручную заниматься ротацией логов. 😊