ログにはAWS Elasticsearchを使用しています。ログは、Logstashを介して継続的にストリーミングされます。古いインデックスを定期的に削除する最良の方法は何ですか?
私が検索し、推奨されるさまざまなアプローチは次のとおりです。
ラムダを使用して古いインデックスを削除する- https://medium.com/@egonbraun/periodically-cleaning-elasticsearch-indexes-using-aws-lambda-f8df0ebf4d9f
スケジュールされたDockerコンテナーを使用- http://www.tothenew.com/blog/running-curator-in-docker-container-to-remove-old-elasticsearch-indexes/
これらのアプローチは、「15日以上経過したインデックスを削除する」などの基本的な要件にとってはやり過ぎのようです。
それを達成するための最良の方法は何ですか? AWSは調整可能な設定を提供していますか?
Elasticsearch 6.6は、Index Lifecycle Managerここを参照 と呼ばれる新しいテクノロジーをもたらします。各インデックスにはライフサイクルポリシーが割り当てられており、削除されるまでインデックスが特定のステージをどのように遷移するかを制御します。
たとえば、一連のATMからElasticsearchに指標データをインデックス化する場合、次のようなポリシーを定義できます。
技術はまだベータ段階ですが、おそらくこれからの道のりです。
キュレーターの実行はかなり軽くて簡単です。
ここには、Dockerfile、config、action-fileがあります。
https://github.com/zakkg3/curator
また、必要に応じて、キュレーターがお手伝いします(特に):
https://www.elastic.co/guide/en/elasticsearch/client/curator/current/index.html
以下は、15日以上経過したインデックスを削除するための典型的なアクションファイルです。
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: 15