3.3.2. ログ保持時間の設定
デフォルトの Elasticsearch ログストアが、インフラストラクチャーログ、アプリケーションログ、監査ログなどの 3 つのログソースごとに個別の 保持ポリシー を使用してインデックスを保持する期間を指定できます。クラスターロギングのカスタムリソース (CR) で maxAge
パラメーターを使用して設定する保持ポリシーは、Elasticsearch のロールオーバースケジュールに関連して考慮され、Elasticseach がロールオーバーインデックスを削除するタイミングを決定します。
Elasticsearch はインデックスをロールオーバーし、インデックスが以下の条件のいずれかに一致する場合に現在のインデックスを移動し、新規インデックスを作成します。
-
インデックスは
Elasticsearch
CR のrollover.maxAge
の値よりも古い値になります。 - インデックスサイズは、40 GB x プライマリーシャードの数よりも大きくなります。
- インデックスの doc 数は、40960 KB × プライマリーシャードの数よりも大きくなります。
Elasticsearch は、設定する保持ポリシーに基づいてロールオーバーインデックスを削除します。
ログソースの保持ポリシーを作成しないと、ログはデフォルトで 7 日後に削除されます。
3 つのすべてのログソースに保持ポリシーを指定しない場合、保持ポリシーが指定されたソースのログのみが保存されます。たとえば、インフラストラクチャーおよびアプリのログの保持ポリシーを設定し、監査ログの保持ポリシーを設定しない場合、監査ログは保持されず、Elasticsearch または Kibana に audit- インデックスは存在しなくなります。
前提条件
- クラスターロギングおよび Elasticsearch がインストールされている。
手順
ログの保持時間を設定するには、以下を実行します。
ClusterLogging
CR を編集して、retentionPolicy
パラメーターを追加するか、または変更します。apiVersion: "logging.openshift.io/v1" kind: "ClusterLogging" ... spec: managementState: "Managed" logStore: type: "elasticsearch" retentionPolicy: 1 application: maxAge: 1d infra: maxAge: 7d audit: maxAge: 7d elasticsearch: nodeCount: 3 ...
- 1
- Elasticsearch が各ログソースを保持する時間を指定します。整数および時間の指定 (weeks(w)、hour(h/H)、minutes(m)、および seconds(s)) を入力します。たとえば、1 日の場合は
1d
になります。maxAge
よりも古いログは削除されます。デフォルトで、ログは 7 日間保持されます。
Elasticsearch
カスタムリソース (CR) で設定を確認できます。たとえば、Cluster Logging Operator は以下の
Elasticsearch
CR を更新し、8 時間ごとにインフラストラクチャーログのアクティブなインデックスをロールオーバーし、ロールオーバーされたインデックスはロールオーバーの 7 日後に削除される設定を含む保持ポリシーを設定するとします。OpenShift Container Platform は 15 分ごとにチェックし、インデックスをロールオーバーする必要があるかどうかを判別します。apiVersion: "logging.openshift.io/v1" kind: "Elasticsearch" metadata: name: "elasticsearch" spec: ... indexManagement: policies: 1 - name: infra-policy phases: delete: minAge: 7d 2 hot: actions: rollover: maxAge: 8h 3 pollInterval: 15m 4 ...
- 1
- 各ログソースについて、保持ポリシーは、そのソースのログを削除/ロールオーバーするタイミングを示します。
- 2
- OpenShift Container Platform がロールオーバーされたインデックスを削除する場合。この設定は、
ClusterLogging
CR に設定するmaxAge
になります。 - 3
- インデックスをロールオーバーする際に考慮する OpenShift Container Platform のインデックス期間。この値は、
ClusterLogging
CR に設定するmaxAge
に基づいて決定されます。 - 4
- OpenShift Container Platform がインデックスをロールオーバーする必要があるかどうかをチェックする場合。この設定はデフォルトであるため、変更できません。
注記Elasticsearch
CR の変更はサポートされていません。保持ポリシーに対するすべての変更はClusterLogging
CR で行う必要があります。Elasticsearch Operator は cron ジョブをデプロイし、
pollInterval
を使用してスケジュールされる定義されたポリシーを使用して各マッピングのインデックスをロールオーバーします。$ oc get cronjobs
出力例
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE elasticsearch-delete-app */15 * * * * False 0 <none> 27s elasticsearch-delete-audit */15 * * * * False 0 <none> 27s elasticsearch-delete-infra */15 * * * * False 0 <none> 27s elasticsearch-rollover-app */15 * * * * False 0 <none> 27s elasticsearch-rollover-audit */15 * * * * False 0 <none> 27s elasticsearch-rollover-infra */15 * * * * False 0 <none> 27s