logstash-core 5.4.3-java → 5.5.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/lib/logstash-core/logstash-core.jar +0 -0
  3. data/lib/logstash-core/version.rb +1 -1
  4. data/lib/logstash/api/commands/hot_threads_reporter.rb +2 -2
  5. data/lib/logstash/api/commands/node.rb +0 -1
  6. data/lib/logstash/api/commands/stats.rb +0 -1
  7. data/lib/logstash/config/mixin.rb +5 -43
  8. data/lib/logstash/config/modules_common.rb +71 -0
  9. data/lib/logstash/elasticsearch_client.rb +120 -0
  10. data/lib/logstash/environment.rb +14 -3
  11. data/lib/logstash/errors.rb +1 -0
  12. data/lib/logstash/execution_context.rb +11 -3
  13. data/lib/logstash/inputs/base.rb +2 -0
  14. data/lib/logstash/instrument/global_metrics.rb +13 -0
  15. data/lib/logstash/instrument/metric_type/mean.rb +5 -0
  16. data/lib/logstash/instrument/periodic_poller/jvm.rb +5 -5
  17. data/lib/logstash/logging/logger.rb +26 -1
  18. data/lib/logstash/modules/cli_parser.rb +74 -0
  19. data/lib/logstash/modules/elasticsearch_config.rb +22 -0
  20. data/lib/logstash/modules/elasticsearch_resource.rb +10 -0
  21. data/lib/logstash/modules/file_reader.rb +36 -0
  22. data/lib/logstash/modules/importer.rb +37 -0
  23. data/lib/logstash/modules/kibana_base_resource.rb +10 -0
  24. data/lib/logstash/modules/kibana_config.rb +104 -0
  25. data/lib/logstash/modules/kibana_resource.rb +10 -0
  26. data/lib/logstash/modules/logstash_config.rb +48 -0
  27. data/lib/logstash/modules/resource_base.rb +37 -0
  28. data/lib/logstash/modules/scaffold.rb +44 -0
  29. data/lib/logstash/namespace.rb +1 -0
  30. data/lib/logstash/outputs/base.rb +2 -0
  31. data/lib/logstash/pipeline.rb +18 -4
  32. data/lib/logstash/plugin.rb +1 -0
  33. data/lib/logstash/plugins/registry.rb +5 -0
  34. data/lib/logstash/runner.rb +42 -2
  35. data/lib/logstash/settings.rb +7 -1
  36. data/lib/logstash/timestamp.rb +4 -0
  37. data/lib/logstash/util/dead_letter_queue_manager.rb +61 -0
  38. data/lib/logstash/util/safe_uri.rb +130 -11
  39. data/lib/logstash/util/thread_dump.rb +3 -1
  40. data/lib/logstash/util/wrapped_acked_queue.rb +24 -6
  41. data/lib/logstash/util/wrapped_synchronous_queue.rb +19 -5
  42. data/lib/logstash/version.rb +1 -1
  43. data/locales/en.yml +46 -0
  44. data/logstash-core.gemspec +7 -2
  45. data/spec/{api/lib/commands/stats.rb → logstash/api/commands/stats_spec.rb} +7 -2
  46. data/spec/{api/lib → logstash/api}/errors_spec.rb +1 -1
  47. data/spec/{api/lib/api → logstash/api/modules}/logging_spec.rb +1 -10
  48. data/spec/{api/lib/api → logstash/api/modules}/node_plugins_spec.rb +2 -3
  49. data/spec/{api/lib/api → logstash/api/modules}/node_spec.rb +6 -7
  50. data/spec/{api/lib/api → logstash/api/modules}/node_stats_spec.rb +2 -2
  51. data/spec/{api/lib/api → logstash/api/modules}/plugins_spec.rb +4 -3
  52. data/spec/{api/lib/api → logstash/api/modules}/root_spec.rb +3 -3
  53. data/spec/{api/lib → logstash/api}/rack_app_spec.rb +0 -0
  54. data/spec/logstash/config/mixin_spec.rb +2 -2
  55. data/spec/logstash/execution_context_spec.rb +20 -1
  56. data/spec/logstash/filter_delegator_spec.rb +2 -1
  57. data/spec/logstash/inputs/base_spec.rb +1 -1
  58. data/spec/logstash/output_delegator_spec.rb +2 -1
  59. data/spec/logstash/outputs/base_spec.rb +1 -1
  60. data/spec/logstash/pipeline_dlq_commit_spec.rb +107 -0
  61. data/spec/logstash/pipeline_pq_file_spec.rb +1 -1
  62. data/spec/logstash/plugin_spec.rb +1 -1
  63. data/spec/logstash/plugins/registry_spec.rb +22 -5
  64. data/spec/logstash/runner_spec.rb +122 -19
  65. data/spec/logstash/settings_spec.rb +91 -0
  66. data/spec/logstash/timestamp_spec.rb +6 -0
  67. data/spec/support/helpers.rb +80 -1
  68. data/spec/support/matchers.rb +13 -0
  69. data/spec/support/shared_contexts.rb +38 -0
  70. data/spec/support/shared_examples.rb +1 -1
  71. metadata +95 -40
  72. data/spec/api/lib/api/support/resource_dsl_methods.rb +0 -87
  73. data/spec/api/spec_helper.rb +0 -111
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 18cd186c56a7177512bce816947c1bf23e6aaa29
4
- data.tar.gz: bfd08b7dd4db8136614ccd74deb77bf90d7a1c65
3
+ metadata.gz: 4b98be9ab7006918b14eec0ad319a2faa11e2461
4
+ data.tar.gz: d94019aa11fa085d61ed700b8eab297975449648
5
5
  SHA512:
6
- metadata.gz: 1d85248bae95148415ff465d6ee4ef154db59909a1713f4169a9877db4be46e636a4c8df63c5f3243788e0203612f72e4ae53e1a0d4dcf7f4b0214f6e573020f
7
- data.tar.gz: f863dfd3f9a227bb02dfdf0ebe47624c0f1be6cfd9c5438b80ef4d319123485e8090e2ccf5d97ea956bcf9b36bb7ce2e6048c61a5924fdd169d8ad14713b84e3
6
+ metadata.gz: 3fe7898ed25893c3b47c06762dbf411613a29a07a00d15eddc496f25f6be3d7fe017a60d8e1e0016814be2755a6e3a81cdbc71958c6c56ec5c149cbce5d1be59
7
+ data.tar.gz: 4b06ab8cfbc1bdf914977a57a9dbf99f429c1b6df6da703fd6bb9a2a51b5fb7f1fb7343c364c66577c34a234769aaad5f2ab2c92d362b1ce25b1fc2ce5f7a3a0
@@ -5,4 +5,4 @@
5
5
  # Note to authors: this should not include dashes because 'gem' barfs if
6
6
  # you include a dash in the version string.
7
7
 
8
- LOGSTASH_CORE_VERSION = "5.4.3"
8
+ LOGSTASH_CORE_VERSION = "5.5.0"
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ java_import 'org.logstash.instrument.reports.ThreadsReport'
2
3
 
3
4
  class HotThreadsReport
4
5
  STRING_SEPARATOR_LENGTH = 80.freeze
@@ -7,8 +8,7 @@ class HotThreadsReport
7
8
  def initialize(cmd, options)
8
9
  @cmd = cmd
9
10
  filter = { :stacktrace_size => options.fetch(:stacktrace_size, HOT_THREADS_STACK_TRACES_SIZE_DEFAULT) }
10
- jr_dump = JRMonitor.threads.generate(filter)
11
- @thread_dump = ::LogStash::Util::ThreadDump.new(options.merge(:dump => jr_dump))
11
+ @thread_dump = ::LogStash::Util::ThreadDump.new(options.merge(:dump => ThreadsReport.generate(filter)))
12
12
  end
13
13
 
14
14
  def to_s
