36.5.5. Curator
Curator を利用することで、管理者はスケジュールされた Elasticsearch のメンテナーンス操作を設定し、プロジェクトごとに自動的に実行することができます。これは、設定に基づいてアクションを毎日実行するようにスケジュール設定されています。Elasticsearch クラスターごとに 1 つの Curator Pod のみを使用することが推奨されます。Curator Pod は coronjob で指定された時間にのみ実行され、Pod は完了時に終了します。Curator は以下の構造を持つ YAML 設定ファイルで設定されます。
タイムゾーンは Curator Pod が実行されるホストノードに基づいて設定されます。
$PROJECT_NAME: $ACTION: $UNIT: $VALUE $PROJECT_NAME: $ACTION: $UNIT: $VALUE ...
利用可能なパラメーターを以下に示します。
変数名 | 説明 |
---|---|
|
プロジェクトの実際の名前 (myapp-devel など)。OpenShift Container Platform の操作ログについては、名前 |
|
実行するアクション。現在許可されているのは |
|
|
| 単位数を示す整数。 |
|
|
| プロジェクト名に一致する正規表現の一覧。 |
| 適切にエスケープされた有効な正規表現パターン。一重引用符で囲まれています。 |
たとえば、以下のように Curator を設定します。
-
1 day
を経過した myapp-dev プロジェクトのインデックスを削除する -
1 week
を経過した myapp-qe プロジェクトのインデックスを削除する -
8 weeks
を経過した operations ログを削除する -
31 days
を経過したその他すべてのプロジェクトのインデックスを削除する - '^project\..+\-dev.*$' 正規表現で一致した 2 日以上経過したインデックスを削除します。
- '^project\..+\-test.*$' 正規表現で一致した 3 日以上経過したインデックスを削除します。
以下を使用します。
config.yaml: | myapp-dev: delete: days: 1 myapp-qe: delete: weeks: 1 .operations: delete: weeks: 8 .defaults: delete: days: 31 .regex: - pattern: '^project\..+\-dev\..*$' delete: days: 1 - pattern: '^project\..+\-test\..*$' delete: days: 2
months
を操作の $UNIT
として使用する場合、Curator は今月の当日ではなく、今月の最初の日からカウントを開始します。たとえば、今日が 4 月 15 日であり、現時点で 2 カ月を経過したインデックスを削除する場合 (delete: months: 2)、Curator は 2 月 15 日より古い日付のインデックスを削除するのではなく、2 月 1 日より古いインデックスを削除します。つまり、今月の最初の日付まで遡り、そこから 2 カ月遡ります。Curator で厳密な設定をする必要がある場合、最も適切な方法として日数 (例: delete: days: 30
) を使用することができます。
36.5.5.1. Curator Actions File の使用
OpenShift Container Platform カスタム設定ファイルフォーマットを設定すると、内部のインデックスが間違って削除されることはなくなります。
actions file を使用するには、除外ルールを Curator 設定に追加してこれらのインデックスを維持します。必要なパターンすべてを手動で追加する必要があります。
actions.yaml: | actions: action: delete_indices description: be careful! filters: - exclude: false kind: regex filtertype: pattern value: '^project\.myapp\..*$' - direction: older filtertype: age source: name timestring: '%Y.%m.%d' unit_count: 7 unit: days options: continue_if_exception: false timeout_override: '300' ignore_empty_list: true action: delete_indices description: be careful! filters: - exclude: false kind: regex filtertype: pattern value: '^\.operations\..*$' - direction: older filtertype: age source: name timestring: '%Y.%m.%d' unit_count: 56 unit: days options: continue_if_exception: false timeout_override: '300' ignore_empty_list: true action: delete_indices description: be careful! filters: - exclude: true kind: regex filtertype: pattern value: '^project\.myapp\..*$|^\.operations\..*$|^\.searchguard\..*$|^\.kibana$' - direction: older filtertype: age source: name timestring: '%Y.%m.%d' unit_count: 30 unit: days options: continue_if_exception: false timeout_override: '300' ignore_empty_list: true