Saltar al contenido

Eliminando índices antiguos en elasticsearch

Esta reseña fue analizado por especialistas para que tengas la garantía de la veracidad de nuestro tutorial.

Solución:

Curator sería una pareja ideal aquí. Puede encontrar el enlace aquí: https://github.com/elastic/curator

Un comando como el siguiente debería funcionar bien:

curator --host  delete indices --older-than 30 --prefix "twitter-" --time-unit days  --timestring '%Y-%m-%d'

Puede mantener esto en el CRON para eliminar los índices de vez en cuando.

Puede encontrar algunos ejemplos y documentos aquí: https://www.elastic.co/guide/en/elasticsearch/client/curator/current/examples.html

Si está utilizando la versión 5.x de elasticsearch, debe instalar la versión 4.x de curator. Puede ver la compatibilidad de versiones y los pasos de instalación en la documentación.

Una vez instalada. Entonces solo ejecuta el comando

curator --config path/config_file.yml [--dry-run] path/action_file.yml

Curator proporciona un indicador de ejecución en seco para generar solo lo que Curator habría ejecutado. La salida estará en su archivo de registro que ha definido en el archivo config.yml. Si no inicia sesión key definido en config_file.yml, luego Curator generará una salida a la consola. Para eliminar los índices, ejecute el comando anterior sin el indicador –dry-run

El archivo de configuración config_file.yml es

---
client:
  hosts:
   - 127.0.0.1
  port: 9200
logging:
  loglevel: INFO
  logfile: "/root/curator/logs/actions.log"
  logformat: default
  blacklist: ['elasticsearch', 'urllib3']

El archivo de acción action_file.yml es

---
actions:
  1:
    action: delete_indices
    description: >-
      Delete indices older than 7 days (based on index name), for logstash-
      prefixed indices. Ignore the error if the filter does not result in an
      actionable list of indices (ignore_empty_list) and exit cleanly.
    options:
      ignore_empty_list: True
      timeout_override:
      continue_if_exception: False
      disable_action: False
    filters:
    - filtertype: pattern
      kind: prefix
      value: logstash-
      exclude:
    - filtertype: age
      source: name
      direction: older
      timestring: '%Y.%m.%d'
      unit: days
      unit_count: 7
      exclude:

Si desea eliminar los índices semanales, mensuales, etc. automáticamente. Luego solo escribe el script bash como

#!/bin/bash
# Script to delete the log event indices of the elasticsearch weekly

#This will delete the indices of the last 7 days
curator --config /path/config_file.yml /path/action_file.yml

Coloque un script de shell en una de estas carpetas: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly or /etc/cron.weekly y tu trabajo está hecho.

NOTA: Asegúrese de usar la sangría correcta en sus archivos de configuración y acción. De lo contrario, no funcionará.

Uso un script bash, solo cambia el 30 con el número de días que deseas conservar

#!/bin/bash

# Zero padded days using %d instead of %e
DAYSAGO=`date --date="30 days ago" +%Y%m%d`
ALLLINES=`/usr/bin/curl -s -XGET http://127.0.0.1:9200/_cat/indices?v | egrep logstash`

echo
echo "THIS IS WHAT SHOULD BE DELETED FOR ELK:"
echo

echo "$ALLLINES" | while read LINE
do
  FORMATEDLINE=`echo $LINE | awk ' print $3 ' | awk -F'-' ' print $2 ' | sed 's/.//g' ` 
  if [ "$FORMATEDLINE" -lt "$DAYSAGO" ]
  then
    TODELETE=`echo $LINE | awk ' print $3 '`
    echo "http://127.0.0.1:9200/$TODELETE"
  fi
done

echo
echo -n "if this make sence, Y to continue N to exit [Y/N]:"
read INPUT
if [ "$INPUT" == "Y" ] || [ "$INPUT" == "y" ] || [ "$INPUT" == "yes" ] || [ "$INPUT" == "YES" ]
then
  echo "$ALLLINES" | while read LINE
  do
    FORMATEDLINE=`echo $LINE | awk ' print $3 ' | awk -F'-' ' print $2 ' | sed 's/.//g' `
    if [ "$FORMATEDLINE" -lt "$DAYSAGO" ]
    then
      TODELETE=`echo $LINE | awk ' print $3 '`
      /usr/bin/curl -XDELETE http://127.0.0.1:9200/$TODELETE
      sleep 1
      fi
  done
else 
  echo SCRIPT CLOSED BY USER, BYE ...
  echo
  exit
fi

Aquí tienes las comentarios y calificaciones

Nos puedes añadir valor a nuestra información participando con tu experiencia en las notas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *