private String createLineProtocol(JvmBufferPoolMetrics metrics, long startNanos, StringBuilder sb) { sb.append("jvm_buffer_pool_metrics") .append(",AppName=").append(ProfilingConfig.getInstance().getAppName()) .append(",PoolName=").append(metrics.getName()) .append(" Count=").append(metrics.getCount()).append("i") .append(",MemoryUsed=").append(metrics.getMemoryUsed()).append("i") .append(",MemoryCapacity=").append(metrics.getMemoryCapacity()).append("i") .append(" ").append(startNanos); return sb.toString(); } }
private void processJVMBufferPoolMetrics(long processId, long startMillis, long stopMillis) { bufferPoolMetricsProcessor.beforeProcess(processId, startMillis, stopMillis); try { List<BufferPoolMXBean> pools = ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class); for (BufferPoolMXBean mxBean : pools) { bufferPoolMetricsProcessor.process(new JvmBufferPoolMetrics(mxBean), processId, startMillis, stopMillis); } } finally { bufferPoolMetricsProcessor.afterProcess(processId, startMillis, stopMillis); } }
@Override public String format(List<JvmBufferPoolMetrics> metricsList, long startMillis, long stopMillis) { String dataTitleFormat = "%-19s%19s%19s%19s%n"; StringBuilder sb = new StringBuilder((metricsList.size() + 2) * (3 * 19 + 64)); sb.append("MyPerf4J JVM BufferPool Metrics [").append(DateFormatUtils.format(startMillis)).append(", ").append(DateFormatUtils.format(stopMillis)).append("]").append(String.format("%n")); sb.append(String.format(dataTitleFormat, "Name", "Count", "MemoryUsed", "MemoryCapacity")); if (metricsList.isEmpty()) { return sb.toString(); } String dataFormat = "%-19s%19d%19d%19d%n"; for (int i = 0; i < metricsList.size(); ++i) { JvmBufferPoolMetrics metrics = metricsList.get(i); sb.append(String.format(dataFormat, metrics.getName(), metrics.getCount(), metrics.getMemoryUsed(), metrics.getMemoryCapacity())); } return sb.toString(); }