I'm looking to run a script so I can post some passive check status to nagios via send_nsca and found the d-fens ExecScript AlarmCallback plugin. After building the jar file and placing it in graylog-server/plugins/alarm_callback dir I can select the "d-fens SCRIPT AlarmCallback" plugin.
The doc says that it supports java and python natively (shame it doesn't allow just simple shell commands or supply perl engine as well which would make my life easier). With these settings however, I'm getting an error as follows - - DF_SCRIPT_ENGINE: python - DF_SCRIPT_CACHE_CONTENTS: true - DF_SCRIPT_PATH_AND_NAME: /tmp/nagiosScript.py - DF_DISPLAY_SCRIPT_OUTPUT:false cat /tmp/nagiosScript.py *#!/usr/bin/pythonimport osos.system("touch /tmp/abc")* Error log - 2016-03-17T16:33:09.372-04:00 ERROR [dfchBizExecScript] *** d-fens SCRIPT AlarmCallback::write() - Exception 2016-03-17T16:33:09.374-04:00 WARN [AlertScannerThread] Alarm callback with id 56eb0d74e4b03d13f5b1d7c9 failed. Skipping. org.graylog2.plugin.alarms.callbacks.AlarmCallbackConfigurationException: python: Unsupported script engine. at biz.dfch.j.graylog2.plugin.alarm.dfchBizExecScript.initialize(dfchBizExecScript.java:75) at org.graylog2.alarmcallbacks.AlarmCallbackFactory.create(AlarmCallbackFactory.java:43) at org.graylog2.periodical.AlertScannerThread.doRun(AlertScannerThread.java:112) at org.graylog2.plugin.periodical.Periodical.run(Periodical.java:83) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Question - how can I get python to be a supported script engine? Or am I stuck with javascript engine alone? I'm not familiar with java. How would I call an external send_nsca script from Java? I saw the blurb about RhinoShell but it did not work when I tried it. The test java program I used was - " *// prints the whole messageprint("AlarmCallback: Now this is a message: " + message + "\r\n");// printing the message sourceprint("AlarmCallback: message.source: " + message.getSource() + "\r\n");// printing the message sourceprint("AlarmCallback: message.timestamp: " + message.getTimestamp() + "\r\n");// printing the stream titleprint("AlarmCallback: stream.title: " + stream.getTitle() + "\r\n");// printing the description of the alarm conditionprint("AlarmCallback: result.description: " + result.getResultDescription() + "\r\n");// now you can invoke arbitrary system commands via // https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino/Shell#runCommandrunCommand('date > /tmp/abc');* " However, this fails with - 2016-03-18T10:45:09.374-04:00 ERROR [dfchBizExecScript] *** d-fens SCRIPT AlarmCallback::write() - ScriptException 2016-03-18T10:45:09.377-04:00 WARN [AlertScannerThread] Alarm callback <d-fens SCRIPT AlarmCallback> failed. Skipping. org.graylog2.plugin.alarms.callbacks.AlarmCallbackException: *** d-fens SCRIPT AlarmCallback::write() - ScriptException at biz.dfch.j.graylog2.plugin.alarm.dfchBizExecScript.call(dfchBizExecScript.java:232) at org.graylog2.periodical.AlertScannerThread.doRun(AlertScannerThread.java:113) at org.graylog2.plugin.periodical.Periodical.run(Periodical.java:83) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: javax.script.ScriptException: TypeError: null has no such function "getSource" in <eval> at line number 13 at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:467) at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:451) at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:403) at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:399) at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:150) at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249) at biz.dfch.j.graylog2.plugin.alarm.dfchBizExecScript.call(dfchBizExecScript.java:213) ... 9 more Caused by: <eval>:13 TypeError: null has no such function "getSource" at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57) at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:213) at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:185) at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:172) at jdk.nashorn.internal.runtime.linker.NashornBottomLinker.linkNull(NashornBottomLinker.java:175) at jdk.nashorn.internal.runtime.linker.NashornBottomLinker.getGuardedInvocation(NashornBottomLinker.java:64) at jdk.internal.dynalink.support.CompositeGuardingDynamicLinker.getGuardedInvocation(CompositeGuardingDynamicLinker.java:124) at jdk.internal.dynalink.support.LinkerServicesImpl.getGuardedInvocation(LinkerServicesImpl.java:154) at jdk.internal.dynalink.DynamicLinker.relink(DynamicLinker.java:253) at jdk.nashorn.internal.scripts.Script$\^eval\_.:program(<eval>:13) at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:640) at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:228) at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393) at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:446) ... 14 more Any help is much appreciated. Thanks, -- You received this message because you are subscribed to the Google Groups "Graylog Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to graylog2+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/graylog2/8bab069e-aedd-4a0d-b520-133a9366c41c%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.