@@ -40,7 +40,6 @@ module LogStash
40
40
  {
41
41
  :pid => ManagementFactory.getRuntimeMXBean().getName().split("@").first.to_i,
42
42
  :version => java.lang.System.getProperty("java.version"),
43
- :vm_name => java.lang.System.getProperty("java.vm.name"),
44
43
  :vm_version => java.lang.System.getProperty("java.version"),
45
44
  :vm_vendor => java.lang.System.getProperty("java.vendor"),
46
45
  :vm_name => java.lang.System.getProperty("java.vm.name"),
@@ -54,7 +54,6 @@ module LogStash
54
54
  def memory
55
55
  memory = service.get_shallow(:jvm, :memory)
56
56
  {
57
- :heap_used_in_bytes => memory[:heap][:used_in_bytes],
58
57
  :heap_used_percent => memory[:heap][:used_percent],
59
58
  :heap_committed_in_bytes => memory[:heap][:committed_in_bytes],
60
59
  :heap_max_in_bytes => memory[:heap][:max_in_bytes],
@@ -6,7 +6,6 @@ require "logstash/util/password"
6
6
  require "logstash/util/safe_uri"
7
7
  require "logstash/version"
8
8
  require "logstash/environment"
9
- require "logstash/util/environment_variables"
10
9
  require "logstash/util/plugin_version"
11
10
  require "filesize"
12
11
 
@@ -34,37 +33,21 @@ LogStash::Environment.load_locale!
34
33
  # }
35
34
  #
36
35
  module LogStash::Config::Mixin
36
+
37
+ include LogStash::Util::EnvironmentVariables
38
+
37
39
  attr_accessor :config
38
40
  attr_accessor :original_params
39
41
 
40
42
  PLUGIN_VERSION_1_0_0 = LogStash::Util::PluginVersion.new(1, 0, 0)
41
43
  PLUGIN_VERSION_0_9_0 = LogStash::Util::PluginVersion.new(0, 9, 0)
42
-
43
- ENV_PLACEHOLDER_REGEX = /\$\{(?<name>\w+)(\:(?<default>[^}]*))?\}/
44
-
44
+
45
45
  # This method is called when someone does 'include LogStash::Config'
46
46
  def self.included(base)
47
47
  # Add the DSL methods to the 'base' given.
48
48
  base.extend(LogStash::Config::Mixin::DSL)
49
49
  end
50
-
51
- # Recursive method to replace environment variable references in parameters
52
- def deep_replace(value)
53
- if (value.is_a?(Hash))
54
- value.each do |valueHashKey, valueHashValue|
55
- value[valueHashKey.to_s] = deep_replace(valueHashValue)
56
- end
57
- else
58
- if (value.is_a?(Array))
59
- value.each_index do | valueArrayIndex|
60
- value[valueArrayIndex] = deep_replace(value[valueArrayIndex])
61
- end
62
- else
63
- return replace_env_placeholders(value)
64
- end
65
- end
66
- end
67
-
50
+
68
51
  def config_init(params)
69
52
  # Validation will modify the values inside params if necessary.
70
53
  # For example: converting a string to a number, etc.
@@ -159,27 +142,6 @@ module LogStash::Config::Mixin
159
142
  @config = params
160
143
  end # def config_init
161
144
 
162
- # Replace all environment variable references in 'value' param by environment variable value and return updated value
163
- # Process following patterns : $VAR, ${VAR}, ${VAR:defaultValue}
164
- def replace_env_placeholders(value)
165
- return value unless value.is_a?(String)
166
-
167
- value.gsub(ENV_PLACEHOLDER_REGEX) do |placeholder|
168
- # Note: Ruby docs claim[1] Regexp.last_match is thread-local and scoped to
169
- # the call, so this should be thread-safe.
170
- #
171
- # [1] http://ruby-doc.org/core-2.1.1/Regexp.html#method-c-last_match
172
- name = Regexp.last_match(:name)
173
- default = Regexp.last_match(:default)
174
-
175
- replacement = ENV.fetch(name, default)
176
- if replacement.nil?
177
- raise LogStash::ConfigurationError, "Cannot evaluate `#{placeholder}`. Environment variable `#{name}` is not set and there is no default value given."
178
- end
179
- replacement
180
- end
181
- end # def replace_env_placeholders
182
-
183
145
  module DSL
184
146
 
185
147
  include LogStash::Util::EnvironmentVariables
@@ -0,0 +1,71 @@
1
+ # encoding: utf-8
2
+ require "logstash/util/loggable"
3
+ require "logstash/elasticsearch_client"
4
+ require "logstash/modules/importer"
5
+ require "logstash/errors"
6
+
7
+ module LogStash module Config
8
+ class ModulesCommon # extracted here for bwc with 5.x
9
+ include LogStash::Util::Loggable
10
+
11
+ def self.pipeline_configs(settings)
12
+ pipelines = []
13
+ plugin_modules = LogStash::PLUGIN_REGISTRY.plugins_with_type(:modules)
14
+
15
+ modules_array = settings.get("modules.cli").empty? ? settings.get("modules") : settings.get("modules.cli")
16
+ if modules_array.empty?
17
+ # no specifed modules
18
+ return pipelines
19
+ end
20
+ logger.debug("Specified modules", :modules_array => modules_array.to_s)
21
+
22
+ module_names = modules_array.collect {|module_hash| module_hash["name"]}
23
+ if module_names.length > module_names.uniq.length
24
+ duplicate_modules = module_names.group_by(&:to_s).select { |_,v| v.size > 1 }.keys
25
+ raise LogStash::ConfigLoadingError, I18n.t("logstash.modules.configuration.modules-must-be-unique", :duplicate_modules => duplicate_modules)
26
+ end
27
+
28
+ available_module_names = plugin_modules.map(&:module_name)
29
+ specified_and_available_names = module_names & available_module_names
30
+
31
+ if (specified_and_available_names).empty?
32
+ i18n_opts = {:specified_modules => module_names, :available_modules => available_module_names}
33
+ raise LogStash::ConfigLoadingError, I18n.t("logstash.modules.configuration.modules-unavailable", i18n_opts)
34
+ end
35
+
36
+ specified_and_available_names.each do |module_name|
37
+ connect_fail_args = {}
38
+ begin
39
+ module_hash = modules_array.find {|m| m["name"] == module_name}
40
+ current_module = plugin_modules.find { |allmodules| allmodules.module_name == module_name }
41
+
42
+ alt_name = "module-#{module_name}"
43
+ pipeline_id = alt_name
44
+
45
+ current_module.with_settings(module_hash)
46
+ esclient = LogStash::ElasticsearchClient.build(module_hash)
47
+ config_test = settings.get("config.test_and_exit")
48
+ if esclient.can_connect? || config_test
49
+ if !config_test
50
+ current_module.import(LogStash::Modules::Importer.new(esclient))
51
+ end
52
+
53
+ config_string = current_module.config_string
54
+
55
+ pipelines << {"pipeline_id" => pipeline_id, "alt_name" => alt_name, "config_string" => config_string, "settings" => settings}
56
+ else
57
+ connect_fail_args[:module_name] = module_name
58
+ connect_fail_args[:hosts] = esclient.host_settings
59
+ end
60
+ rescue => e
61
+ raise LogStash::ConfigLoadingError, I18n.t("logstash.modules.configuration.parse-failed", :error => e.message)
62
+ end
63
+
64
+ if !connect_fail_args.empty?
65
+ raise LogStash::ConfigLoadingError, I18n.t("logstash.modules.configuration.elasticsearch_connection_failed", connect_fail_args)
66
+ end
67
+ end
68
+ pipelines
69
+ end
70
+ end
71
+ end end
@@ -0,0 +1,120 @@
1
+ # encoding: utf-8
2
+ require "logstash/namespace"
3
+ require "logstash/logging"
4
+ require "elasticsearch"
5
+ require "elasticsearch/transport/transport/http/manticore"
6
+
7
+ module LogStash class ElasticsearchClient
8
+ include LogStash::Util::Loggable
9
+
10
+ class Response
11
+ # duplicated here from Elasticsearch::Transport::Transport::Response
12
+ # to create a normalised response across different client IMPL
13
+ attr_reader :status, :body, :headers
14
+ def initialize(status, body, headers={})
15
+ @status, @body, @headers = status, body, headers
16
+ @body = body.force_encoding('UTF-8') if body.respond_to?(:force_encoding)
17
+ end
18
+ end
19
+
20
+ def self.build(settings)
21
+ new(RubyClient.new(settings, logger))
22
+ end
23
+
24
+ class RubyClient
25
+ def initialize(settings, logger)
26
+ @settings = settings
27
+ @logger = logger
28
+ @client_args = client_args
29
+ @client = Elasticsearch::Client.new(@client_args)
30
+ end
31
+
32
+ def can_connect?
33
+ begin
34
+ head(SecureRandom.hex(32).prepend('_'))
35
+ rescue Elasticsearch::Transport::Transport::Errors::BadRequest
36
+ true
37
+ rescue Manticore::SocketException
38
+ false
39
+ end
40
+ end
41
+
42
+ def host_settings
43
+ @client_args[:hosts]
44
+ end
45
+
46
+ def delete(path)
47
+ begin
48
+ normalize_response(@client.perform_request('DELETE', path, {}, nil))
49
+ rescue Exception => e
50
+ if is_404_error?(e)
51
+ Response.new(404, "", {})
52
+ else
53
+ raise e
54
+ end
55
+ end
56
+ end
57
+
58
+ def put(path, content)
59
+ normalize_response(@client.perform_request('PUT', path, {}, content))
60
+ end
61
+
62
+ def head(path)
63
+ begin
64
+ normalize_response(@client.perform_request('HEAD', path, {}, nil))
65
+ rescue Exception => e
66
+ if is_404_error?(e)
67
+ Response.new(404, "", {})
68
+ else
69
+ raise e
70
+ end
71
+ end
72
+ end
73
+
74
+ private
75
+
76
+ def is_404_error?(error)
77
+ error.class.to_s =~ /NotFound/ || error.message =~ /Not\s*Found|404/i
78
+ end
79
+
80
+ def normalize_response(response)
81
+ Response.new(response.status, response.body, response.headers)
82
+ end
83
+
84
+ def client_args
85
+ {
86
+ :transport_class => Elasticsearch::Transport::Transport::HTTP::Manticore,
87
+ :hosts => [*unpack_hosts],
88
+ # :logger => @logger, # silence the client logging
89
+ }
90
+ end
91
+
92
+ def unpack_hosts
93
+ @settings.fetch("var.output.elasticsearch.hosts", "localhost:9200").split(',').map(&:strip)
94
+ end
95
+ end
96
+
97
+ def initialize(client)
98
+ @client = client
99
+ end
100
+
101
+ def delete(path)
102
+ @client.delete(path)
103
+ end
104
+
105
+ def put(path, content)
106
+ @client.put(path, content)
107
+ end
108
+
109
+ def head(path)
110
+ @client.head(path)
111
+ end
112
+
113
+ def can_connect?
114
+ @client.can_connect?
115
+ end
116
+
117
+ def host_settings
118
+ @client.host_settings
119
+ end
120
+ end end # class LogStash::ModulesImporter
@@ -20,6 +20,8 @@ module LogStash
20
20
  Setting::NullableString.new("path.config", nil, false),
21
21
  Setting::WritableDirectory.new("path.data", ::File.join(LogStash::Environment::LOGSTASH_HOME, "data")),
22
22
  Setting::NullableString.new("config.string", nil, false),
23
+ Setting.new("modules.cli", Array, []),
24
+ Setting.new("modules", Array, []),
23
25
  Setting::Boolean.new("config.test_and_exit", false),
24
26
  Setting::Boolean.new("config.reload.automatic", false),
25
27
  Setting::Numeric.new("config.reload.interval", 3), # in seconds
@@ -49,6 +51,7 @@ module LogStash
49
51
  Setting::Numeric.new("queue.checkpoint.acks", 1024), # 0 is unlimited
50
52
  Setting::Numeric.new("queue.checkpoint.writes", 1024), # 0 is unlimited
51
53
  Setting::Numeric.new("queue.checkpoint.interval", 1000), # 0 is no time-based checkpointing
54
+ Setting::Boolean.new("dead_letter_queue.enable", false),
52
55
  Setting::TimeValue.new("slowlog.threshold.warn", "-1"),
53
56
  Setting::TimeValue.new("slowlog.threshold.info", "-1"),
54
57
  Setting::TimeValue.new("slowlog.threshold.debug", "-1"),
@@ -58,13 +61,21 @@ module LogStash
58
61
  # Compute the default queue path based on `path.data`
59
62
  default_queue_file_path = ::File.join(SETTINGS.get("path.data"), "queue")
60
63
  SETTINGS.register Setting::WritableDirectory.new("path.queue", default_queue_file_path)
61
-
64
+ # Compute the default dead_letter_queue path based on `path.data`
65
+ default_dlq_file_path = ::File.join(SETTINGS.get("path.data"), "dead_letter_queue")
66
+ SETTINGS.register Setting::WritableDirectory.new("path.dead_letter_queue", default_dlq_file_path)
67
+
62
68
  SETTINGS.on_post_process do |settings|
63
69
  # If the data path is overridden but the queue path isn't recompute the queue path
64
70
  # We need to do this at this stage because of the weird execution order
65
71
  # our monkey-patched Clamp follows
66
- if settings.set?("path.data") && !settings.set?("path.queue")
67
- settings.set_value("path.queue", ::File.join(settings.get("path.data"), "queue"))
72
+ if settings.set?("path.data")
73
+ if !settings.set?("path.queue")
74
+ settings.set_value("path.queue", ::File.join(settings.get("path.data"), "queue"))
75
+ end
76
+ if !settings.set?("path.dead_letter_queue")
77
+ settings.set_value("path.dead_letter_queue", ::File.join(settings.get("path.data"), "dead_letter_queue"))
78
+ end
68
79
  end
69
80
  end
70
81
 
@@ -9,4 +9,5 @@ module LogStash
9
9
 
10
10
  class Bug < Error; end
11
11
  class ThisMethodWasRemoved < Bug; end
12
+ class ConfigLoadingError < Error; end
12
13
  end
@@ -1,10 +1,18 @@
1
1
  # encoding: utf-8
2
+ require "logstash/util/dead_letter_queue_manager"
2
3
  module LogStash
3
4
  class ExecutionContext
4
- attr_reader :pipeline_id
5
+ attr_reader :pipeline, :dlq_writer
5
6
 
6
- def initialize(pipeline_id)
7
- @pipeline_id = pipeline_id
7
+ def initialize(pipeline, plugin_id, plugin_type, dlq_writer)
8
+ @pipeline = pipeline
9
+ @plugin_id = plugin_id
10
+ @plugin_type = plugin_type
11
+ @dlq_writer = LogStash::Util::PluginDeadLetterQueueWriter.new(dlq_writer, @plugin_id, @plugin_type)
12
+ end
13
+
14
+ def pipeline_id
15
+ @pipeline.pipeline_id
8
16
  end
9
17
  end
10
18
  end
@@ -105,6 +105,8 @@ class LogStash::Inputs::Base < LogStash::Plugin
105
105
  super
106
106
  # There is no easy way to propage an instance variable into the codec, because the codec
107
107
  # are created at the class level
108
+ # TODO(talevy): Codecs should have their own execution_context, for now they will inherit their
109
+ # parent plugin's
108
110
  @codec.execution_context = context
109
111
  context
110
112
  end
@@ -0,0 +1,13 @@
1
+ class GlobalMetrics
2
+ class Stats(metric)
3
+ @metric = metric
4
+ end
5
+
6
+ def initialize(metric)
7
+ @metric = metric
8
+
9
+ @pipeline_reloads = metric.namespace([:stats, :pipelines])
10
+ end
11
+
12
+
13
+ end
@@ -4,7 +4,12 @@ require "concurrent"
4
4
 
5
5
  module LogStash module Instrument module MetricType
6
6
  class Mean < Base
7
+ include ::LogStash::Util::Loggable
8
+
7
9
  def initialize(namespaces, key)
10
+ logger.warn("Deprecated 'mean' metric type used! This will be removed in Logstash 6.0!",
11
+ :namespaces => namespaces,
12
+ :key => key)
8
13
  super(namespaces, key)
9
14
 
10
15
  @counter = Concurrent::AtomicFixnum.new
@@ -2,18 +2,19 @@
2
2
  require "logstash/instrument/periodic_poller/base"
3
3
  require "logstash/instrument/periodic_poller/load_average"
4
4
  require "logstash/environment"
5
- require "jrmonitor"
6
5
  require "set"
7
6
 
7
+ java_import 'com.sun.management.UnixOperatingSystemMXBean'
8
8
  java_import 'java.lang.management.ManagementFactory'
9
9
  java_import 'java.lang.management.OperatingSystemMXBean'
10
10
  java_import 'java.lang.management.GarbageCollectorMXBean'
11
11
  java_import 'java.lang.management.RuntimeMXBean'
12
- java_import 'com.sun.management.UnixOperatingSystemMXBean'
13
12
  java_import 'javax.management.MBeanServer'
14
13
  java_import 'javax.management.ObjectName'
15
14
  java_import 'javax.management.AttributeList'
16
15
  java_import 'javax.naming.directory.Attribute'
16
+ java_import 'org.logstash.instrument.reports.MemoryReport'
17
+ java_import 'org.logstash.instrument.reports.ProcessReport'
17
18
 
18
19
 
19
20
  module LogStash module Instrument module PeriodicPoller
@@ -50,7 +51,7 @@ module LogStash module Instrument module PeriodicPoller
50
51
  end
51
52
 
52
53
  def collect
53
- raw = JRMonitor.memory.generate
54
+ raw = MemoryReport.generate
54
55
  collect_jvm_metrics(raw)
55
56
  collect_pools_metrics(raw)
56
57
  collect_threads_metrics
@@ -81,11 +82,10 @@ module LogStash module Instrument module PeriodicPoller
81
82
  end
82
83
 
83
84
  def collect_process_metrics
84
- process_metrics = JRMonitor.process.generate
85
+ process_metrics = ProcessReport.generate
85
86
 
86
87
  path = [:jvm, :process]
87
88
 
88
-
89
89
  open_fds = process_metrics["open_file_descriptors"]
90
90
  if @peak_open_fds.nil? || open_fds > @peak_open_fds
91
91
  @peak_open_fds = open_fds