logstash-core 5.0.0.alpha2.snapshot2-java → 5.0.0.alpha3-java
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of logstash-core might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/lib/logstash-core/version.rb +1 -1
- data/lib/logstash/agent.rb +48 -31
- data/lib/logstash/api/{lib/helpers/app_helpers.rb → app_helpers.rb} +0 -0
- data/lib/logstash/api/command_factory.rb +34 -0
- data/lib/logstash/api/commands/base.rb +25 -0
- data/lib/logstash/api/commands/stats.rb +105 -0
- data/lib/logstash/api/commands/system/basicinfo_command.rb +23 -0
- data/lib/logstash/api/commands/system/plugins_command.rb +35 -0
- data/lib/logstash/api/modules/base.rb +43 -0
- data/lib/logstash/api/modules/node.rb +24 -0
- data/lib/logstash/api/modules/node_stats.rb +59 -0
- data/lib/logstash/api/modules/plugins.rb +15 -0
- data/lib/logstash/api/modules/root.rb +15 -0
- data/lib/logstash/api/modules/stats.rb +63 -0
- data/lib/logstash/api/rack_app.rb +33 -0
- data/lib/logstash/api/service.rb +73 -0
- data/lib/logstash/config/config_ast.rb +23 -18
- data/lib/logstash/config/loader.rb +4 -4
- data/lib/logstash/config/mixin.rb +10 -21
- data/lib/logstash/environment.rb +29 -0
- data/lib/logstash/filters/base.rb +2 -2
- data/lib/logstash/inputs/base.rb +2 -2
- data/lib/logstash/instrument/collector.rb +1 -1
- data/lib/logstash/instrument/metric_store.rb +11 -1
- data/lib/logstash/instrument/periodic_poller/base.rb +2 -0
- data/lib/logstash/instrument/periodic_poller/jvm.rb +47 -2
- data/lib/logstash/logging/json.rb +21 -0
- data/lib/logstash/output_delegator.rb +2 -2
- data/lib/logstash/patches/clamp.rb +69 -0
- data/lib/logstash/pipeline.rb +36 -69
- data/lib/logstash/plugin.rb +1 -1
- data/lib/logstash/runner.rb +171 -146
- data/lib/logstash/settings.rb +267 -0
- data/lib/logstash/util/decorators.rb +6 -6
- data/lib/logstash/util/java_version.rb +1 -10
- data/lib/logstash/util/thread_dump.rb +55 -0
- data/lib/logstash/util/worker_threads_default_printer.rb +2 -2
- data/lib/logstash/version.rb +1 -1
- data/lib/logstash/webserver.rb +15 -49
- data/locales/en.yml +22 -25
- data/logstash-core.gemspec +3 -3
- data/spec/api/lib/api/node_spec.rb +2 -2
- data/spec/api/lib/api/node_stats_spec.rb +32 -57
- data/spec/api/lib/api/plugins_spec.rb +3 -3
- data/spec/api/lib/api/root_spec.rb +2 -2
- data/spec/api/lib/api/support/resource_dsl_methods.rb +47 -0
- data/spec/api/lib/commands/stats.rb +47 -0
- data/spec/api/spec_helper.rb +21 -21
- data/spec/conditionals_spec.rb +113 -113
- data/spec/logstash/agent_spec.rb +85 -68
- data/spec/logstash/config/config_ast_spec.rb +4 -2
- data/spec/logstash/config/mixin_spec.rb +33 -7
- data/spec/logstash/filters/base_spec.rb +16 -16
- data/spec/logstash/inputs/base_spec.rb +8 -8
- data/spec/logstash/instrument/periodic_poller/jvm_spec.rb +45 -0
- data/spec/logstash/output_delegator_spec.rb +2 -0
- data/spec/logstash/pipeline_reporter_spec.rb +5 -1
- data/spec/logstash/pipeline_spec.rb +75 -30
- data/spec/logstash/plugin_spec.rb +2 -2
- data/spec/logstash/runner_spec.rb +112 -25
- data/spec/logstash/setting_spec.rb +130 -0
- data/spec/logstash/settings_spec.rb +62 -0
- metadata +37 -43
- data/lib/logstash/api/init.ru +0 -31
- data/lib/logstash/api/lib/app.rb +0 -40
- data/lib/logstash/api/lib/app/command.rb +0 -29
- data/lib/logstash/api/lib/app/command_factory.rb +0 -29
- data/lib/logstash/api/lib/app/commands/stats/events_command.rb +0 -13
- data/lib/logstash/api/lib/app/commands/stats/hotthreads_command.rb +0 -120
- data/lib/logstash/api/lib/app/commands/stats/memory_command.rb +0 -25
- data/lib/logstash/api/lib/app/commands/system/basicinfo_command.rb +0 -15
- data/lib/logstash/api/lib/app/commands/system/plugins_command.rb +0 -28
- data/lib/logstash/api/lib/app/modules/node.rb +0 -25
- data/lib/logstash/api/lib/app/modules/node_stats.rb +0 -51
- data/lib/logstash/api/lib/app/modules/plugins.rb +0 -15
- data/lib/logstash/api/lib/app/modules/stats.rb +0 -21
- data/lib/logstash/api/lib/app/root.rb +0 -13
- data/lib/logstash/api/lib/app/service.rb +0 -61
- data/lib/logstash/api/lib/app/stats.rb +0 -56
- data/lib/logstash/util/defaults_printer.rb +0 -31
- data/spec/api/lib/api/stats_spec.rb +0 -19
- data/spec/api/lib/commands/events_spec.rb +0 -17
- data/spec/api/lib/commands/jvm_spec.rb +0 -45
- data/spec/logstash/util/defaults_printer_spec.rb +0 -50
- data/spec/logstash/util/worker_threads_default_printer_spec.rb +0 -45
@@ -1,61 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require "logstash/instrument/collector"
|
3
|
-
require "logstash/util/loggable"
|
4
|
-
|
5
|
-
class LogStash::Api::Service
|
6
|
-
|
7
|
-
include Singleton
|
8
|
-
include LogStash::Util::Loggable
|
9
|
-
|
10
|
-
def initialize
|
11
|
-
@snapshot_rotation_mutex = Mutex.new
|
12
|
-
@snapshot = nil
|
13
|
-
logger.debug("[api-service] start") if logger.debug?
|
14
|
-
LogStash::Instrument::Collector.instance.add_observer(self)
|
15
|
-
end
|
16
|
-
|
17
|
-
def stop
|
18
|
-
logger.debug("[api-service] stop") if logger.debug?
|
19
|
-
LogStash::Instrument::Collector.instance.delete_observer(self)
|
20
|
-
end
|
21
|
-
|
22
|
-
def agent
|
23
|
-
LogStash::Instrument::Collector.instance.agent
|
24
|
-
end
|
25
|
-
|
26
|
-
def started?
|
27
|
-
!@snapshot.nil? && has_counters?
|
28
|
-
end
|
29
|
-
|
30
|
-
def update(snapshot)
|
31
|
-
logger.debug("[api-service] snapshot received", :snapshot => snapshot) if logger.debug?
|
32
|
-
if @snapshot_rotation_mutex.try_lock
|
33
|
-
@snapshot = snapshot
|
34
|
-
@snapshot_rotation_mutex.unlock
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def get(key)
|
39
|
-
metric_store = @snapshot.metric_store
|
40
|
-
if key == :jvm_memory_stats
|
41
|
-
data = metric_store.get_with_path("jvm/memory")[:jvm][:memory]
|
42
|
-
else
|
43
|
-
data = metric_store.get_with_path("stats/events")
|
44
|
-
end
|
45
|
-
LogStash::Json.dump(data)
|
46
|
-
end
|
47
|
-
|
48
|
-
private
|
49
|
-
|
50
|
-
def has_counters?
|
51
|
-
(["LogStash::Instrument::MetricType::Counter", "LogStash::Instrument::MetricType::Gauge"] - metric_types).empty?
|
52
|
-
end
|
53
|
-
|
54
|
-
def metric_types
|
55
|
-
types = []
|
56
|
-
@snapshot_rotation_mutex.synchronize do
|
57
|
-
types = @snapshot.metric_store.all.map { |t| t.class.to_s }
|
58
|
-
end
|
59
|
-
return types
|
60
|
-
end
|
61
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require "app"
|
3
|
-
require "app/stats/events_command"
|
4
|
-
require "app/stats/hotthreads_command"
|
5
|
-
|
6
|
-
module LogStash::Api
|
7
|
-
class Stats < BaseApp
|
8
|
-
|
9
|
-
helpers AppHelpers
|
10
|
-
|
11
|
-
|
12
|
-
# Global _stats resource where all information is
|
13
|
-
# retrieved and show
|
14
|
-
get "/" do
|
15
|
-
events_command = factory.build(:events_command)
|
16
|
-
memory_command = factory.build(:memory_command)
|
17
|
-
payload = {
|
18
|
-
:events => events_command.run,
|
19
|
-
:jvm => { :memory => memory_command.run }
|
20
|
-
}
|
21
|
-
respond_with payload
|
22
|
-
end
|
23
|
-
|
24
|
-
# Show all events stats information
|
25
|
-
# (for ingested, emitted, dropped)
|
26
|
-
# - #events since startup
|
27
|
-
# - #data (bytes) since startup
|
28
|
-
# - events/s
|
29
|
-
# - bytes/s
|
30
|
-
# - dropped events/s
|
31
|
-
# - events in the pipeline
|
32
|
-
get "/events" do
|
33
|
-
command = factory.build(:events_command)
|
34
|
-
respond_with({ :events => command.run })
|
35
|
-
end
|
36
|
-
|
37
|
-
# return hot threads information
|
38
|
-
get "/jvm/hot_threads" do
|
39
|
-
top_threads_count = params["threads"] || 3
|
40
|
-
ignore_idle_threads = params["ignore_idle_threads"] || true
|
41
|
-
options = {
|
42
|
-
:threads => top_threads_count.to_i,
|
43
|
-
:ignore_idle_threads => as_boolean(ignore_idle_threads)
|
44
|
-
}
|
45
|
-
command = factory.build(:hot_threads_command)
|
46
|
-
respond_with(command.run(options), :string)
|
47
|
-
end
|
48
|
-
|
49
|
-
# return hot threads information
|
50
|
-
get "/jvm/memory" do
|
51
|
-
command = factory.build(:memory_command)
|
52
|
-
respond_with({ :memory => command.run })
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require "logstash/namespace"
|
3
|
-
require "logstash/util"
|
4
|
-
require "logstash/util/worker_threads_default_printer"
|
5
|
-
|
6
|
-
|
7
|
-
# This class exists to format the settings for defaults used
|
8
|
-
module LogStash module Util class DefaultsPrinter
|
9
|
-
def self.print(settings)
|
10
|
-
new(settings).print
|
11
|
-
end
|
12
|
-
|
13
|
-
def initialize(settings)
|
14
|
-
@settings = settings
|
15
|
-
@printers = [workers]
|
16
|
-
end
|
17
|
-
|
18
|
-
def print
|
19
|
-
collector = []
|
20
|
-
@printers.each do |printer|
|
21
|
-
printer.visit(collector)
|
22
|
-
end
|
23
|
-
"Settings: " + collector.join(', ')
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
def workers
|
29
|
-
WorkerThreadsDefaultPrinter.new(@settings)
|
30
|
-
end
|
31
|
-
end end end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require_relative "../../spec_helper"
|
3
|
-
require "sinatra"
|
4
|
-
require "app/modules/stats"
|
5
|
-
|
6
|
-
describe LogStash::Api::Stats do
|
7
|
-
|
8
|
-
include Rack::Test::Methods
|
9
|
-
|
10
|
-
def app()
|
11
|
-
described_class
|
12
|
-
end
|
13
|
-
|
14
|
-
it "respond to the jvm resource" do
|
15
|
-
do_request { get "/jvm" }
|
16
|
-
expect(last_response).to be_ok
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require_relative "../../spec_helper"
|
3
|
-
require "app/commands/stats/events_command"
|
4
|
-
|
5
|
-
describe LogStash::Api::StatsEventsCommand do
|
6
|
-
|
7
|
-
context "#schema" do
|
8
|
-
|
9
|
-
let(:report) do
|
10
|
-
do_request { subject.run }
|
11
|
-
end
|
12
|
-
|
13
|
-
it "return events information" do
|
14
|
-
expect(report).to include("in", "filtered", "out")
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require_relative "../../spec_helper"
|
3
|
-
require "app/commands/stats/hotthreads_command"
|
4
|
-
require "app/commands/stats/memory_command"
|
5
|
-
|
6
|
-
describe "JVM stats" do
|
7
|
-
|
8
|
-
describe LogStash::Api::HotThreadsCommand do
|
9
|
-
|
10
|
-
let(:report) do
|
11
|
-
do_request { subject.run }
|
12
|
-
end
|
13
|
-
|
14
|
-
context "#schema" do
|
15
|
-
it "return hot threads information" do
|
16
|
-
report = do_request { subject.run }
|
17
|
-
expect(report.to_s).not_to be_empty
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
describe LogStash::Api::JvmMemoryCommand do
|
24
|
-
|
25
|
-
context "#schema" do
|
26
|
-
|
27
|
-
let(:report) do
|
28
|
-
do_request { subject.run }
|
29
|
-
end
|
30
|
-
|
31
|
-
it "return hot threads information" do
|
32
|
-
expect(report).not_to be_empty
|
33
|
-
end
|
34
|
-
|
35
|
-
it "return heap information" do
|
36
|
-
expect(report.keys).to include(:heap_used_in_bytes)
|
37
|
-
end
|
38
|
-
|
39
|
-
it "return non heap information" do
|
40
|
-
expect(report.keys).to include(:non_heap_used_in_bytes)
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require "spec_helper"
|
3
|
-
require "logstash/util/defaults_printer"
|
4
|
-
|
5
|
-
describe LogStash::Util::DefaultsPrinter do
|
6
|
-
shared_examples "a defaults printer" do
|
7
|
-
it 'the .print method returns a defaults description' do
|
8
|
-
expect(actual_block.call).to eq(expected)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
let(:workers) { 1 }
|
13
|
-
let(:expected) { "Settings: User set pipeline workers: #{workers}" }
|
14
|
-
let(:settings) { {} }
|
15
|
-
|
16
|
-
describe 'class methods API' do
|
17
|
-
let(:actual_block) do
|
18
|
-
-> {described_class.print(settings)}
|
19
|
-
end
|
20
|
-
|
21
|
-
context 'when the settings hash is empty' do
|
22
|
-
let(:expected) { "Settings: " }
|
23
|
-
it_behaves_like "a defaults printer"
|
24
|
-
end
|
25
|
-
|
26
|
-
context 'when the settings hash has content' do
|
27
|
-
let(:worker_queue) { 42 }
|
28
|
-
let(:settings) { {:pipeline_workers => workers} }
|
29
|
-
it_behaves_like "a defaults printer"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe 'instance method API' do
|
34
|
-
let(:actual_block) do
|
35
|
-
-> {described_class.new(settings).print}
|
36
|
-
end
|
37
|
-
|
38
|
-
context 'when the settings hash is empty' do
|
39
|
-
let(:expected) { "Settings: " }
|
40
|
-
it_behaves_like "a defaults printer"
|
41
|
-
end
|
42
|
-
|
43
|
-
context 'when the settings hash has content' do
|
44
|
-
let(:workers) { 13 }
|
45
|
-
let(:settings) { {:pipeline_workers => workers} }
|
46
|
-
|
47
|
-
it_behaves_like "a defaults printer"
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require "spec_helper"
|
3
|
-
require "logstash/util/worker_threads_default_printer"
|
4
|
-
|
5
|
-
describe LogStash::Util::WorkerThreadsDefaultPrinter do
|
6
|
-
let(:settings) { {} }
|
7
|
-
let(:collector) { [] }
|
8
|
-
|
9
|
-
subject { described_class.new(settings) }
|
10
|
-
|
11
|
-
before { subject.visit(collector) }
|
12
|
-
|
13
|
-
describe "the #visit method" do
|
14
|
-
context 'when the settings hash is empty' do
|
15
|
-
it 'adds nothing to the collector' do
|
16
|
-
subject.visit(collector)
|
17
|
-
expect(collector).to eq([])
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
context 'when the settings hash has both user and default content' do
|
22
|
-
let(:settings) { {:pipeline_workers => 42, :default_pipeline_workers => 5} }
|
23
|
-
|
24
|
-
it 'adds two strings' do
|
25
|
-
expect(collector).to eq(["User set pipeline workers: 42", "Default pipeline workers: 5"])
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
context 'when the settings hash has only user content' do
|
30
|
-
let(:settings) { {:pipeline_workers => 42} }
|
31
|
-
|
32
|
-
it 'adds a string with user set pipeline workers' do
|
33
|
-
expect(collector.first).to eq("User set pipeline workers: 42")
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
context 'when the settings hash has only default content' do
|
38
|
-
let(:settings) { {:default_pipeline_workers => 5} }
|
39
|
-
|
40
|
-
it 'adds a string with default pipeline workers' do
|
41
|
-
expect(collector.first).to eq("Default pipeline workers: 5")
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|