目次
Curatorの1.2.0がリリースされました。
前回のCuratorの記事が古くなってしまった(1.1.0からコマンドのI/Fが変更された)ので 1.1.0および1.2.0に関する記事を翻訳しておきます。
ちなみに、Curatorとは、Elasticsearchに時系列のインデックス(例:LogstashやFluentdでログを保存)を保存している場合にそれらのインデックスを管理(削除したり、クローズしたり)するための便利なツールです。 Curatorの概要については、GitHubリポジトリか前回の記事をご覧ください。
Curator 1.1.0リリース (2014/06/13公開)
元記事:elasticsearch curator - version 1.1.0 released
Elasticsearch 1.0.0がリリースされ、新しい機能、Snapshot & Restoreが利用できるようになりました。 Snapshotはある時点でのインデックスの写真を撮るように、バックアップを作成することができます。 1.0.0が発表されてすぐに、この機能に関するリクエストが寄せられるようになりました。 「Curatorにスナップショットを追加して!」もしくは「いつCuratorでスナップショットが使えるようになる?」といった感じです。 これがあなたの要望なら、それはついに叶えられました。しかも他の追加機能も一緒にです。
新機能
Curatorの新機能は以下のとおりです。
- 新CLI構造
- スナップショット(Snapshot)
- エイリアス(Aliases)
- パターンによる除外インデックス指定
- 配置ルーティング(Allocation Routing)
- インデックスとスナップショットの表示
- リポジトリ管理(個別のスクリプトによる)
- ドキュメントWiki
新コマンドライン構造
注意:コマンドライン構造の変更とは、Curator 1.1.0以前のcron記述が動作しないことを意味します。Curator 1.1.0にアップグレードする場合はコマンドも修正が必要となるので注意してください。
シンプルにするために、commandsという概念を追加しました。 また、ヘルプの出力もわかりやすくなっています。 前のバージョンと同じタスクをCuratorは実行できますが、異なるフォーマットを用いるようになりました。
旧コマンド:
curator -d 30
新コマンド:
curator delete --older-than 30
コマンドは、フラグとは異なりハイフンを前に付けないことに注意してください。
また、似たような名前のフラグがあることに気をつけてください。
例えば、--older-than
フラグは多くのコマンドに利用できます。
指定される値は各ケースにおいて同一です。「指定された数よりも古いインデックス」となります。
新しいコマンドのリストは次のとおりです。
- alias
- allocation
- bloom
- close
- delete
- optimize
- show
- snapshot
コマンドのヘルプは次のコマンドで表示されます。
curator [COMMAND] --help
コマンドに関係あるフラグがすべて表示されます。
スナップショット(snapshots)
snapshot
コマンドで、存在しているリポジトリにインデックスのスナップショットを保存することができます。
Curatorはインデックス毎に1つのスナップショットを作成し、インデックスから名前をつけます。
例えば、インデックスの名前がlogstash-2014.06.10
の場合、スナップショットの名前はlogstash-2014.06.10
となります。
指定した条件を元に、シーケンシャルに、1つずつインデックスのスナップショットを作成していきます。
curator snapshot --older-than 20 --repository REPOSITORY_NAME
このコマンドは、20日以上古いインデックスすべてのスナップショットを作成し、REPOSITORY_NAME
で指定されたリポジトリに保存します。
es_repo_mgr
と呼ばれるリポジトリ作成を支援するスクリプトがCuratorには含まれています。
ファイルシステムおよびS3タイプのリポジトリ両方の作成を支援します。
さらに、古いインデックスのスナップショットを取ることができることに加えて、Curatorは最新のインデックスをアップロードする方法も提供します。 これは、Elasticsearch Marvelのインデックスをアップロードするときに便利です。 トラブルシューティングを目的として、パフォーマンスデータを他の人に見せる場合などです。
curator snapshot --most-recent 3 --prefix .marvel- --repository REPOSITORY_NAME
このコマンドでは、最新の3つのMarvelインデックスのスナップショットを指定されたリポジトリに保存できます。
エイリアス(aliases)
Curatorはすでに存在するエイリアスにインデックスを追加することも、削除することもできるようになりました。 ただし、エイリアスがすでに存在している必要があります。エイリアスの作成はできません。
last_week
という前の一週間のインデックスのエイリアスを保持していること想像してください。
この場合、次の2つのコマンドを利用することで、エイリアスを管理できます。
curator alias --alias-older-than 7 --alias last_week
curator alias --unalias-older-than 14 --alias last_week
新しく作られたインデックスがインデックステンプレートによって
自動的にエイリアスの一部となるようにElasticsearchに設定しておくと、さらに便利です。
この場合、新しいインデックスが自動的にthis_week
というエイリアスの一部になるようにしてあれば、以下のコマンドのみとなります。
curator alias --unalias-older-than 7 --alias this_week
this_week
とlast_week
のエイリアスのアップデートを保持できます。
パターンによる除外(exclude pattern)
時には、指定したインデックスを操作から除外したくなる場合もあるでしょう。
ここまでは、プレフィックスや日付によって選択されたインデックスのみを対象にしてきました。
そこで、--exclude-pattern
オプションです。これは、指定したインデックスを除いて処理を行うことができます。
logstash-2014.06.11
というインデックスを決して削除したくないとします。
この場合、次のコマンドのようになります。
curator delete --older-than 15 --exclude-pattern 2014.06.11
Curatorはデフォルトでlogstash-
というプレフィックスにマッチしますが、2014.06.11
というインデックスは対象外となります。
配置ルーティング(allocation routing)
Elasticsearchはノードにタグを付けることができます。
これらのタグはインデックスやシャードをクラスタのどこに配置するかをコントロールするために役立ちます。
一般的なユースケースだと、高性能なSSDドライブを持ったノードをインデキシングのために、ハードディスクを持った性能の低いマシンは検索頻度が低い古いインデックスを配置するといった場合です。
この場合、HDDノードには、elasticsearch.yml
にnode.tag: hdd
、SSDノードにはnode.tag: ssd
と設定されているべきです。
Curatorはこの時、インデックスをタグに基づいてオフピークの時間帯に再配置させることができます。
コマンド:
curator allocation --older-than 2 --rule tag=hdd
index.routing.allocation.require.tag=hdd
という設定が2日よりも古いインデックスに適用されます。
これは、インデックスのシャードがnode.tag: hdd
というノードに再配置される必要があると、Elasticsearchに伝えます。
インデックスとスナップショットの表示(show indices and snapshots)
これは、単にあなたの持っているインデックスやスナップショットがどんなものかを表示します。
curator show --show-indices
これは、デフォルトプレフィックスのlogstash-
にマッチするすべてのインデックスを表示します。
curator show --show-snapshots --repository REPOSITORY_NAME
これは、指定されたリポジトリにある、デフォルトプレフィックスのlogstash-
にマッチするすべてのスナップショットを表示します。
リポジトリ管理(repository management)
前に説明したとおり、es_repo_mgr
と呼ばれるヘルパースクリプトをCuratorは含んでいます。
現時点では、fs
とs3
タイプをサポートしています。
リポジトリを作る前に利用したいタイプのドキュメントを読むようにしてください。
例えば、fs
タイプのリポジトリを各ノードで使う場合は、同じ共有ファイルシステムに、同じパスでアクセスできなければなりません。
パスの指定は--location
です。
fs
タイプリポジトリの作成
es_repo_mgr create_fs --location '/tmp/REPOSITORY_LOCATION' --repository REPOSITORY_NAME
削除
es_repo_mgr delete --repository REPOSITORY_NAME
ドキュメントWiki
Curatorのドキュメントが更新され、オンラインにWiki形式でだれでも更新できるようになっています。 コマンドやフラグのより詳細の情報はこちらで見つけることができます。また、もし、興味があれば、ドキュメントを追加することもできます。
インストールと更新
Curator 1.1.0はPyPiリポジトリにあります。 インストールは以下のとおりです。
pip install elasticsearch-curator
バージョン1.0.0からアップグレードする場合は以下のとおりです。
pip uninstall elasticsearch-curator
pip install elasticsearch-curator
バージョン1.0.0よりも古いバージョンからのアップグレードは以下のとおりです。
pip uninstall elasticsearch-curator
pip uninstall elasticsearch
pip install elasticsearch-curator
pip uninstall elasticsearch
で、古いパイションモジュールをを削除します。
適切なバージョンが依存関係により再インストールされます。
まとめ
Curatorの新機能は素晴らしいです!このリリースは大きな改善です。
もし、トラブルや足りないものを見つけた場合はGitHub Issueに報告してください。
また、Curatorが便利だと思ったら、私たちに伝えてください。#elasticsearch
タグを付けてツイートしてください!
Curatorはまだ、始まったばかりです。Curator 2.0のロードマップを作業中です。ここまで読んでいただきありがとうございます。 Happy Curating!
Curator 1.2.0リリース(2014/07/24)
Curator v1.1.0のリリースから、数週間が経ちました。 私たちは、Curator 1.2.0をリリースしました。
新機能(new features)
- ユーザ指定の日付パターン:長い間リクエストされていた機能
- ウィークリーインデックスのサポート:これも長い間リクエストされていた機能
- 複数のログフォーマットオプション:Logstashフォーマットが利用可能
これらの変更はCuratorドキュメントにも記載されています。
更新(updates)
- ログ出力の整理:デフォルトのログ出力を整理しました。デバッグログはすべて表示されます。
- ドライランのログ出力の詳細化:テスト実行時に何が起きたかをわかりやすくしました。
日付パターンと--timestring
(date patterns and –timestring)
前のリリースで、セパレータ文字を利用して、インデックス名のエレメントを分離することで、日付を計算しました。 この設計の決定は、プログラムが管理するために設計されたLogstashのインデックスを使うのには簡単でした。 しかし、Curatorは時系列インデックス管理に成長しています。これは、異なる命名規則のインデックスを意味しています。
また、インターバルによって、日付の計算が必要になる場合もあります。
--time-unit
オプションが残っており、weeks
という単位を指定することもできます。
デフォルトの--timestring
オプションは、以前のコマンドと同様の動作をしなければなりません。次のようになります。
Time Unit | Timestring |
---|---|
days | %Y.%m.%d |
hours | %Y.%m.%d.%H |
weeks | %Y.%W |
これが意味するものは、もし、単位にhours
をした場合、--timestring
を指定しなかった場合は%Y.%m.%d.%H
となります。
これは、Pythonのstrftimeフォーマットで"年.月.日.時"を意味します。
同様に、weeks
を単位に指定した場合、Curatorはデフォルトの--timestring
は%Y.%W
となります。
この機能は、日付の間にセパレーター文字のないインデックスでも機能します。
例えば、production-20140724
のような日時インデックスがある場合、2日よりも古いインデックスに対するブルームフィルタっキャッシュのオフのコマンドは次のようになります。
curator bloom --prefix production- --older-than 2 --timestring %Y%m%d
この例で、デフォルトの単位はdays
であることに注意してください。hourly-2014072414
のような時間インデックスの場合は次のようになります。
curator bloom --prefix hourly- --older-than 2 --time-unit hours --timestring %Y%m%d%H
--separator
の置き換え
もし、Curatorの前のバージョンでカスタムセパレータ文字を利用していた場合、次のように変更すべきです。
前のコマンドでcerberus-2014-07-24
のようなインデックスがある場合、コマンドを--separator -
の用に置き換える必要があります。
新しいコマンドは次のとおりです。
curator delete --prefix cerberus- --older-than 30 --timestring %Y-%m-%d
年(%Y
)と月(%m
)と日(’%d’)の間にセパレータ文字を置くだけです。
これは、また、Curatorで以前は不可能であったことをできるようにもします。
異なるセパレータ文字の混在です。
logs-2014.07.24-14
というようなインデックスを処理するときに--timestring
は%Y.%m.%d-%H
のようになります.
--timestring
の詳細はCuratorのドキュメントをご覧ください。
フィードバック
これらの新しい機能はユーザのコメントやリクエストから来ています。もし、機能のリクエストやバグを発見したら、こちらまで連絡してください。
また、Twitterでもお待ちしています。私たちのTwitter IDは@elasticsearch
です。
Happy Curating!
comments powered by Disqus
See Also by Hugo
- Elasticsearchの新しいJavaクライアント(2024年3月版)
- 辞書の更新についての注意点
- ElasticsearchのAnalyze APIのVisual Studio Codeのクライアントプラグイン
- 2019年のElastic StackとElastic
- Senseの歴史 - Sense 2.0.0-beta1の紹介(日本語訳)