# encoding: utf-8 require "logstash/api/commands/base" require_relative "hot_threads_reporter" module LogStash module Api module Commands class Node < Commands::Base def all(selected_fields=[]) payload = { :pipeline => pipeline, :os => os, :jvm => jvm } payload.select! { |k,v| selected_fields.include?(k) } unless selected_fields.empty? payload end def pipeline extract_metrics( [:stats, :pipelines, :main, :config], :workers, :batch_size, :batch_delay ) end def os { :name => java.lang.System.getProperty("os.name"), :arch => java.lang.System.getProperty("os.arch"), :version => java.lang.System.getProperty("os.version"), :available_processors => java.lang.Runtime.getRuntime().availableProcessors() } end def jvm memory_bean = ManagementFactory.getMemoryMXBean() { :pid => ManagementFactory.getRuntimeMXBean().getName().split("@").first.to_i, :version => java.lang.System.getProperty("java.version"), :vm_name => java.lang.System.getProperty("java.vm.name"), :vm_version => java.lang.System.getProperty("java.version"), :vm_vendor => java.lang.System.getProperty("java.vendor"), :vm_name => java.lang.System.getProperty("java.vm.name"), :start_time_in_millis => started_at, :mem => { :heap_init_in_bytes => (memory_bean.getHeapMemoryUsage().getInit() < 0 ? 0 : memory_bean.getHeapMemoryUsage().getInit()), :heap_max_in_bytes => (memory_bean.getHeapMemoryUsage().getMax() < 0 ? 0 : memory_bean.getHeapMemoryUsage().getMax()), :non_heap_init_in_bytes => (memory_bean.getNonHeapMemoryUsage().getInit() < 0 ? 0 : memory_bean.getNonHeapMemoryUsage().getInit()), :non_heap_max_in_bytes => (memory_bean.getNonHeapMemoryUsage().getMax() < 0 ? 0 : memory_bean.getNonHeapMemoryUsage().getMax()) } } end def hot_threads(options={}) HotThreadsReport.new(self, options) end end end end end