Estamos utilizando AWS Elasticsearch para registros. Los registros se transmiten a través de Logstash continuamente. ¿Cuál es la mejor manera de eliminar periódicamente los índices antiguos?
He buscado y varios enfoques recomendados son:
Use lambda para eliminar índices antiguos: https://medium.com/@egonbraun/periodically-cleaning-elasticsearch-indexes-using-aws-lambda-f8df0ebf4d9f
Use contenedores docker programados: http://www.tothenew.com/blog/running-curator-in-docker-container-to-remove-old-elasticsearch-indexes/
Estos enfoques parecen una exageración para un requisito tan básico como "eliminar índices de más de 15 días".
¿Cuál es la mejor manera de lograr eso? ¿AWS proporciona alguna configuración que pueda modificar?
Elasticsearch 6.6 trae una nueva tecnología llamada Index Lifecycle Manager Ver aquí . A cada índice se le asigna una política de ciclo de vida, que rige cómo el índice pasa por etapas específicas hasta que se eliminan.
Por ejemplo, si está indexando datos de métricas de una flota de cajeros automáticos en Elasticsearch, puede definir una política que diga:
La tecnología aún se encuentra en etapa beta, sin embargo, probablemente sea el camino a seguir a partir de ahora.
Ejecutar curator es bastante ligero y fácil.
Aquí puede encontrar un Dockerfile, config y action-file.
https://github.com/zakkg3/curator
Además, Curator puede ayudarte si lo necesitas (entre otros):
https://www.elastic.co/guide/en/elasticsearch/client/curator/current/index.html
Aquí hay un archivo de acción típico para eliminar índices de más de 15 días:
actions: 1: action: delete_indices description: >- Delete indices older than 15 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 disable_action: True filters: - filtertype: pattern kind: prefix value: logstash- - filtertype: age source: name direction: older timestring: '%Y.%m.%d' unit: days unit_count: 15Seguí la documentación de elasticsearch-curator para instalar el paquete:
https://www.elastic.co/guide/en/elasticsearch/client/curator/current/pip.html
Luego usé el ejemplo base de AWS de cómo automatizar la limpieza de índices usando la autenticación basada en firma proporcionada por el paquete request_aws4auth:
https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/curator.html
Funcionó a las mil maravillas.
Puede decidir ejecutar esto dentro de una ventana acoplable lambda o incluirlo en su propia CLI de DevOps.