如何使用摄取节点管道添加自定义索引?

Posted

技术标签:

【中文标题】如何使用摄取节点管道添加自定义索引?【英文标题】:How to add custom index using ingest node pipeline? 【发布时间】:2022-01-13 02:01:01 【问题描述】:

是否可以使用摄取节点管道创建条件索引?我觉得这可以通过脚本处理器来完成,但有人可以判断这是否可能吗?

我处于一种情况,我应该决定哪种方法是进行自定义索引的更好方法。我可以在 metricbeat.yml /filebeat.yml 文件中提及条件来完成这项工作。但这是进行自定义索引的最佳方式吗?我的弹性堆栈中没有logstash

output.elasticsearch:
          indices:
            - index: "metricbeat-dev-%[agent.version]-%+yyyy.MM.dd"
              when.equals:
                kubernetes.namespace: "dev"

这就是我现在在 metric/filebeat 中实现自定义索引的方式。我的 Kubernetes 集群中有 20 多个命名空间。请帮助建议这是否可以通过摄取节点管道来完成

【问题讨论】:

【参考方案1】:

是的,您可以通过摄取管道集处理器来实现这一点。摄取管道支持accessing of metadata fields,您可以使用 _index 字段名称访问/更新索引名称。

以下是示例摄取管道,当命名空间为 dev 时,它将更新索引名称:

[
  
    "set": 
      "field": "_index",
      "value": "metricbeat-dev",
      "if": "ctx.kubernetes?.namespace== 'dev'"
    
  
]

更新 1:将代理版本附加到索引名称。我认为代理版本字段名称为agent.version

[
      
        "set": 
          "field": "_index",
          "value": "metricbeat-dev-agent.version",
          "if": "ctx.kubernetes?.namespace== 'dev'"
        
      
    ]

【讨论】:

当我在 metricbeat.yml 中实现这一点时,我得到的索引为 .ds-metricbeat-dev 知道它为什么要创建数据流吗? @sidharthvijayakumar 我不确定,但它可能会发生,因为您的索引名称以 metricbeat- 开头,这与现有的 ILM 和索引模板匹配。请为此提出单独的问题。 @sidharthvijayakumar 如果对您有帮助,请接受我的回答。 这不是我想要的,但仍然有效,但它没有创建别名和东西,所以我无法实现 ilm @sidharthvijayakumar 您是否尝试使用 metricbeat- 索引名称或其他自定义 inex 名称

以上是关于如何使用摄取节点管道添加自定义索引?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用带有 Filebeat 模块的自定义摄取管道

Observability:使用 Elastic Agent 来收集定制的 TCP 日志

是否使用数据流管道(未内置自定义)从谷歌存储到 bigquery 摄取数据(批量)?

在使用 YouTube Live Streaming API 时使用基本摄取或避免重复的自定义摄取

Elasticsearch:如何正确处理 Elasticsearch 摄取管道故障

Elasticsearch:如何正确处理 Elasticsearch 摄取管道故障