6.6. Elasticsearch データのキュレーション
Elasticsearch Curator ツールは、グローバルに、またはプロジェクトごとにスケジュールされたメンテナンス操作を実行します。Curator はその設定に基づき、日次ベースで動作を実行します。
Cluster Logging Operator は Curator とその設定をインストールします。Curator cron スケジュール は、クラスターロギングのカスタムリソースを使用して設定でき、追加の設定オプションは openshift-logging
プロジェクトの Curator ConfigMap、curator
にあります。これには、Curator 設定ファイル curator5.yaml および OpenShift Container Platform カスタム設定ファイル config.yamlが組み込まれています。
OpenShift Container Platform は config.yaml を内部で使用し、Curator の Action
ファイル を生成します。
オプションで、action
ファイルを直接使用できます。このファイルを編集すると、定期的に実行できるように Curator で利用できるアクションを使用できます。ただし、これによりファイルの変更によりクラスターに破壊的な影響が及ぶ可能性があり、必要なインデックス/設定が Elasticsearch から削除される可能性があるため、上級ユーザーのみがこれを実行することが推奨されます。ほとんどのユーザーは Curator 設定マップのみを変更するだけでよく、action
ファイルを編集することはできません。
6.6.1. Curator スケジュールの設定
クラスターロギングインストールで作成されたクラスターロギングのカスタムリソースを使用して、Curator のスケジュールを指定できます。
前提条件
- クラスターロギングおよび Elasticsearch がインストールされていること。
手順
Curator スケジュールを設定するには、以下を実行します。
openshift-logging
プロジェクトでクラスターロギングのカスタムリソースを編集します。$ oc edit clusterlogging instance
apiVersion: "logging.openshift.io/v1" kind: "ClusterLogging" metadata: name: "instance" ... curation: curator: schedule: 30 3 * * * 1 type: curator
注記タイムゾーンは Curator Pod が実行されるホストノードに基づいて設定されます。
6.6.2. Curator インデックス削除の設定
Curator を、保持設定に基づいて Elasticsearch データを削除するように設定できます。プロジェクトごとの設定およびグローバル設定を行うことができます。グローバル設定は、指定されていないプロジェクトに適用されます。プロジェクトごとの設定はグローバル設定を上書きします。
前提条件
- クラスターロギングがインストールされている必要があります。
手順
インデックスを削除するには、以下を実行します。
OpenShift Container Platform カスタム Curator 設定ファイルを編集します。
$ oc edit configmap/curator
必要に応じて以下のパラメーターを設定します。
config.yaml: | project_name: action unit:value
利用可能なパラメーターを以下に示します。
表6.1 プロジェクトオプション 変数名 説明 project_name
プロジェクトの実際の名前 (myapp-devel など)。OpenShift Container Platform の操作ログについては、名前
.operations
をプロジェクト名として使用します。action
実行するアクション。現在許可されているのは
delete
のみです。unit
削除に使用する期間 (
days
、weeks
、またはmonths
)。value
単位数。
表6.2 フィルターオプション 変数名 説明 .defaults
.defaults
をproject_name
として使用し、指定されていないプロジェクトのデフォルトを設定します。.regex
プロジェクト名に一致する正規表現の一覧。
pattern
適切にエスケープされた有効な正規表現パターン。一重引用符で囲まれています。
たとえば、以下のように Curator を設定します。
-
1 day
を経過した myapp-dev プロジェクトのインデックスを削除する -
1 week
を経過した myapp-qe プロジェクトのインデックスを削除する -
8 weeks
を経過した operations ログを削除する -
31 days
を経過したその他すべてのプロジェクトのインデックスを削除する -
^project\..+\-dev.*$
正規表現と一致する、1 日を経過したインデックスを削除する -
^project\..+\-test.*$
正規表現と一致する、2 日を経過したインデックスを削除する
以下を使用します。
config.yaml: | .defaults: delete: days: 31 .operations: delete: weeks: 8 myapp-dev: delete: days: 1 myapp-qe: delete: weeks: 1 .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
) を使用することができます。
6.6.3. Curator のトラブルシューティング
本セクションの情報を使用して Curator のデバッグを実行できます。たとえば、Curator が失敗状態にあり、ログメッセージで理由が示されていない場合、次にスケジュールされている cron ジョブの実行を待機する代わりに、ログレベルを引き上げ、新規ジョブをトリガーできます。
前提条件
クラスターロギングおよび Elasticsearch がインストールされていること。
手順
Curator のデバッグログを有効にし、次の Curator の反復を手動でトリガーします。
Curator のデバッグログを有効にします。
$ oc set env cronjob/curator CURATOR_LOG_LEVEL=DEBUG CURATOR_SCRIPT_LOG_LEVEL=DEBUG
ログレベルを指定します。
- CRITICAL。Curator は重大なメッセージのみを表示します。
- ERROR。Curator はエラーおよび重大なメッセージのみを表示します。
- WARNING。Curator はエラー、警告、および重大なメッセージのみを表示します。
- INFO。Curator は情報、エラー、警告、および重大なメッセージのみを表示します。
DEBUG。Curator は上記のすべてに加えてデバッグメッセージのみを表示します。
デフォルト値は INFO です。
クラスターロギングは、OpenShift Container Platform ラッパースクリプト (run.sh
および convert.py
) で OpenShift Container Platform カスタム環境変数 CURATOR_SCRIPT_LOG_LEVEL
を使用します。この環境変数は、必要に応じてスクリプトのデバッグ用に CURATOR_LOG_LEVEL
と同じ値を取ります。
次の Curator の反復をトリガーします。
$ oc create job --from=cronjob/curator <job_name>
以下のコマンドを使用して CronJob を制御します。
6.6.4. スクリプト化されたデプロイメントでの Curator の設定
Curator をスクリプト化されたデプロイメントで設定する必要がある場合に、本セクションの情報を使用します。
前提条件
- クラスターロギングおよび Elasticsearch がインストールされていること。
- クラスターロギングを管理外の状態に設定する。
手順
以下のスニペットを使用し、スクリプトで Curator を設定します。
スクリプト化されたデプロイメントの場合
設定を作成し、変更します。
Curator 設定ファイルおよび OpenShift Container Platform カスタム設定ファイルを Curator 設定マップからコピーし、それぞれについて別個のファイルをマップし、作成します。
$ oc extract configmap/curator --keys=curator5.yaml,config.yaml --to=/my/config
- /my/config/curator5.yaml および /my/config/config.yaml ファイルを編集します。
既存の Curator 設定マップを削除し、編集された YAML ファイルを新規の Curator 設定マップに追加します。
$ oc delete configmap curator ; sleep 1 $ oc create configmap curator \ --from-file=curator5.yaml=/my/config/curator5.yaml \ --from-file=config.yaml=/my/config/config.yaml \ ; sleep 1
次の反復でこの設定を使用します。
action ファイルを使用している場合
設定を作成し、変更します。
Curator 設定ファイルおよび action ファイルを Curator 設定マップからコピーし、それぞれについて別個のファイルをマップし、作成します。
$ oc extract configmap/curator --keys=curator5.yaml,actions.yaml --to=/my/config
- /my/config/curator5.yaml および /my/config/actions.yaml ファイルを編集します。
既存の Curator 設定マップを削除し、編集された YAML ファイルを新規の Curator 設定マップに追加します。
$ oc delete configmap curator ; sleep 1 $ oc create configmap curator \ --from-file=curator5.yaml=/my/config/curator5.yaml \ --from-file=actions.yaml=/my/config/actions.yaml \ ; sleep 1
次の反復でこの設定を使用します。
6.6.5. Curator Action ファイルの使用
openshift-logging
プロジェクトの Curator ConfigMap には、Curator Action ファイル が含まれます。このファイルで、Curator Action が定期的に実行されるように設定します。
ただし、action ファイルを使用する場合、OpenShift Container Platform は、重要な内部インデックスが間違って削除されないように設定されている curator ConfigMap の config.yaml
セクションを無視します。action ファイルを使用するには、除外ルールを設定に加えてこれらのインデックスを保持する必要があります。さらに、本トピックの手順に従う他のすべてのパターンも手動で追加する必要があります。
actions
および config.yaml
は相互に排他的な設定ファイルです。actions
ファイルがある場合、OpenShift Container Platform は config.yaml
ファイルを無視します。action ファイルの使用は、クラスターに破壊的な影響を与え、必要なインデックス/設定が Elasticsearch から削除される可能性があるために、状況ユーザーのみがこれを実行することが推奨されます。
前提条件
- クラスターロギングおよび Elasticsearch がインストールされていること。
- クラスターロギングを管理外の状態に設定する。
手順
Curator をインデックスを削除するように設定するには、以下を実行します。
Curator ConfigMap を編集します。
oc edit cm/curator -n openshift-logging
action
ファイルに以下の変更を加えます。actions: 1: action: delete_indices 1 description: >- Delete .operations indices older than 30 days. Ignore the error if the filter does not result in an actionable list of indices (ignore_empty_list). See https://www.elastic.co/guide/en/elasticsearch/client/curator/5.2/ex_delete_indices.html options: # Swallow curator.exception.NoIndices exception ignore_empty_list: True # In seconds, default is 300 timeout_override: ${CURATOR_TIMEOUT} # Don't swallow any other exceptions continue_if_exception: False # Optionally disable action, useful for debugging disable_action: False # All filters are bound by logical AND filters: 2 - filtertype: pattern kind: regex value: '^\.operations\..*$' exclude: False 3 - filtertype: age # Parse timestamp from index name source: name direction: older timestring: '%Y.%m.%d' unit: days unit_count: 30 exclude: False
- 1
delete_indices
を指定して指定されたインデックスを削除します。- 2
filers
パラメーターを使用して削除されるインデックスを指定します。これらのパラメーターについての詳細は Elastic Search Curator のドキュメント を参照してください。- 3
- インデックスが削除されるように
false
を指定します。