Class: LogStash::Modules::LogStashConfig
- Inherits:
-
Object
- Object
- LogStash::Modules::LogStashConfig
- Defined in:
- lib/logstash/modules/logstash_config.rb
Instance Method Summary collapse
- #alias_settings_keys!(aliases) ⇒ Object
- #array_to_string(array) ⇒ Object
- #config_string ⇒ Object
- #configured_inputs(default = [], aliases = {}) ⇒ Object
- #csv_string(array) ⇒ Object
- #elasticsearch_output_config(type_string = nil) ⇒ Object
- #fetch_raw_setting(name, default) ⇒ Object
- #get_setting(setting_class) ⇒ Object
- #has_setting?(name) ⇒ Boolean
-
#initialize(modul, settings) ⇒ LogStashConfig
constructor
We name it ‘modul` here because `module` has meaning in Ruby.
- #raw_setting(name) ⇒ Object
- #setting(name, default) ⇒ Object
- #template ⇒ Object
Constructor Details
#initialize(modul, settings) ⇒ LogStashConfig
We name it ‘modul` here because `module` has meaning in Ruby.
7 8 9 10 11 |
# File 'lib/logstash/modules/logstash_config.rb', line 7 def initialize(modul, settings) @directory = ::File.join(modul.directory, "logstash") @name = modul.module_name @settings = settings end |
Instance Method Details
#alias_settings_keys!(aliases) ⇒ Object
26 27 28 29 |
# File 'lib/logstash/modules/logstash_config.rb', line 26 def alias_settings_keys!(aliases) aliased_settings = alias_matching_keys(aliases, @settings) @settings = alias_matching_keys(aliases.invert, aliased_settings) end |
#array_to_string(array) ⇒ Object
31 32 33 |
# File 'lib/logstash/modules/logstash_config.rb', line 31 def array_to_string(array) "[#{array.collect { |i| "'#{i}'" }.join(", ")}]" end |
#config_string ⇒ Object
100 101 102 103 104 105 |
# File 'lib/logstash/modules/logstash_config.rb', line 100 def config_string # process the template and settings # send back as a string renderer = ERB.new(FileReader.read(template)) renderer.result(binding) end |
#configured_inputs(default = [], aliases = {}) ⇒ Object
17 18 19 20 21 22 23 24 |
# File 'lib/logstash/modules/logstash_config.rb', line 17 def configured_inputs(default = [], aliases = {}) name = "var.inputs" values = get_setting(LogStash::Setting::SplittableStringArray.new(name, String, default)) aliases.each { |k,v| values << v if values.include?(k) } aliases.invert.each { |k,v| values << v if values.include?(k) } values.flatten.uniq end |
#csv_string(array) ⇒ Object
35 36 37 |
# File 'lib/logstash/modules/logstash_config.rb', line 35 def csv_string(array) "'#{array.join(',')}'" end |
#elasticsearch_output_config(type_string = nil) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/logstash/modules/logstash_config.rb', line 78 def elasticsearch_output_config(type_string = nil) hosts = array_to_string(get_setting(LogStash::Setting::SplittableStringArray.new("var.elasticsearch.hosts", String, ["localhost:9200"]))) index = "#{@name}-#{setting("var.elasticsearch.index_suffix", "%{+YYYY.MM.dd}")}" user = @settings["var.elasticsearch.username"] password = @settings["var.elasticsearch.password"] lines = ["hosts => #{hosts}", "index => \"#{index}\""] lines.push(user ? "user => \"#{user}\"" : nil) lines.push(password ? "password => \"#{password.value}\"" : nil) lines.push(type_string ? "document_type => #{type_string}" : nil) lines.push("ssl => #{@settings.fetch('var.elasticsearch.ssl.enabled', false)}") if cacert = @settings["var.elasticsearch.ssl.certificate_authority"] lines.push("cacert => \"#{cacert}\"") if cacert end # NOTE: the first line should be indented in the conf.erb <<-CONF elasticsearch { #{lines.compact.join("\n ")} manage_template => false } CONF end |
#fetch_raw_setting(name, default) ⇒ Object
74 75 76 |
# File 'lib/logstash/modules/logstash_config.rb', line 74 def fetch_raw_setting(name, default) @settings.fetch(name, default) end |
#get_setting(setting_class) ⇒ Object
39 40 41 42 43 44 45 46 |
# File 'lib/logstash/modules/logstash_config.rb', line 39 def get_setting(setting_class) raw_value = @settings[setting_class.name] # If we dont check for NIL, the Settings class will try to coerce the value # and most of the it will fails when a NIL value is explicitly set. # This will be fixed once we wrap the plugins settings into a Settings class setting_class.set(raw_value) unless raw_value.nil? setting_class.value end |
#has_setting?(name) ⇒ Boolean
66 67 68 |
# File 'lib/logstash/modules/logstash_config.rb', line 66 def has_setting?(name) @settings.key?(name) end |
#raw_setting(name) ⇒ Object
70 71 72 |
# File 'lib/logstash/modules/logstash_config.rb', line 70 def raw_setting(name) @settings[name] end |
#setting(name, default) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/logstash/modules/logstash_config.rb', line 48 def setting(name, default) # by default we use the more permissive setting which is a `NullableString` # This is fine because the end format of the logstash configuration is a string representation # of the pipeline. There is a good reason why I think we should use the settings classes, we # can `preprocess` a template and generate a configuration from the defined settings # validate the values and replace them in the template. case default when String get_setting(LogStash::Setting::NullableString.new(name, default.to_s)) when Numeric get_setting(LogStash::Setting::Numeric.new(name, default)) when true, false get_setting(LogStash::Setting::Boolean.new(name, default)) else get_setting(LogStash::Setting::NullableString.new(name, default.to_s)) end end |
#template ⇒ Object
13 14 15 |
# File 'lib/logstash/modules/logstash_config.rb', line 13 def template ::File.join(@directory, "#{@name}.conf.erb") end |