Как получить доступ к вложенному полю в конвейере узлов приема?

#elasticsearch #elastic-stack #metricbeat

#эластичный поиск #эластичный пакет #метрическое биение

Вопрос:

Мне нужно получить доступ к полю «вид», и оно вложено, я поделился тем, как выглядят данные в json. Я хочу использовать процессор набора в конвейерах узлов приема и добавить новое поле, если оно содержит модуль значений. Как мне этого добиться?

 "kubernetes": {  "event": {  "type": "Normal",  "count": 1,  "source": {  "host": "worker",  "component": "kubelet"  },  "involved_object": {  "uid": "1d7add39-6569-450t-a3dc-886e063bfcca",  "api_version": "v1",  "resource_version": "92916573314",  "name": "hello-world",  "kind": "Pod"  }  } }  

Попытался использовать приведенное ниже условие в заданном процессоре, но оно не работает

 ctx.kubernetes?.event?.involved_object?.kind=="Pod" ctx.kubernetes.event.involved_object.kind=="Pod"  

Поглощающий трубопровод, который я создал :

 PUT _ingest/pipeline/prometheus-kubify {  "processors": [  {  "set": {  "field": "kubernetes.namespace",  "ignore_empty_value": true,  "if": "ctx.metricset.name=="query"",  "ignore_failure": true,  "copy_from": "prometheus.labels.namespace"  }  },  {  "set": {  "field": "kubernetes.pod.name",  "copy_from": "prometheus.labels.pod",  "ignore_empty_value": true,  "if": "ctx.metricset.name=="query"",  "ignore_failure": true  }  },  {  "set": {  "field": "kubernetes.container.name",  "copy_from": "prometheus.labels.container",  "ignore_empty_value": true,  "if": "ctx.metricset.name=="query"",  "ignore_failure": true  }  },  {  "set": {  "field": "kubernetes.namespace",  "copy_from": "kubernetes.event.metadata.namespace",  "ignore_empty_value": true,  "if": "ctx.kubernetes.event.involved_object.kind=="Pod"",  "ignore_failure": true  }  },  {  "set": {  "field": "kubernetes.pod.name",  "ignore_empty_value": true,  "if": "ctx.kubernetes.event.involved_object.kind=="Pod"",  "ignore_failure": true,  "copy_from": "kubernetes.event.involved_object.name"  }  },  {  "set": {  "field": "kubernetes.deployment.name",  "copy_from": "kubernetes.event.involved_object.name",  "ignore_empty_value": true,  "if": "ctx.kubernetes.event.involved_object.kind=="Deployment"",  "ignore_failure": true  }  }  ] }  

Комментарии:

1. Ваше состояние выглядит правильным, что заставляет вас думать, что это не сработало?

2. первый, верно? Он работает, когда я провожу тестирование в конвейере узлов приема, но когда я сохраняю его и регистрируюсь, обнаруживается, что он работает только для 10% данных.

3. Затем это работает, и в остальных 90% данных есть что-то, для чего это условие не выполняется. Легко выбрать один из этих документов и выяснить, почему. Покажи нам один

4. Я попытался выбрать тот, который не работает, но когда я тестирую тот же документ, он работает нормально. Может ли это быть проблемой с узлом приема ?

5. Может быть, покажите свой конвейер приема, может быть, это другой процессор, вызывающий это?