Skip to content

Instantly share code, notes, and snippets.

@majormoses
Created February 28, 2018 08:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save majormoses/9f604bbb995c5c566b5bf643b1eff5e2 to your computer and use it in GitHub Desktop.
Save majormoses/9f604bbb995c5c566b5bf643b1eff5e2 to your computer and use it in GitHub Desktop.
diff --git a/bin/metrics-logstash-node.rb b/bin/metrics-logstash-node.rb
index d8251b3..3975230 100755
--- a/bin/metrics-logstash-node.rb
+++ b/bin/metrics-logstash-node.rb
@@ -112,32 +112,62 @@ class LogstashNodeMetrics < Sensu::Plugin::Metric::CLI::Graphite
metrics['process.open_file_descriptors'] = node['process']['open_file_descriptors']
metrics['process.peak_open_file_descriptors'] = node['process']['peak_open_file_descriptors']
metrics['process.max_file_descriptors'] = node['process']['max_file_descriptors']
-
- node['pipeline']['events'].each do |key, value|
- metrics["pipeline.events.#{key}"] = value
- end
-
- node['pipeline']['plugins']['inputs'].each do |item|
- item['events'] = {} unless item.key?('events')
- metrics["pipeline.plugins.inputs.#{item['name']}.#{item['id']}.events.in"] = item['events']['in'].to_i || 0
- metrics["pipeline.plugins.inputs.#{item['name']}.#{item['id']}.events.out"] = item['events']['out'].to_i || 0
- metrics["pipeline.plugins.inputs.#{item['name']}.#{item['id']}.events.queue_push_duration_in_millis"] = \
- item['events']['queue_push_duration_in_millis'].to_i || 0
- end
-
- node['pipeline']['plugins']['filters'].each do |item|
- item['events'] = {} unless item.key?('events')
- metrics["pipeline.plugins.filters.#{item['name']}.#{item['id']}.events.in"] = item['events']['in'].to_i || 0
- metrics["pipeline.plugins.filters.#{item['name']}.#{item['id']}.events.out"] = item['events']['out'].to_i || 0
- metrics["pipeline.plugins.filters.#{item['name']}.#{item['id']}.events.duration_in_millis"] = item['events']['duration_in_millis'].to_i || 0
- metrics["pipeline.plugins.filters.#{item['name']}.#{item['id']}.matches"] = item['matches'].to_i if item.key?('matches')
- end
-
- node['pipeline']['plugins']['outputs'].each do |item|
- item['events'] = {} unless item.key?('events')
- metrics["pipeline.plugins.outputs.#{item['name']}.#{item['id']}.events.in"] = item['events']['in'].to_i || 0
- metrics["pipeline.plugins.outputs.#{item['name']}.#{item['id']}.events.out"] = item['events']['out'].to_i || 0
- metrics["pipeline.plugins.outputs.#{item['name']}.#{item['id']}.events.duration_in_millis"] = item['events']['duration_in_millis'].to_i || 0
+ # logstash < 6.0
+ if node.key?('pipeline')
+ node['pipeline']['events'].each do |key, value|
+ metrics["pipeline.events.#{key}"] = value
+ end
+
+ node['pipeline']['plugins']['inputs'].each do |item|
+ item['events'] = {} unless item.key?('events')
+ metrics["pipeline.plugins.inputs.#{item['name']}.#{item['id']}.events.in"] = item['events']['in'].to_i || 0
+ metrics["pipeline.plugins.inputs.#{item['name']}.#{item['id']}.events.out"] = item['events']['out'].to_i || 0
+ metrics["pipeline.plugins.inputs.#{item['name']}.#{item['id']}.events.queue_push_duration_in_millis"] = \
+ item['events']['queue_push_duration_in_millis'].to_i || 0
+ end
+
+ node['pipeline']['plugins']['filters'].each do |item|
+ metrics["pipeline.plugins.filters.#{item['name']}.#{item['id']}.events.out"] = item['events']['out'].to_i || 0
+ metrics["pipeline.plugins.filters.#{item['name']}.#{item['id']}.events.duration_in_millis"] = item['events']['duration_in_millis'].to_i || 0
+ metrics["pipeline.plugins.filters.#{item['name']}.#{item['id']}.matches"] = item['matches'].to_i if item.key?('matches')
+ end
+
+ node['pipeline']['plugins']['outputs'].each do |item|
+ item['events'] = {} unless item.key?('events')
+ metrics["pipeline.plugins.outputs.#{item['name']}.#{item['id']}.events.in"] = item['events']['in'].to_i || 0
+ metrics["pipeline.plugins.outputs.#{item['name']}.#{item['id']}.events.out"] = item['events']['out'].to_i || 0
+ metrics["pipeline.plugins.outputs.#{item['name']}.#{item['id']}.events.duration_in_millis"] = item['events']['duration_in_millis'].to_i || 0
+ end
+ # logstash >= 6.0
+ elsif node.key?('pipelines')
+ node['pipelines'].each_key do |pipeline|
+ node['pipelines'][pipeline]['events'].each do |key, value|
+ metrics["pipelines.#{pipeline}.events.#{key}"] = value
+ end
+
+ node['pipelines'][pipeline]['plugins']['inputs'].each do |item|
+ item['events'] = {} unless item.key?('events')
+ metrics["pipelines.#{pipeline}.plugins.inputs.#{item['name']}.#{item['id']}.events.in"] = item['events']['in'].to_i || 0
+ metrics["pipelines.#{pipeline}.plugins.inputs.#{item['name']}.#{item['id']}.events.out"] = item['events']['out'].to_i || 0
+ metrics["pipelines.#{pipeline}.plugins.inputs.#{item['name']}.#{item['id']}.events.queue_push_duration_in_millis"] = item['events']['queue_push_duration_in_millis'].to_i || 0 # rubocop:disable Metrics/LineLength
+ end
+
+ node['pipelines'][pipeline]['plugins']['filters'].each do |item|
+ item['events'] = {} unless item.key?('events')
+ metrics["pipelines.#{pipeline}.plugins.filters.#{item['name']}.#{item['id']}.events.in"] = item['events']['in'].to_i || 0
+ metrics["pipelines.#{pipeline}.plugins.filters.#{item['name']}.#{item['id']}.events.out"] = item['events']['out'].to_i || 0
+ metrics["pipelines.#{pipeline}.plugins.filters.#{item['name']}.#{item['id']}.events.duration_in_millis"] = item['events']['duration_in_millis'].to_i || 0 # rubocop:disable Metrics/LineLength
+ metrics["pipelines.#{pipeline}.plugins.filters.#{item['name']}.#{item['id']}.matches"] = item['matches'].to_i if item.key?('matches')
+ end
+
+ node['pipelines'][pipeline]['plugins']['outputs'].each do |item|
+ item['events'] = {} unless item.key?('events')
+ metrics["pipelines.#{pipeline}.plugins.outputs.#{item['name']}.#{item['id']}.events.in"] = item['events']['in'].to_i || 0
+ metrics["pipelines.#{pipeline}.plugins.outputs.#{item['name']}.#{item['id']}.events.out"] = item['events']['out'].to_i || 0
+ end
+ end
end
metrics.each do |k, v|
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment