Как стереть индексы из Elasticsearch с помощью bash-скрипта? - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь создать скрипт, который просматривает все мои индексы из Elasticsearch, затем берет имя индекса, вырезает из него дату и помещает его в файл в каталоге / root. После этого скрипт сравнивает даты из файла с датой старше 60 дней и удаляет старые индексы.

Я могу перетащить даты из имен индексов в файл в каталоге / root, но когда я пытаюсь сравнить его с датой 60 дней назад, она не работает.

#!/bin/bash

#storing all the dates that currently in logstash in a file

show_logs=$(curl 'localhost:9200/_cat/indices?v'| grep filebeat |cut -d"-" -f2 $)
echo result has been stored in a file
# storing the date we want to check aginst in a variable

Date6DaysAgo=$(date +%Y.%m.%d --date='6 day ago' >/root/DateAgo.logstash)
echo date 60 days ago is stored in a file
while read p
do
if [ $(date +%s -r /root/DateAgo.logstash) -ge $(date +%s -r /root/CurrentDates)
echo this date is newer than 6 days ago
fi
done < /root/CurrentDates.logstash

Мой ожидаемый результат заключается в том, что скрипт сможет стирать индексы старше 60 дней (дата отображается в названии файла), но в настоящее время я застрял, потому что по какой-то причине вывод кода показывает, что все файлы в порядке (для тестирования я использовал 6 дней).

Текущий результат:

this date is newer than 6 days ago
this date is newer than 6 days ago
this date is newer than 6 days ago
this date is newer than 6 days ago
this date is newer than 6 days ago
this date is newer than 6 days ago
this date is newer than 6 days ago
this date is newer than 6 days ago

1 Ответ

0 голосов
/ 27 июня 2019

Если вы не возражаете, я предлагаю вам использовать Elastic ILM (Index Lifecycle Management).Вы можете сделать это в управлении kibana или с помощью API.

  1. Создайте свою политику

    curl -XPUT "http://localhost:9200/_ilm/policy/your_policy" -H 'Content-Type: application/json' -d'{ "policy": { "phases": { "delete": { "min_age": "60d", "actions": { "delete": {} } } } }}'
    
  2. Поместите свою политику в индекс

    curl -XPUT "http://localhost:9200/filebeat*/_settings" -H 'Content-Type: application/json' -d'{ "index.lifecycle.name": "your_policy"}'
    
  3. Запустить запуск или остановить политику

    curl -XPOST "http://localhost:9200/_ilm/start"
    

    Или

    curl -XPOST "http://localhost:9200/_ilm/stop"
    

Это установит политику в filebeat * ион будет удален через 60 дней после пролонгации.

Может помочь (^^)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...