Ответ дается gmile хорошо работает до версии 1.5 logstash. С тех пор шаблоны grok удалялись из ядра и помещались в шаблоны logstash-core. Что работает для меня в logstash 2.2:
# encoding: utf-8
require 'spec_helper'
require "logstash/patterns/core"
# solution based on https://github.com/logstash-plugins/logstash-filter-grok/blob/master/spec/filters/grok_spec.rb
module LogStash::Environment
# running the grok code outside a logstash package means
# LOGSTASH_HOME will not be defined, so let's set it here
# before requiring the grok filter
# the path that is set is the plugin root path
unless self.const_defined?(:LOGSTASH_HOME)
LOGSTASH_HOME = File.expand_path("../../../", __FILE__)
end
# also :pattern_path method must exist so we define it too
# method is called by logstash-filter-grok to create patterns_path array
#
# logstash-filter-grok/lib/logstash/filters/grok.rb(line ~230):
#
# @@patterns_path += [
# LogStash::Patterns::Core.path,
# LogStash::Environment.pattern_path("*")
#
# patterns defined in spec/patterns/ will be joined to the array by grok
unless self.method_defined?(:pattern_path)
def pattern_path(path)
::File.join(LOGSTASH_HOME, "spec", "patterns", path)
end
end
end
require "logstash/filters/grok"
require "logstash/filters/<tested-plugin>"
Остальная часть примера спецификации остается в силе.
Поскольку новое требование о зависимости прибыло, Gemfile также должен измениться. Моя gemspec зависимость, как это:
# Gem dependencies
s.add_runtime_dependency "logstash-core-plugin-api", "~> 1.0"
s.add_runtime_dependency "<tested-plugin>"
s.add_development_dependency 'logstash-devutils', '~> 0'
s.add_development_dependency 'logstash-filter-grok', '~> 3.2'
s.add_development_dependency 'logstash-patterns-core', '~> 4.0'
Полный рабочий exapmle можно найти here
Не могли бы вы подробнее остановиться на здесь путях файлов? Вы выполняете тесты на контроллере Ansible или на сервере Logstash? Даже с примером 'Gemfile', я не могу запустить ваш пример spec-файла. – conorsch
У меня была эта ошибка 'NoMethodError: undefined method' pattern_path 'для LogStash :: Environment: Module'. Кажется, нужно добавить это в файл: https: // github.com/logstash-plugins/logstash-filter-grok/pull/73/commits/0be653da88887b2b2413de543d03372a32244905 – Keymon
@conorsch Посмотрите мой ответ – Kelvin