【问题标题】:Issue with opensearch Index pattern, alias and fluentd index nameopensearch 索引模式、别名和 fluentd 索引名称的问题
【发布时间】: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

当前的配置是这样的——

  1. fluentd 将所有日志发送到特定索引模式,如“mylogs-k8s-namespace”,因此如果有 10 个命名空间,我将创建 10 个索引。
    logstash_format false
    index_name mylogs-${record['kubernetes']['namespace_name']}
    
    1. 接下来,我创建了一个包含翻转条件的 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
        }
      }
    }
    
    1. 然后我创建了一个模板,它将此策略应用于所有新索引。
    PUT _index_template/ism_rollover
    {
      "index_patterns": ["mylogs-kube-system*"],
      "template": {
       "settings": {
        "plugins.index_state_management.rollover_alias": "mylogs-kube-system"
       }
     }
    }
    
    1. 根据文档,下一步是使用上述别名创建索引
    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。这样它工作正常并且发生翻转。

    但是,据我所知,这不是一个好的解决方案,我们不能在每次添加新命名空间时都停止我们的流利。我正在寻找一个具体的解决方案来完成这项工作。

    我尝试过以下事情但没有运气 -

    1. 将 fluentd(第 1 步)中的索引名称更改为带日期的 logstash_prefix,但是日志继续添加到新索引 (mylogs-kube-system-27052022) 等中,但不会发生翻转。

    2. 尝试通过将 fluentd 中的索引名称更改为 mylogs-k8s-namespace-000001 但它永远只将日志发送到该索引。

      我可以在这里得出的结论是,我们必须保持我们的索引名称和别名不同,但是这样做,fluentd 会停止发送日志来更正别名,我们开始面临翻转问题。

【问题讨论】:

  • 请注意,这不是 Elasticsearch 问题,因为 ism 是我们 ILM 的开放搜索实现,因此您可能需要删除该标签
  • @MarkWalkom,这不是,因为知道 elasticsearch 的人可能也知道 opensearch/ism。我认为标签可以保留..
  • 您不需要创建索引。该索引已由 fluentd 创建。我认为您只需要添加别名即可。您对指数的保留期限是多少?您不能创建每日索引(可以通过 fluentd 轻松完成)并且保留一天或两天或更长时间吗?您不需要“翻转”的别名。
  • 嗨@Riz,我相信,你建议不要执行第 3 步(以避免创建索引)但是,如果我不这样做,我会收到错误消息“未应用写入索引”。请建议如果我误解了这一点。此外,基于这些天,该策略运行良好,但现在我有这个要求根据大小翻转日志,因此使用翻转别名

标签: fluentd opensearch amazon-opensearch ism


【解决方案1】:

尝试使用数据流而不是简单的模板

PUT _index_template/log
{
  "index_patterns": [
    "log-*"
  ],
  "data_stream": {}
}

【讨论】:

    猜你喜欢
    • 2019-01-08
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2013-02-21
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多