private String createLineProtocol(JvmThreadMetrics metrics, long startNanos, StringBuilder sb) { sb.append("jvm_thread_metrics") .append(",AppName=").append(ProfilingConfig.getInstance().getAppName()) .append(" TotalStarted=").append(metrics.getTotalStarted()).append("i") .append(",Active=").append(metrics.getActive()).append("i") .append(",Peak=").append(metrics.getPeak()).append("i") .append(",Daemon=").append(metrics.getDaemon()).append("i") .append(",New=").append(metrics.getNews()).append("i") .append(",Runnable=").append(metrics.getRunnable()).append("i") .append(",Blocked=").append(metrics.getBlocked()).append("i") .append(",Waiting=").append(metrics.getWaiting()).append("i") .append(",TimedWaiting=").append(metrics.getTimedWaiting()).append("i") .append(",Terminated=").append(metrics.getTerminated()).append("i") .append(" ").append(startNanos); return sb.toString(); } }
private void processJVMThreadMetrics(long processId, long startMillis, long stopMillis) { ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean(); threadMetricsProcessor.beforeProcess(processId, startMillis, stopMillis); try { threadMetricsProcessor.process(new JvmThreadMetrics(threadMXBean), processId, startMillis, stopMillis); } finally { threadMetricsProcessor.afterProcess(processId, startMillis, stopMillis); } } }
@Override public String format(List<JvmThreadMetrics> metricsList, long startMillis, long stopMillis) { String dataTitleFormat = "%-14s%14s%14s%14s%14s%14s%14s%14s%14s%14s%n"; StringBuilder sb = new StringBuilder((metricsList.size() + 2) * (14 * 10 + 64)); sb.append("MyPerf4J JVM Thread Metrics [").append(DateFormatUtils.format(startMillis)).append(", ").append(DateFormatUtils.format(stopMillis)).append("]").append(String.format("%n")); sb.append(String.format(dataTitleFormat, "TotalStarted", "Active", "Peak", "Daemon", "New", "Runnable", "Blocked", "Waiting", "TimedWaiting", "Terminated")); if (metricsList.isEmpty()) { return sb.toString(); } String dataFormat = "%-14s%14d%14d%14d%14d%14d%14d%14d%14d%14d%n"; for (int i = 0; i < metricsList.size(); ++i) { JvmThreadMetrics metrics = metricsList.get(i); sb.append(String.format(dataFormat, metrics.getTotalStarted(), metrics.getActive(), metrics.getPeak(), metrics.getDaemon(), metrics.getNews(), metrics.getRunnable(), metrics.getBlocked(), metrics.getWaiting(), metrics.getTimedWaiting(), metrics.getTerminated() )); } return sb.toString(); } }