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

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

 

Статья будет короткая, так как процесс очистки индексов в 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 утра.