Скрипт преобразования Elasticsearch watcher

Как передать полезную нагрузку в качестве входных данных для процесса "преобразования" в наблюдателе ELK? Я пробовал следующим способом, но он передает их в виде строки в Groovy файл.

"transform": {
   "script": {
     "file": "error_parser",
     "lang": "groovy",
     "params": {
       "inputval": "{{ctx.payload.aggregations.errorcount.buckets}}"
     }
   }
 }

Когда я хотел передать строку или целое число, я не сталкивался с проблемами, но с объектами. Есть ли способ передать их в файл? И в этом случае, где хранится выходное значение, которое мы возвращаем из скрипта groovy (процесс 'условие' оценивает вывод в логическое значение в аналогичном случае)?

Groovy содержание:

println inputval
return inputval[0].doc_count

Я получаю следующую ошибку при выполнении наблюдателя

{{ctx.payload.aggregations.errorcount.buckets}}
[2016-03-22 17:23:08,637][ERROR][watcher.transform.script ] [Hannah Levy] failed to execute [script] transform for [my-watch_2-2016-03-22T21:23:08.617
Z]
ScriptException[failed to run file script [error_parser] using lang [groovy]]; nested: MissingPropertyException[No such property: doc_count for class:
 java.lang.String];
        at org.elasticsearch.script.groovy.GroovyScriptEngineService$GroovyScript.run(GroovyScriptEngineService.java:318)
        at org.elasticsearch.watcher.transform.script.ExecutableScriptTransform.doExecute(ExecutableScriptTransform.java:73)
        at org.elasticsearch.watcher.transform.script.ExecutableScriptTransform.execute(ExecutableScriptTransform.java:59)
        at org.elasticsearch.watcher.transform.script.ExecutableScriptTransform.execute(ExecutableScriptTransform.java:40)

1 ответ

Решение

Я уверен, что вы не можете сделать это:

"inputval": "{{ctx.payload.aggregations.errorcount.buckets}}"

Я бы сделал это в вашем сценарии вместо

println ctx.payload.aggregations.errorcount.buckets
return ctx.payload.aggregations.errorcount.buckets[0].doc_count

и я бы удалил параметры для части сценария

Другие вопросы по тегам