Очистка elasticsearch с помощью curator

Моя статья по установке и настройке системы сбора логов на основе ELK Stack получилась не полной без одного важного раздела. Сегодня расскажу, как настроить автоматическую очистку индексов elasticsearch с помощью curator. С этим столкнется каждый, кто будет эксплуатировать систему, так как она очень требовательна к ресурсам. Очистка старых индексов увеличивает быстродействие.

Углубленный онлайн-курс по MikroTik.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Статья будет короткая, так как процесс очистки индексов в elasticsearch с помощью curator в базовом варианте очень прост.

Установка curator

Для начала установим curator. Сделать это можно разными способами. Самый простой - из репозитория packages.elastic.co от авторов продукта. Подключим его в CentOS 7.

# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
# mcedit /etc/yum.repos.d/curator.repo
[curator-5]
name=CentOS/RHEL 7 repository for Elasticsearch Curator 5.x packages
baseurl=https://packages.elastic.co/curator/5/centos/7
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

Подключаем репозиторий в Debian 8/Ubuntu

# wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
# mcedit /etc/apt/sources.list.d/curator.list
deb [arch=amd64] https://packages.elastic.co/curator/5/debian stable main

Отдельный репозиторий для Debian 9

# deb [arch=amd64] https://packages.elastic.co/curator/5/debian9 stable main

Устанавливаем curtator:

# yum install elasticsearch-curator
# apt update && apt install elasticsearch-curator

Так же curator можно установить через pip. Как установить pip в CentOS 7 я рассказывал отдельно. Для Debian/Ubuntu достаточно просто выполнить:

# apt install python-pip

Установка curator через pip:

# pip install elasticsearch-curator

Настройка curator для очистки elasticsearch

Сделаем для примера простое задание на закрытие и удаление индексов с шаблоном nginx-* старше 14-ти дней. Для этого создадим директорию для конфигов curator и сами конфиги.

# mkdir /etc/curator
# touch /etc/curator/action.yml
# touch /etc/curator/config.yml

Заполняем файлы следующим содержимым. Сначала общий конфиг.

# mcedit /etc/curator/config.yml
client:
  hosts:
    - 127.0.0.1
  port: 9200
  url_prefix:
  use_ssl: False
  certificate:
  client_cert:
  client_key:
  ssl_no_validate: False
  http_auth:
  timeout: 30
  master_only: False

logging:
  loglevel: INFO
  logfile:
  logformat: default
  blacklist: ['elasticsearch', 'urllib3']

Дальше файл с необходимыми действиями:

# mcedit /etc/curator/action.yml
actions:
  1:
    action: close
    description: >-
      Close indices older than 14 days (based on index name).
    options:
      ignore_empty_list: True
      delete_aliases: False
      disable_action: False
    filters:
    - filtertype: pattern
      kind: prefix
      value: nginx-
    - filtertype: age
      source: name
      direction: older
      timestring: '%Y.%m.%d'
      unit: days
      unit_count: 14

  2:
    action: delete_indices
    description: >-
      Delete indices older than 14 days (based on index name).
    options:
      ignore_empty_list: True
      disable_action: False
    filters:
    - filtertype: pattern
      kind: prefix
      value: nginx-
    - filtertype: age
      source: name
      direction: older
      timestring: '%Y.%m.%d'
      unit: days
      unit_count: 14

Обращаю внимание на форматирование файла. Отступы в начале строки важны. Они должны быть именно такие, как у меня в примере.

Конфиг сделан на основе примеров из официальной документации. Рекомендую все подробности искать там. Запускаем очистку:

# /usr/bin/curator --config /etc/curator/config.yml /etc/curator/action.yml

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

# crontab -e
4 4 * * * /usr/bin/curator --config /etc/curator/config.yml /etc/curator/action.yml

Очистка индексов будет выполняться каждый день в 4 утра.

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

19 комментариев

  1. Руслан

    Зачем чистить индексы куратором зачем??? Из под коробки в новой версии elastic есть ротация и отлично работает!

    • В смысле зачем? Функционала по очистке индексов не было раньше. Он только появился.

      • Аноним

        Так я и говорю про сейчас, обновляется эластик и все будет норм

        • Не всегда можно взять и обновить кластер на новую версию. Можно потерять весь архив данных.

      • Аноним

        А не подскажете, в какой версии он появился? И как его настроить.

  2. 4 4 * * * /usr/bin/curator --config /etc/curator/config.yml /etc/curator/action.yml
    Очистка индексов будет выполняться каждый день в 4 утра.

    Так будет в 04-04 каждый день)

    Мелочь, но.
    0 4 * * * /usr/bin/curator --config /etc/curator/config.yml /etc/curator/action.yml
    Очистка индексов будет выполняться каждый день в 4 утра.

    Спасибо за статью.

    • Так то да, но лично я минуты никогда в 0 не ставлю, чтобы снизить вероятность пересечения задач по крону. Всегда разброс в минутах делаю.

  3. Если необходимо очистить одним правилом несколько индексов, можно использовать regex примерно так:

        filters:
        - filtertype: pattern
          kind: regex
          value: '^(nginx-|postfix-|dovecot-).*$'
    
  4. Кто-то встречал такой пр и запуске отработке куратора возникает ошибка

    "Unable to create client connection to Elasticsearch. Error: Elasticsearch version 6.6.2 incompatible with this version of Curator (6.6.2)"

    Я так понял что это две ошибки
    1) Не может подключится к Elasticsearch - хотя айпи правильный - что может быть ?
    2) Вторую ошибку я не могу понять

    • Тут же явно написано, что версия Elasticsearch 6.6.2 не совместима с версией Curator 6.6.2. Звучит странно, так как версии, судя по всему, одинаковые. Но может там нумерация не параллельная. Попробуйте обновить Curator. Я не видел такой ошибки ни разу.

  5. Спасибо за статью. Советую попробовать https://www.elastic.co/guide/en/kibana/current/index-lifecycle-policies.html. Сильно упростило жизнь.

  6. Аноним

    /usr/local/bin/curator --config /etc/curator/config.yml /etc/curator/action.yml
    -bash: /usr/local/bin/curator: No such file or directory

    • Станислав

      Нужно путь указывать /usr/bin/curator —config /etc/curator/config.yml /etc/curator/action.yml (без local) по дефолту ставить туда он.

  7. Кроме того у меня нет nginx-* а есть только filebeat, metricbeat, packetbeat, heartbeat, Я взял и добавил их вместо nginx-*, в результате сообщила, что действия была пропущена, из-за Skipping action "close" due to empty list:

  8. У меня кроме nginx, есть ещё apache2, mysql и т.д. Как я могу добавить их на этот action.yml

  9. Было бы интересно почитать про бекап индексов. По это теме тяжело нормальные гайды найти

  10. Станислав

    Я так понял что это только удаление. А статейки по индексов в эластике не планируется?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar