【问题标题】:Conditional indexing in metricbeat using Ingest node pipeline creates a datastream使用 Ingest 节点管道在 metricbeat 中进行条件索引创建数据流
【发布时间】:2022-01-14 11:14:21
【问题描述】:

我正在尝试使用摄取节点管道为弹性中的命名空间实现条件索引。我使用了下面的管道,但是当我在 metricbeat.yml 中添加管道时创建的索引是数据流的形式。

PUT _ingest/pipeline/sample-pipeline
{
  "processors": [
    {
      "set": {
        "field": "_index",
        "copy_from": "metricbeat-dev",
        "if": "ctx.kubernetes?.namespace==\"dev\"",
        "ignore_failure": true
      }
    }
  ]
}

预期的索引名称是 metricbeat-dev,但我将 _index 中的值作为 .ds-metricbeat-dev 获取。 当我使用一个文档进行测试时,这很好用,但是当我在 yml 文件中实现它时,我得到了以 .ds 开头的索引名称 - 为什么会发生这种情况?

模板更新:

{
   "metricbeat" : {
     "order" : 1,
     "index_patterns" : [
       "metricbeat-*"
     ],
     "settings" : {
       "index" : {
         "lifecycle" : {
           "name" : "metricbeat",
           "rollover_alias" : "metricbeat-metrics"
         },

【问题讨论】:

  • 这可能是因为metricbeat-* 的索引模板可以启用数据流。你能检查一下运行GET _template/metricbeat*时得到了什么吗?
  • 我可以找到一个模板指向我的索引模式 metricbeat-* 这可能是问题吗?
  • 你能用那个模板定义更新你的问题吗(不需要映射和设置部分,只需要顶级部分)
  • 更新了问题
  • 模板不完整,请添加整个模板,没有mappingssettings的内容。另请检查以下端点GET _index_template/metricbeat*

标签: elasticsearch elastic-stack elk


【解决方案1】:

如果您在索引模板中启用了数据流,则它有可能创建数据流。这取决于您如何配置优先级。如果未提及优先级,则它将创建旧索引,但如果在索引模板中提及高于 100 的优先级。然后这将创建一个数据流(旧索引的优先级为 100,因此如果您想要数据流形式的索引,请使用大于 100 的优先级值)。

如果它创建了一个数据流并且它不是预期的,请检查是否有一个模板指向您正在编写的索引,其中启用了数据流!这就是我的原因。

已经使用这个几个月了,这就是我所观察到的!

【讨论】:

    猜你喜欢
    • 2022-01-26
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 2020-04-10
    • 2013-07-11
    • 2016-12-10
    • 2023-03-15
    相关资源
    最近更新 更多