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

How to add custom index using ingest node pipeline?

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

我处在一个场景中,我应该决定哪种方式是进行自定义索引的更好方式。我可以在 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 多个命名空间。请帮助建议是否可以通过摄取节点管道来完成

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

下面是示例 Ingest Pipeline,它将在命名空间为 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'"
        }
      }
    ]