2016-03-22 5 views
0

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

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

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

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) 

ответ

0

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

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

Я хотел бы сделать это в вашем скрипте вместо

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

и я бы удалить Params для части сценария

+0

ли Вы сказать, что мы не можем передать все динамические значения в заводной от trasnform части? – svjn

+0

Я ничего не видел в документации, заявляющей, что вы могли бы – maximede

+0

Спасибо maximede. Это работает. – svjn

Смежные вопросы