146 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Markdown
		
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Markdown
		
	
	
| ---
 | ||
| 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 будет автоматически управлять вашими индексами, и вам не придется вручную заниматься ротацией логов. 😊 |