diff --git a/logstash-core/lib/logstash/modules/kibana_config.rb b/logstash-core/lib/logstash/modules/kibana_config.rb index 1453e3438..0ae83a571 100644 --- a/logstash-core/lib/logstash/modules/kibana_config.rb +++ b/logstash-core/lib/logstash/modules/kibana_config.rb @@ -10,7 +10,8 @@ module LogStash module Modules class KibanaConfig include LogStash::Util::Loggable ALLOWED_DIRECTORIES = ["search", "visualization"] - + METRICS_MAX_BUCKETS = (24 * 60 * 60).freeze # 24 hours of events/sec buckets. + KIBANA_CONFIG_CONTENT_ID = "5.5.0".freeze attr_reader :index_name # We name it `modul` here because `module` has meaning in Ruby. @@ -18,7 +19,7 @@ module LogStash module Modules class KibanaConfig @directory = ::File.join(modul.directory, "kibana") @name = modul.module_name @settings = settings - @index_name = settings.fetch("dashboards.kibana_index", ".kibana") + @index_name = @settings.fetch("dashboards.kibana_index", ".kibana") end def dashboards @@ -29,18 +30,19 @@ module LogStash module Modules class KibanaConfig end end - def index_pattern + def kibana_config_patches pattern_name = "#{@name}-*" - default_index_json = '{"defaultIndex": "#{pattern_name}"}' - default_index_content_id = @settings.fetch("index_pattern.kibana_version", "5.4.0") # make this 5.5.0 + metrics_max_buckets = @settings.fetch("dashboards.metrics_max_buckets", METRICS_MAX_BUCKETS).to_s + kibana_config_json = '{"defaultIndex": "' + pattern_name + '}", "metrics:max_buckets": "' + metrics_max_buckets + '"}' + kibana_config_content_id = @settings.fetch("index_pattern.kibana_version", KIBANA_CONFIG_CONTENT_ID) [ KibanaResource.new(@index_name, "index-pattern", dynamic("index-pattern"),nil, pattern_name), - KibanaResource.new(@index_name, "config", nil, default_index_json, default_index_content_id) + KibanaResource.new(@index_name, "config", nil, kibana_config_json, kibana_config_content_id) ] end def resources - list = index_pattern + list = kibana_config_patches dashboards.each do |board| extract_panels_into(board, list) end diff --git a/logstash-core/spec/logstash/modules/scaffold_spec.rb b/logstash-core/spec/logstash/modules/scaffold_spec.rb index fa2d29bf2..f088589e1 100644 --- a/logstash-core/spec/logstash/modules/scaffold_spec.rb +++ b/logstash-core/spec/logstash/modules/scaffold_spec.rb @@ -1,6 +1,7 @@ # encoding: utf-8 # require "logstash/namespace" +require "logstash/modules/kibana_config" require "logstash/modules/scaffold" require "logstash/modules/importer" require "logstash/elasticsearch_client" @@ -113,8 +114,8 @@ ERB expect(files[0].content_path).to eq("gem-home/kibana/index-pattern/foo.json") expect(files[0].import_path).to eq(".kibana/index-pattern/foo-*") - expect(files[1].content).to eq("{\"defaultIndex\": \"\#{pattern_name}\"}") - expect(files[1].import_path).to eq(".kibana/config/5.4.0") + expect(files[1].content).to eq("{\"defaultIndex\": \"foo-*}\", \"metrics:max_buckets\": \"#{LogStash::Modules::KibanaConfig::METRICS_MAX_BUCKETS}\"}") + expect(files[1].import_path).to eq(".kibana/config/#{LogStash::Modules::KibanaConfig::KIBANA_CONFIG_CONTENT_ID}") expect(files[2].content_path).to eq("gem-home/kibana/dashboard/Foo-Dashboard.json") expect(files[2].import_path).to eq(".kibana/dashboard/Foo-Dashboard") @@ -145,7 +146,7 @@ ERB [ "_template/cef", ".kibana/index-pattern/cef-*", - ".kibana/config/5.4.0", + ".kibana/config/#{LogStash::Modules::KibanaConfig::KIBANA_CONFIG_CONTENT_ID}", ".kibana/dashboard/FW-Dashboard", ".kibana/visualization/FW-Metrics", ".kibana/visualization/FW-Last-Update",