如何实现logstash配置的单元或集成测试?

2023-12-25

使用logstash 1.2.1,人们现在可以有条件地做各种事情。如果管理许多日志文件并实现指标提取,即使是早期版本的 conf 文件也会变得复杂。

看完之后这个全面的 http://untergeek.com/2013/09/11/getting-apache-to-output-json-for-logstash-1-2-x/例如,我真的很想知道自己,如何检测此配置中的任何损坏?

有任何想法吗。


对于语法检查,有--configtest:

java -jar logstash.jar agent --configtest --config <yourconfigfile>

要测试配置的逻辑,您可以编写 rspec 测试。这是一个用于测试 haproxy 日志过滤器的示例 rspec 文件:

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

这将根据给定的过滤器配置运行输入样本并测试是否产生预期的输出。

要运行测试,请将测试保存为 haproxy_spec.rb 并运行 `logstash rspec:

java -jar logstash.jar rspec haproxy_spec.rb

中有很多规格示例Logstash 源存储库 https://github.com/logstash/logstash/tree/master/spec/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何实现logstash配置的单元或集成测试? 的相关文章

随机推荐