【发布时间】:2023-01-15 06:07:13
【问题描述】:
我有一个 opensearch 集群,它从 fluentd 接收日志。现在我想应用 ISM 策略在索引达到特定阈值时滚动我的索引。
我正在按照此文档创建 ISM 策略 https://opensearch.org/docs/latest/im-plugin/ism/policies/#sample-policy-with-ism-template-for-auto-rollover。
当前的配置是这样的——
- fluentd 将所有日志发送到特定索引模式,如“mylogs-k8s-namespace”,因此如果有 10 个命名空间,我将创建 10 个索引。
logstash_format false index_name mylogs-${record['kubernetes']['namespace_name']}- 接下来,我创建了一个包含翻转条件的 ISM 策略-
PUT _plugins/_ism/policies/rollover_policy { "policy": { "description": "Example rollover policy.", "default_state": "rollover", "states": [ { "name": "rollover", "actions": [ { "rollover": { "min_size": "10mb" } } ], "transitions": [] } ], "ism_template": { "index_patterns": ["mylogs-kube-system*"], "priority": 100 } } }- 然后我创建了一个模板,它将此策略应用于所有新索引。
PUT _index_template/ism_rollover { "index_patterns": ["mylogs-kube-system*"], "template": { "settings": { "plugins.index_state_management.rollover_alias": "mylogs-kube-system" } } }- 根据文档,下一步是使用上述别名创建索引
PUT mylogs-kube-system-000001 { "aliases": { "mylogs-kube-system": { "is_write_index": true } } }现在问题来了——
如果 fluentd 已经开始将日志推送到我的索引“mylogs-kube-system”,那么上述步骤 (4) 将不起作用。它给出了一个错误,同名的索引已经存在。
这是有道理的,因为 fluentd 已经开始推送日志,我们不能有同名的别名、索引或流。
为了克服这个问题,我必须停止流利,删除索引“mylogs-kube-system,在这种情况下" 然后首先应用策略和别名(步骤 1 到 4),然后再次启动 fluentd。这样它工作正常并且发生翻转。
但是,据我所知,这不是一个好的解决方案,我们不能在每次添加新命名空间时都停止我们的流利。我正在寻找一个具体的解决方案来完成这项工作。
我尝试过以下事情但没有运气 -
-
将 fluentd(第 1 步)中的索引名称更改为带日期的 logstash_prefix,但是日志继续添加到新索引 (mylogs-kube-system-27052022) 等中,但不会发生翻转。
-
尝试通过将 fluentd 中的索引名称更改为 mylogs-k8s-namespace-000001 但它永远只将日志发送到该索引。
我可以在这里得出的结论是,我们必须保持我们的索引名称和别名不同,但是这样做,fluentd 会停止发送日志来更正别名,我们开始面临翻转问题。
【问题讨论】:
-
请注意,这不是 Elasticsearch 问题,因为 ism 是我们 ILM 的开放搜索实现,因此您可能需要删除该标签
-
@MarkWalkom,这不是,因为知道 elasticsearch 的人可能也知道 opensearch/ism。我认为标签可以保留..
-
您不需要创建索引。该索引已由 fluentd 创建。我认为您只需要添加别名即可。您对指数的保留期限是多少?您不能创建每日索引(可以通过 fluentd 轻松完成)并且保留一天或两天或更长时间吗?您不需要“翻转”的别名。
-
嗨@Riz,我相信,你建议不要执行第 3 步(以避免创建索引)但是,如果我不这样做,我会收到错误消息“未应用写入索引”。请建议如果我误解了这一点。此外,基于这些天,该策略运行良好,但现在我有这个要求根据大小翻转日志,因此使用翻转别名
标签: fluentd opensearch amazon-opensearch ism