docs: create DevOps/ELK/Rotation-logs-ILM
parent
f1bfc53bb5
commit
3e4620a388
|
|
@ -0,0 +1,146 @@
|
||||||
|
---
|
||||||
|
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 будет автоматически управлять вашими индексами, и вам не придется вручную заниматься ротацией логов. 😊
|
||||||
Loading…
Reference in New Issue