代码之家  ›  专栏  ›  技术社区  ›  vivek

opensearch索引模式、别名和fluentd索引名称问题

  •  0
  • vivek  · 技术社区  · 2 年前

    我有一个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已经开始推送日志,我们不能让别名、索引或流具有相同的名称。

    为了克服这个问题,我必须停止我的fluend,删除索引“mylogs kube system, 在这种情况下 “然后首先应用策略和别名(步骤1到步骤4),然后再次启动fluentd。这样它工作正常,就会发生翻滚。

    然而,据我所知,这不是一个好的解决方案,我们不能在每次添加新名称空间时都停止fluentd。我正在寻找一个具体的解决方案,使这项工作。

    我试过做以下事情,但没有成功-

    1. 将fluentd中的索引名称(步骤1)更改为带有日期的logstash\u前缀,但日志会不断添加到新索引(mylogs-kube-system-27052022)等中,但不会发生滚动。

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

    我在这里得出的结论是,我们必须保持索引名和别名不同,但这样一来,fluentd将停止向正确的别名发送日志,我们开始面临滚动问题。

    0 回复  |  直到 2 年前