Skip to content
This repository was archived by the owner on Jun 12, 2020. It is now read-only.

Commit bbe4c4f

Browse files
author
Ted Xiao
committed
send memory pool usage
1 parent 48fdc89 commit bbe4c4f

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

splunk-devops/src/main/java/com/splunk/splunkjenkins/HealthMonitor.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package com.splunk.splunkjenkins;
22

3+
import com.splunk.splunkjenkins.model.EventType;
34
import com.splunk.splunkjenkins.utils.SplunkLogService;
45
import hudson.Extension;
56
import hudson.model.*;
67
import hudson.model.Queue;
78
import jenkins.model.Jenkins;
89

910
import java.io.IOException;
10-
import java.lang.reflect.Method;
11+
import java.lang.management.ManagementFactory;
12+
import java.lang.management.MemoryPoolMXBean;
13+
import java.lang.management.MemoryUsage;
1114
import java.util.*;
1215
import java.util.concurrent.TimeUnit;
1316

@@ -18,7 +21,6 @@
1821
import static com.splunk.splunkjenkins.utils.LogEventHelper.getMasterStats;
1922
import static com.splunk.splunkjenkins.utils.LogEventHelper.getRunningJob;
2023
import static com.splunk.splunkjenkins.utils.LogEventHelper.getSlaveStats;
21-
import static org.apache.commons.lang.reflect.MethodUtils.getAccessibleMethod;
2224

2325
@Extension
2426
public class HealthMonitor extends AsyncPeriodicWork {
@@ -41,11 +43,11 @@ protected void execute(TaskListener listener) throws IOException, InterruptedExc
4143
return;
4244
}
4345
lastAccessTime = System.currentTimeMillis();
44-
sendSlaveUpdate();
45-
listener.getLogger().println("execute sendSlaveUpdate");
46+
sendNodeUpdate();
47+
listener.getLogger().println("execute sendNodeUpdate");
4648
}
4749

48-
private void sendSlaveUpdate() {
50+
private void sendNodeUpdate() {
4951
Map<String, Map<String, Object>> slaveStats = getSlaveStats();
5052
Set<String> aliveSlaves = slaveStats.keySet();
5153
//send event one by one instead of list to aid search
@@ -61,14 +63,28 @@ private void sendSlaveUpdate() {
6163
}
6264
}
6365
SplunkLogService.getInstance().sendBatch(removedSlavs, SLAVE_INFO);
64-
SplunkLogService.getInstance().sendBatch(getRunningJob(),QUEUE_INFO);
66+
SplunkLogService.getInstance().sendBatch(getRunningJob(), QUEUE_INFO);
6567
//replace slave names, at one time should only one thread is running, so modify slaveNames is safe without lock
6668
slaveNames = aliveSlaves;
6769
//update master stats
6870
Map masterEvent = getMasterStats();
6971
masterEvent.put("item", name);
7072
masterEvent.put(Constants.TAG, Constants.QUEUE_TAG_NAME);
7173
SplunkLogService.getInstance().send(masterEvent, QUEUE_INFO);
74+
//send memory details
75+
List<Map> memoryUsages = new ArrayList();
76+
for (MemoryPoolMXBean memoryPoolMXBean : ManagementFactory.getMemoryPoolMXBeans()) {
77+
Map<String, Object> memoryPoolUsage = new HashMap();
78+
MemoryUsage usageDetail = memoryPoolMXBean.getUsage();
79+
memoryPoolUsage.put(Constants.TAG, "jvm_memory");
80+
memoryPoolUsage.put("memory_pool", memoryPoolMXBean.getName());
81+
memoryPoolUsage.put("init_size", usageDetail.getInit() >> 20);
82+
memoryPoolUsage.put("max_size", usageDetail.getMax() >> 20);
83+
memoryPoolUsage.put("committed_size", usageDetail.getCommitted() >> 20);
84+
memoryPoolUsage.put("used_size", usageDetail.getUsed() >> 20);
85+
memoryUsages.add(memoryPoolUsage);
86+
}
87+
SplunkLogService.getInstance().sendBatch(memoryUsages, EventType.QUEUE_INFO);
7288
}
7389

7490
private void sendPendingQueue() {

0 commit comments

Comments
 (0)