4.3.2. 配置日志保留时间
您可以配置保留策略,指定默认 Elasticsearch 日志存储保留三个日志源的索引的时长:基础架构日志、应用程序日志和审计日志。
要配置保留策略,您需要为 ClusterLogging
自定义资源 (CR) 中的每个日志源设置 maxAge
参数。CR 将这些值应用到 Elasticsearch 滚动调度,它决定 Elasticsearch 何时删除滚动索引。
如果索引与以下条件之一匹配,Elasticsearch 会滚动索引,移动当前的索引并创建新索引:
-
索引早于
Elasticsearch
CR 中的rollover.maxAge
值。 - 索引大小超过主分片数乘以 40GB 的值。
- 索引的 doc 数大于主分片数乘以 40960 KB 的值。
Elasticsearch 会根据您配置的保留策略删除滚动索引。如果您没有为任何日志源创建保留策略,则默认在 7 天后删除日志。
先决条件
- 必须安装 OpenShift Logging 和 OpenShift Elasticsearch Operator。
流程
配置日志保留时间:
编辑
ClusterLogging
CR,以添加或修改reservedPolicy
参数: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 应该保留每个日志源的时间。输入一个整数和时间单位: 周(w)、小时(h/H)、分钟(m)和秒。例如,
1d
代表一天。时间超过maxAge
的旧日志会被删除。默认情况下,日志会保留 7 天。
您可以验证
Elasticsearch
自定义资源(CR)中的设置。例如,Red Hat OpenShift Logging Operator 更新了以下
Elasticsearch
CR 以配置保留策略,包括设置以每八小时滚动基础架构日志的活跃索引,并在滚动后 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 ...
注意不支持修改
Elasticsearch
CR。对保留策略的所有更改都必须在ClusterLogging
CR 中进行。OpenShift Elasticsearch Operator 部署 cron job,以使用定义的策略为每个映射滚动索引,并使用
pollInterval
调度。$ oc get cronjob
输出示例
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE elasticsearch-im-app */15 * * * * False 0 <none> 4s elasticsearch-im-audit */15 * * * * False 0 <none> 4s elasticsearch-im-infra */15 * * * * False 0 <none> 4s