Expose stats the right way

Fixes #6367
This commit is contained in:
Suyog Rao 2016-12-05 16:00:36 -08:00
parent dc83cc9284
commit 564bb7d41e
3 changed files with 24 additions and 7 deletions

View file

@ -52,7 +52,8 @@ class LogStash::Agent
# Create the collectors and configured it with the library
configure_metrics_collectors
@reload_metric = metric.namespace([:stats, :pipelines])
@pipeline_reload_metric = metric.namespace([:stats, :pipelines])
@instance_reload_metric = metric.namespace([:stats, :reloads])
@dispatcher = LogStash::EventDispatcher.new(self)
LogStash::PLUGIN_REGISTRY.hooks.register_emitter(self.class, dispatcher)
@ -109,7 +110,8 @@ class LogStash::Agent
begin
reload_pipeline!(pipeline_id)
rescue => e
@reload_metric.namespace([pipeline_id.to_sym, :reloads]).tap do |n|
@instance_reload_metric.increment(:failures)
@pipeline_reload_metric.namespace([pipeline_id.to_sym, :reloads]).tap do |n|
n.increment(:failures)
n.gauge(:last_error, { :message => e.message, :backtrace => e.backtrace})
n.gauge(:last_failure_timestamp, LogStash::Timestamp.now)
@ -236,7 +238,8 @@ class LogStash::Agent
begin
LogStash::Pipeline.new(config, settings, metric)
rescue => e
@reload_metric.namespace([settings.get("pipeline.id").to_sym, :reloads]).tap do |n|
@instance_reload_metric.increment(:failures)
@pipeline_reload_metric.namespace([settings.get("pipeline.id").to_sym, :reloads]).tap do |n|
n.increment(:failures)
n.gauge(:last_error, { :message => e.message, :backtrace => e.backtrace})
n.gauge(:last_failure_timestamp, LogStash::Timestamp.now)
@ -291,7 +294,8 @@ class LogStash::Agent
begin
pipeline.run
rescue => e
@reload_metric.namespace([id.to_sym, :reloads]).tap do |n|
@instance_reload_metric.increment(:failures)
@pipeline_reload_metric.namespace([id.to_sym, :reloads]).tap do |n|
n.increment(:failures)
n.gauge(:last_error, { :message => e.message, :backtrace => e.backtrace})
n.gauge(:last_failure_timestamp, LogStash::Timestamp.now)
@ -319,6 +323,8 @@ class LogStash::Agent
end
def start_pipelines
@instance_reload_metric.increment(:successes, 0)
@instance_reload_metric.increment(:failures, 0)
@pipelines.each do |id, _|
start_pipeline(id)
# no reloads yet, initalize all the reload metrics
@ -340,10 +346,12 @@ class LogStash::Agent
reset_pipeline_metrics(pipeline_id)
@pipelines[pipeline_id] = new_pipeline
if start_pipeline(pipeline_id) # pipeline started successfuly
@reload_metric.namespace([pipeline_id.to_sym, :reloads]).tap do |n|
@instance_reload_metric.increment(:successes)
@pipeline_reload_metric.namespace([pipeline_id.to_sym, :reloads]).tap do |n|
n.increment(:successes)
n.gauge(:last_success_timestamp, LogStash::Timestamp.now)
end
end
end
@ -356,7 +364,7 @@ class LogStash::Agent
end
def init_pipeline_reload_metrics(id)
@reload_metric.namespace([id.to_sym, :reloads]).tap do |n|
@pipeline_reload_metric.namespace([id.to_sym, :reloads]).tap do |n|
n.increment(:successes, 0)
n.increment(:failures, 0)
n.gauge(:last_error, nil)

View file

@ -16,9 +16,13 @@ module LogStash
),
:mem => memory,
:gc => gc,
:uptime_in_millis => service.get_shallow(:jvm, :uptime_in_millis)
:uptime_in_millis => service.get_shallow(:jvm, :uptime_in_millis),
}
end
def reloads
service.get_shallow(:stats, :reloads)
end
def process
extract_metrics(

View file

@ -13,6 +13,7 @@ module LogStash
:jvm => jvm_payload,
:process => process_payload,
:pipeline => pipeline_payload,
:reloads => reloads
}
respond_with(payload, {:filter => params["filter"]})
end
@ -26,6 +27,10 @@ module LogStash
def jvm_payload
@stats.jvm
end
def reloads
@stats.reloads
end
def process_payload
@stats.process