如何实现logstash配置的单元或集成测试?
有了Logstash1.2.1,人们现在可以有条件地做各种事情。如果管理许多日志文件并实现度量提取,则即使是早期版本的conf文件也可能变得复杂 在看了这个例子之后,我真的很想知道我自己,我怎样才能检测到这个配置中的任何中断如何实现logstash配置的单元或集成测试?,logstash,Logstash,有了Logstash1.2.1,人们现在可以有条件地做各种事情。如果管理许多日志文件并实现度量提取,则即使是早期版本的conf文件也可能变得复杂 在看了这个例子之后,我真的很想知道我自己,我怎样才能检测到这个配置中的任何中断 任何想法。对于语法检查,有--configtest: java -jar logstash.jar agent --configtest --config <yourconfigfile> 由于logstash已升级,因此在中有许多规范示例,现在命令类似于(给
任何想法。对于语法检查,有
--configtest
:
java -jar logstash.jar agent --configtest --config <yourconfigfile>
由于logstash已升级,因此在中有许多规范示例,现在命令类似于(给出文件夹)
如果您看到一些警告,但是错误消息混合在一起,并且您不知道哪一条有问题。您必须逐个检查其文件,查看Logstash 1.4.x和更新版本。相关注释为
bin/Logstash rspec haproxy_spec.rb
。对于未来的读者,在存储库重组后,您可能需要检查repos中的测试。
require "test_utils"
describe "haproxy logs" do
extend LogStash::RSpec
config <<-CONFIG
filter {
grok {
type => "haproxy"
add_tag => [ "HTTP_REQUEST" ]
pattern => "%{HAPROXYHTTP}"
}
date {
type => 'haproxy'
match => [ 'accept_date', 'dd/MMM/yyyy:HH:mm:ss.SSS' ]
}
}
CONFIG
sample({'@message' => '<150>Oct 8 08:46:47 syslog.host.net haproxy[13262]: 10.0.1.2:44799 [08/Oct/2013:08:46:44.256] frontend-name backend-name/server.host.net 0/0/0/1/2 404 1147 - - ---- 0/0/0/0/0 0/0 {client.host.net||||Apache-HttpClient/4.1.2 (java 1. 5)} {text/html;charset=utf-8|||} "GET /app/status HTTP/1.1"',
'@source_host' => '127.0.0.1',
'@type' => 'haproxy',
'@source' => 'tcp://127.0.0.1:60207/',
}) do
insist { subject["@fields"]["backend_name"] } == [ "backend-name" ]
insist { subject["@fields"]["http_request"] } == [ "/app/status" ]
insist { subject["tags"].include?("HTTP_REQUEST") }
insist { subject["@timestamp"] } == "2013-10-08T06:46:44.256Z"
reject { subject["@timestamp"] } == "2013-10-08T06:46:47Z"
end
end
java -jar logstash.jar rspec haproxy_spec.rb
/opt/logstash/bin/logstash agent --configtest -f /etc/logstash/logstash-indexer/conf.d