/** * Creates a new health check. */ public ThreadDeadlockHealthCheck() { this(new ThreadDeadlockDetector()); }
@Override public Set<String> getValue() { return deadlockDetector.getDeadlockedThreads(); } });
/** * Creates a new health check. */ public ThreadDeadlockHealthCheck() { this(new ThreadDeadlockDetector()); }
@Override public Set<String> getValue() { return deadlockDetector.getDeadlockedThreads(); } });
/** * Creates a new set of gauges using the default MXBeans. */ public ThreadStatesGaugeSet() { this(ManagementFactory.getThreadMXBean(), new ThreadDeadlockDetector()); }
@Override public Integer getValue() { return deadlockDetector.getDeadlockedThreads().size(); } });
/** * Creates a new set of gauges using the default MXBeans. * Caches the information for the given interval and time unit. * * @param interval cache interval * @param unit cache interval time unit */ public CachedThreadStatesGaugeSet(long interval, TimeUnit unit) { this(ManagementFactory.getThreadMXBean(), new ThreadDeadlockDetector(), interval, unit); }
@Override public Integer getValue() { return deadlockDetector.getDeadlockedThreads().size(); } });
/** * Creates a new set of gauges using the default MXBeans. */ public ThreadStatesGaugeSet() { this(ManagementFactory.getThreadMXBean(), new ThreadDeadlockDetector()); }
@Override public Integer getValue() { return deadlockDetector.getDeadlockedThreads().size(); } });
public ThreadStatesGaugeSet(Class<?> scenario) { this.scenario = scenario; this.threads = ManagementFactory.getThreadMXBean(); this.deadlockDetector = new ThreadDeadlockDetector(); }
@Override public Map<String, Metric> getMetrics() { final Map<String, Metric> gauges = new HashMap<>(); for (final Thread.State state : Thread.State.values()) { gauges.put(name(state.toString().toLowerCase(), "count"), (Gauge<Object>) () -> getThreadCount(state)); } gauges.put("count", (Gauge<Integer>) threads::getThreadCount); gauges.put("daemon.count", (Gauge<Integer>) threads::getDaemonThreadCount); gauges.put("deadlock.count", (Gauge<Integer>) () -> deadlockDetector.getDeadlockedThreads().size()); gauges.put("deadlocks", (Gauge<Set<String>>) deadlockDetector::getDeadlockedThreads); return Collections.unmodifiableMap(gauges); }
/** * Creates a new set of gauges using the default MXBeans. */ public ThreadStatesMetricSet() { this(ManagementFactory.getThreadMXBean(), new ThreadDeadlockDetector()); }
@Override protected Result check() throws Exception { final Set<String> threads = detector.getDeadlockedThreads(); if (threads.isEmpty()) { return Result.healthy(); } return Result.unhealthy(threads.toString()); } }
/** * Creates a new set of gauges using the default MXBeans. */ public ThreadStatesMetricSet() { this(ManagementFactory.getThreadMXBean(), new ThreadDeadlockDetector()); }
@Override protected Result check() throws Exception { final Set<String> threads = detector.getDeadlockedThreads(); if (threads.isEmpty()) { return Result.healthy(); } return Result.unhealthy(threads.toString()); } }
@PostConstruct public void registerMetrics() { MetricRegistry registry = metricRegistry(); registry.register("memoryUsage", new MemoryUsageGaugeSet()); registry.register("bufferPools", new BufferPoolMetricSet(getPlatformMBeanServer())); registry.register("garbageCollector", new GarbageCollectorMetricSet()); registry.register("classLoading", new ClassLoadingGaugeSet()); registry.register("fileDescriptorRatio", new FileDescriptorRatioGauge()); registry.register("threadStates", new CachedThreadStatesGaugeSet(getThreadMXBean(), new ThreadDeadlockDetector(), 60, SECONDS)); } }