Curator は、オープンソースの Elasticsearch によって提供されるインデックス管理ツールです。 このツールを使用すると、インデックスの作成、削除、無効化、およびインデックスセグメントのマージを実行できます。 このトピックでは、Curator のインストール方法と提供される機能について説明します。 Curator を使用して、シングルトン コマンドライン インターフェース(CLI)の実行、crontab を使用したタスクのスケジュール、ホットデータとコールドデータの分離、ホットノードからウォームノードへのインデックスの移行を実行できます。
Curator のインストール
前提条件
Alibaba Cloud Elasticsearch クラスタが作成されていること。
詳細については、「Alibaba Cloud Elasticsearch クラスタの作成」をご参照ください。
Alibaba Cloud Elastic Compute Service (ECS) インスタンスが作成され、Python 環境が準備されていること。
この例では、64 ビット CentOS 7.3 を実行する ECS インスタンスを使用します。 作成された ECS インスタンスは、Elasticsearch クラスタと同じリージョン、ゾーン、および仮想プライベートクラウド (VPC) に存在する必要があります。 詳細については、「[カスタム起動] タブでインスタンスを作成する」をご参照ください。
手順
ECS インスタンスに接続します。 詳細については、「パスワードまたはキーを使用して Linux インスタンスに接続する」をご参照ください。
説明この例では、通常のユーザーを使用します。
次のコマンドを実行して、Curator をインストールします:
sudo pip install elasticsearch-curator
Curator をインストールした後、次のコマンドを実行してバージョンを確認します:
sudo curator --version
コマンドが正常に実行されると、次の結果が返されます。
curator, version 5.6.0
シングルトン CLI の使用
curator_cli コマンドを実行して、単一の操作を実行できます。 詳細については、「シングルトン コマンドライン インターフェース」をご参照ください。
curator_cli コマンドでは、一度に 1 つの操作のみを実行できます。
エイリアスやリストアなどの一部の操作は、シングルトン CLI を使用して実行することはできません。
crontab を使用したタスクのスケジュール
crontab コマンドと curator コマンドを使用して、タスクの操作をスケジュールできます。
次のコードは、curator コマンドの例を示しています。
curator [OPTIONS] ACTION_FILE
Options:
--config PATH Path to configuration file. Default: ~/.curator/curator.yml // 設定ファイルへのパス。デフォルト: ~/.curator/curator.yml
--dry-run Do not perform any changes. // 変更を実行しません。
--version Show the version and exit. // バージョンを表示して終了します。
--help Show this message and exit. // このメッセージを表示して終了します。
curator コマンドを実行する前に、config.yml ファイルと action.yml ファイルを指定する必要があります。
ホットデータとコールドデータの分離
詳細については、「Elasticsearch 5.x での「ホットウォーム」アーキテクチャ」をご参照ください。
ホットノードからウォームノードへのインデックスの移行
config.yml ファイルを /usr/curator/ ディレクトリに作成します。 次のコードを参考にしてファイルを構成できます。
client: hosts: - http://es-cn-0pxxxxxxxxxxxx234.elasticsearch.aliyuncs.com port: 9200 url_prefix: use_ssl: False certificate: client_cert: client_key: ssl_no_validate: False http_auth: user:password // Elasticsearch クラスタにアクセスするために使用するユーザー名とパスワード timeout: 30 master_only: False logging: loglevel: INFO logfile: logformat: default blacklist: ['elasticsearch', 'urllib3']
hosts
: Elasticsearch クラスタの内部エンドポイントまたはパブリックエンドポイントに設定します。 この例では、内部エンドポイントを使用します。http_auth
: Elasticsearch クラスタにアクセスするために使用するユーザー名とパスワードに設定します。
action.yml ファイルを /usr/curator/ ディレクトリに作成します。 次のコードを参考にしてファイルを構成できます。
actions: 1: action: allocation description: "Apply shard allocation filtering rules to the specified indices" // 指定されたインデックスにシャード割り当てフィルタリングルールを適用します options: key: box_type value: warm allocation_type: require wait_for_completion: true timeout_override: continue_if_exception: false disable_action: false filters: - filtertype: pattern kind: prefix value: logstash- - filtertype: age source: creation_date direction: older timestring: '%Y-%m-%dT%H:%M:%S' unit: minutes unit_count: 30
この例では、30 分前に
hot
ノードで作成され、名前がlogstash-
で始まるインデックスがwarm
ノードに移行されます。 ビジネス要件に基づいて action.yml ファイルを構成することもできます。次のコマンドを実行して、curator コマンドが正常に実行されるかどうかを確認します。
sudo curator --config /usr/curator/config.yml /usr/curator/action.yml
curator コマンドが正常に実行されると、次のコードのような情報が返されます。
2019-02-12 20:11:30,607 INFO Preparing Action ID: 1, "allocation" // アクション ID 1、「割り当て」を準備しています 2019-02-12 20:11:30,612 INFO Trying Action ID: 1, "allocation": Apply shard allocation filtering rules to the specified indices // アクション ID 1、「割り当て」を試行しています:指定されたインデックスにシャード割り当てフィルタリングルールを適用します 2019-02-12 20:11:30,693 INFO Updating index setting {'index.routing.allocation.require.box_type': 'warm'} // インデックス設定 {'index.routing.allocation.require.box_type': 'warm'} を更新しています 2019-02-12 20:12:57,925 INFO Health Check for all provided keys passed. // 提供されたすべてのキーのヘルスチェックに合格しました。 2019-02-12 20:12:57,925 INFO Action ID: 1, "allocation" completed. // アクション ID 1、「割り当て」が完了しました。 2019-02-12 20:12:57,925 INFO Job completed. // ジョブが完了しました。
次のコマンドを実行して、curator コマンドを 15 分間隔で実行できるようにします。
crontab -e */15 * * * * curator --config /usr/curator/config.yml /usr/curator/action.yml