36.5.5. Curator
借助 Curator,管理员可以配置调度的 Elasticsearch 维护操作,从而基于每个项目自动执行。它被调度为每天根据其配置执行操作。建议每个 Elasticsearch 集群仅使用一个 Curator Pod。Curator Pod 仅在 cronjob 中声明的时间运行,然后 Pod 在完成后终止。Curator 通过 YAML 配置文件配置,结构如下:
时区是根据运行 curator Pod 的主机节点设置的。
$PROJECT_NAME: $ACTION: $UNIT: $VALUE $PROJECT_NAME: $ACTION: $UNIT: $VALUE ...
可用的参数如下:
变量名称 | 描述 |
---|---|
|
项目的实际名称,例如 myapp-devel。对于 OpenShift Container Platform operations 日志,请使用 |
|
当前只支持 |
|
一整 |
| 单元数的整数。 |
|
使用 |
| 与项目名称匹配的正则表达式列表。 |
| 有效且正确转义的正则表达式,用单引号括起。 |
例如,要将 Curator 配置为:
-
删除 myapp-dev 项目中存在时间超过
1 天
的索引 -
删除 myapp-qe 项目中存在时间超过
1 个星期
的索引 -
删除存在时间超过
8 个星期
的operations日志 -
删除所有其他项目中存在时间超过
31 天
的索引 - 删除与 '^project\..+\-dev.*$' regex 匹配的,早于 1 天的索引
- 删除与 '^project\..+\-test.*$' regex 匹配的,早于 2 天的索引
使用:
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 的索引。也就是说,它会退回到当前月份的第一天,然后从该日期起返回两个整月。如果您想对 Curator 准确,最好使用 days(例如 delete: days):30
).
36.5.5.1. 使用 Curator Actions 文件
设置 OpenShift Container Platform 自定义配置文件格式可确保内部索引不会被错误地删除。
要使用 操作文件,请在 Curator 配置中添加 exclude 规则来保留这些索引。您必须手动添加所有所需模式。
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