4

我有一个 logstash 代理来监控我们的自动测试的日志转储 -

在每批测试开始时,会启动一个代理,监听一个特定的文件夹,最后它应该停止。

问题出在最后——我需要以某种方式向logstash代理发出测试已完成并杀死自己的信号。

我怎样才能做到这一点?配置代理的方法是什么,以便当它从测试中看到某个日志消息时它会杀死自己?

我的配置文件:

input {

  file {
    type => "cloudify-logs"
    path => "<path_to_test_class_folder>/*"
    tags => [ "<suite_name>" , "<test_name>" , "<build_number>" , "<version>" ]
  }
}

output {
  stdout { debug => true debug_format => "json"}
  redis { host => "<host>" data_type => "list" key => "logstash" }
}
4

1 回答 1

3

一种选择是在日志末尾添加一行,例如:

END TEST

然后,您可以创建一个 LogStash “kill” 脚本,当 LogStash 遇到该行时该脚本将执行该脚本。

例如:

filter
{
    if [message] =~ "^END TEST"
    {
        mutate
        {
            add_tag => ["end"]
        }
    }
}

output
{
    if "end" in [tags]
    {
        exec
        {
            command => "kill_logstash.sh"
        }
    }
}
于 2014-08-12T13:53:50.223 回答