You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2019/11/25 20:43:33 UTC
svn commit: r1870424 - in /uima/uima-ducc/trunk:
uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/
uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/
uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/
Author: degenaro
Date: Mon Nov 25 20:43:33 2019
New Revision: 1870424
URL: http://svn.apache.org/viewvc?rev=1870424&view=rev
Log:
UIMA-6158 DUCC Web Server (WS) should display Agent BootTime, IP, PID, and JConsoleUrl when no shared filesystem
Added:
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/INodeBootMetrics.java (with props)
Modified:
uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/NodeMetricsUpdateDuccEvent.java
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/MachineInfo.java
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java
uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java
Added: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/INodeBootMetrics.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/INodeBootMetrics.java?rev=1870424&view=auto
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/INodeBootMetrics.java (added)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/INodeBootMetrics.java Mon Nov 25 20:43:33 2019
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+*/
+package org.apache.uima.ducc.transport.event;
+
+public interface INodeBootMetrics {
+
+ public String getBootTime();
+ public String getPid();
+ public String getNodeIp();
+ public String getJconsoleUrl();
+}
Propchange: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/INodeBootMetrics.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/NodeMetricsUpdateDuccEvent.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/NodeMetricsUpdateDuccEvent.java?rev=1870424&r1=1870423&r2=1870424&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/NodeMetricsUpdateDuccEvent.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/event/NodeMetricsUpdateDuccEvent.java Mon Nov 25 20:43:33 2019
@@ -21,25 +21,47 @@ package org.apache.uima.ducc.transport.e
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
+import java.util.Properties;
import java.util.TreeMap;
import org.apache.uima.ducc.common.Node;
import org.apache.uima.ducc.common.NodeIdentity;
import org.apache.uima.ducc.common.agent.metrics.memory.NodeMemory;
+import org.apache.uima.ducc.common.boot.DuccDaemonRuntimeProperties;
import org.apache.uima.ducc.common.node.metrics.NodeUsersInfo;
import org.apache.uima.ducc.common.node.metrics.NodeUsersInfo.NodeProcess;
-public class NodeMetricsUpdateDuccEvent extends AbstractDuccEvent{
+public class NodeMetricsUpdateDuccEvent extends AbstractDuccEvent implements INodeBootMetrics {
private static final long serialVersionUID = -1066240477810440223L;
private Node node;
private int processCount=0;
- public NodeMetricsUpdateDuccEvent(Node node, int processCount) {
- super(EventType.NODE_METRICS);
+ private String bootTime;
+ private String pid;
+ private String nodeIp;
+ private String jconsoleUrl;
+
+ private void init(Node node, int processCount) {
this.node = node;
this.processCount = processCount;
+ DuccDaemonRuntimeProperties drp = DuccDaemonRuntimeProperties.getInstance();
+ if(node != null) {
+ String machineName = node.getNodeIdentity().getShortName();
+ Properties properties = drp.getAgent(machineName);
+ if(properties != null) {
+ bootTime = properties.getProperty(DuccDaemonRuntimeProperties.keyBootTime,"");
+ pid = properties.getProperty(DuccDaemonRuntimeProperties.keyPid,"");
+ nodeIp = properties.getProperty(DuccDaemonRuntimeProperties.keyNodeIpAddress,"");
+ jconsoleUrl = properties.getProperty(DuccDaemonRuntimeProperties.keyJmxUrl,"");
+ }
+ }
+ }
+
+ public NodeMetricsUpdateDuccEvent(Node node, int processCount) {
+ super(EventType.NODE_METRICS);
+ init(node, processCount);
}
public Node getNode() {
return node;
@@ -78,4 +100,20 @@ public class NodeMetricsUpdateDuccEvent
public boolean getCgroupsCpuReportingEnabled() {
return node.getNodeMetrics().isCpuReportingEnabled();
}
+ @Override
+ public String getBootTime() {
+ return bootTime;
+ }
+ @Override
+ public String getPid() {
+ return pid;
+ }
+ @Override
+ public String getNodeIp() {
+ return nodeIp;
+ }
+ @Override
+ public String getJconsoleUrl() {
+ return jconsoleUrl;
+ }
}
Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java?rev=1870424&r1=1870423&r2=1870424&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/DuccMachinesData.java Mon Nov 25 20:43:33 2019
@@ -18,7 +18,9 @@
*/
package org.apache.uima.ducc.ws;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -284,8 +286,11 @@ public class DuccMachinesData {
String memFree = "";
String swapInuse = "";
String swapFree = "";
+ String jConsole = "";
double cpu = 0;
- MachineInfo machineInfo = new MachineInfo(IDuccEnv.DUCC_NODES_FILE_PATH, "", nodeName, memTotal, memReserve, memFree, swapInuse, swapFree, cpu, false, false, null, -1, 0);
+ long bootTime = 0;
+ long pid = 0;
+ MachineInfo machineInfo = new MachineInfo(IDuccEnv.DUCC_NODES_FILE_PATH, "", nodeName, memTotal, memReserve, memFree, swapInuse, swapFree, jConsole, cpu, false, false, null, bootTime, pid, -1, 0);
putMachine(machineInfo);
}
updateSortedMachines();
@@ -386,6 +391,31 @@ public class DuccMachinesData {
return cpu;
}
+ private SimpleDateFormat sdf = new SimpleDateFormat("yyyy.mm.dd HH:mm:ss EEE");
+
+ private long toMillis(String sdate) {
+ long retVal = 0;
+ try {
+ Date d = sdf.parse(sdate);
+ retVal = d.getTime();
+ }
+ catch(Exception e) {
+
+ }
+ return retVal;
+ }
+
+ private long toLong(String sdata) {
+ long retVal = 0;
+ try {
+ retVal = Long.parseLong(sdata);
+ }
+ catch(Exception e) {
+
+ }
+ return retVal;
+ }
+
/**
*
* @param duccEvent
@@ -440,12 +470,26 @@ public class DuccMachinesData {
//String swapFree = ""+lval/*+memUnits*/;
msi.swapFree = lvalSwapFree;
String swapFree = ""+lvalSwapFree/*+memUnits*/;
+
+ String jConsole = null;
+ long bootTime = 0;
+ long pid = 0;
+
+ try {
+ jConsole = nodeMetrics.getJconsoleUrl();
+ bootTime = toMillis(nodeMetrics.getBootTime());
+ pid = toLong(nodeMetrics.getPid());
+ }
+ catch(NoSuchMethodError t) {
+ // legacy Agent
+ }
+
List<ProcessInfo> alienPids = nodeMetrics.getRogueProcessInfoList();
Node node = nodeMetrics.getNode();
double cpu = getCpuLoadAvg(node);
boolean cGroupsEnabled = nodeMetrics.getCgroups();
boolean cGroupsCpuReportingEnabled = nodeMetrics.getCgroupsCpuReportingEnabled();
- MachineInfo current = new MachineInfo("", ip.toString(), machineName, memTotal, memReserve, memFree, ""+swapInuse, ""+swapFree, cpu, cGroupsEnabled, cGroupsCpuReportingEnabled, alienPids, duccEvent.getMillis(), duccEvent.getEventSize());
+ MachineInfo current = new MachineInfo("", ip.toString(), machineName, memTotal, memReserve, memFree, ""+swapInuse, ""+swapFree, jConsole, cpu, cGroupsEnabled, cGroupsCpuReportingEnabled, alienPids, bootTime, pid, duccEvent.getMillis(), duccEvent.getEventSize());
NodeId key = nodeId;
MachineInfo previous = unsortedMachines.get(key);
Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/MachineInfo.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/MachineInfo.java?rev=1870424&r1=1870423&r2=1870424&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/MachineInfo.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/MachineInfo.java Mon Nov 25 20:43:33 2019
@@ -51,10 +51,13 @@ public class MachineInfo implements Comp
private String memFree;
private String swapInuse;
private String swapFree;
+ private String jConsole;
private double cpu;
private boolean cGroupsEnabled;
private boolean cGroupsCpuReportingEnabled;
private List<ProcessInfo> alienPids;
+ private long bootTime;
+ private long pid;
private long swapDelta;
private long heartbeat;
private long heartbeatMax;
@@ -71,15 +74,15 @@ public class MachineInfo implements Comp
private NodeId nodeid;
- public MachineInfo(String fileDef, String ip, String name, String memTotal, String memReserve, String memFree, String swapInuse, String swapFree, double cpu, boolean cGroupsEnabled, boolean cGroupsCpuReportingEnabled, List<ProcessInfo> alienPids, long heartbeat, long pubSize) {
- init(MachineStatus.Defined, fileDef, ip, name, memTotal, memReserve, memFree, swapInuse, swapFree, cpu, cGroupsEnabled, cGroupsCpuReportingEnabled, alienPids, heartbeat, pubSize);
+ public MachineInfo(String fileDef, String ip, String name, String memTotal, String memReserve, String memFree, String swapInuse, String swapFree, String jConsole, double cpu, boolean cGroupsEnabled, boolean cGroupsCpuReportingEnabled, List<ProcessInfo> alienPids, long bootTime, long pid, long heartbeat, long pubSize) {
+ init(MachineStatus.Defined, fileDef, ip, name, memTotal, memReserve, memFree, swapInuse, swapFree, jConsole, cpu, cGroupsEnabled, cGroupsCpuReportingEnabled, alienPids, bootTime, pid, heartbeat, pubSize);
}
- public MachineInfo(MachineStatus machineStatus, String fileDef, String ip, String name, String memTotal, String memReserve, String memFree, String swapInuse, String swapFree, double cpu, boolean cGroupsEnabled, boolean cGroupsCpuReportingEnabled, List<ProcessInfo> alienPids, long heartbeat, long pubSize) {
- init(machineStatus, fileDef, ip, name, memTotal, memReserve, memFree, swapInuse, swapFree, cpu, cGroupsEnabled, cGroupsCpuReportingEnabled, alienPids, heartbeat, pubSize);
+ public MachineInfo(MachineStatus machineStatus, String fileDef, String ip, String name, String memTotal, String memReserve, String memFree, String swapInuse, String swapFree, String jConsole, double cpu, boolean cGroupsEnabled, boolean cGroupsCpuReportingEnabled, List<ProcessInfo> alienPids, long bootTime, long pid, long heartbeat, long pubSize) {
+ init(machineStatus, fileDef, ip, name, memTotal, memReserve, memFree, swapInuse, swapFree, jConsole, cpu, cGroupsEnabled, cGroupsCpuReportingEnabled, alienPids, bootTime, pid, heartbeat, pubSize);
}
- private void init(MachineStatus machineStatus, String fileDef, String ip, String name, String memTotal, String memReserve, String memFree, String swapInuse, String swapFree, double cpu, boolean cGroupsEnabled, boolean cGroupsCpuReportingEnabled, List<ProcessInfo> alienPids, long heartbeat, long pubSize) {
+ private void init(MachineStatus machineStatus, String fileDef, String ip, String name, String memTotal, String memReserve, String memFree, String swapInuse, String swapFree, String jConsole, double cpu, boolean cGroupsEnabled, boolean cGroupsCpuReportingEnabled, List<ProcessInfo> alienPids, long bootTime, long pid, long heartbeat, long pubSize) {
this.machineStatus = machineStatus;
this.fileDef = fileDef;
this.ip = ip;
@@ -89,6 +92,7 @@ public class MachineInfo implements Comp
this.memFree = memFree;
this.swapInuse = swapInuse;
this.swapFree = swapFree;
+ this.jConsole = jConsole;
this.cpu = cpu;
this.cGroupsEnabled = cGroupsEnabled;
this.cGroupsCpuReportingEnabled = cGroupsCpuReportingEnabled;
@@ -96,6 +100,8 @@ public class MachineInfo implements Comp
if(this.alienPids == null) {
this.alienPids = new ArrayList<ProcessInfo>();
}
+ this.bootTime = bootTime;
+ this.pid = pid;
this.swapDelta = 0;
this.heartbeat = heartbeat;
this.heartbeatMax = 0;
@@ -310,6 +316,10 @@ public class MachineInfo implements Comp
return this.swapFree;
}
+ public String getJconsole() {
+ return this.jConsole;
+ }
+
public double getCpu() {
return cpu;
}
@@ -357,6 +367,22 @@ public class MachineInfo implements Comp
return retVal;
}
+ public long getBootTime() {
+ return this.bootTime;
+ }
+
+ public void setBootTime(long value) {
+ this.bootTime = value;
+ }
+
+ public long getPid() {
+ return this.pid;
+ }
+
+ public void setPid(long value) {
+ this.pid = value;
+ }
+
public long getSwapDelta() {
return this.swapDelta;
}
Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java?rev=1870424&r1=1870423&r2=1870424&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java Mon Nov 25 20:43:33 2019
@@ -1673,12 +1673,10 @@ public class DuccHandlerClassic extends
Iterator<MachineInfo> iterator = machines.keySet().iterator();
while(iterator.hasNext()) {
MachineInfo machineInfo = iterator.next();
- DuccDaemonRuntimeProperties drp = DuccDaemonRuntimeProperties.getInstance();
String machineName = machineInfo.getShortName();
if(machineName.startsWith("=")) {
continue;
}
- Properties properties = drp.getAgent(machineName);
sb.append(trGet(counter));
// Status
StringBuffer status = new StringBuffer();
@@ -1711,12 +1709,16 @@ public class DuccHandlerClassic extends
sb.append(daemonName);
sb.append("</td>");
// Boot Time
- String bootTime = getTimeStamp(DuccCookies.getDateStyle(request),getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyBootTime,""));
+ String bootTime = null;
+ long bootTimeLong = machineInfo.getBootTime();
+ if(bootTimeLong > 0) {
+ bootTime = getTimeStamp(DuccCookies.getDateStyle(request),bootTimeLong);
+ }
sb.append("<td>");
sb.append(toDash(bootTime));
sb.append("</td>");
// Host IP
- String hostIP = getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyNodeIpAddress,"");
+ String hostIP = machineInfo.getIp();
sb.append("<td>");
sb.append(toDash(hostIP));
sb.append("</td>");
@@ -1726,7 +1728,11 @@ public class DuccHandlerClassic extends
sb.append(hostName);
sb.append("</td>");
// PID
- String pid = getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyPid,"");
+ String pid = null;
+ long pidLong = machineInfo.getPid();
+ if(pidLong > 0) {
+ pid = ""+pidLong;
+ }
sb.append("<td>");
sb.append(toDash(pid));
sb.append("</td>");
@@ -1768,7 +1774,7 @@ public class DuccHandlerClassic extends
sb.append("</td>");
// JConsole URL
sb.append("<td>");
- String jmxUrl = getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyJmxUrl,"");
+ String jmxUrl = machineInfo.getJconsole();
if(jmxUrl != null) {
sb.append(buildjConsoleLink(jmxUrl));
}
Modified: uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java?rev=1870424&r1=1870423&r2=1870424&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java Mon Nov 25 20:43:33 2019
@@ -2486,12 +2486,10 @@ public class DuccHandlerJsonFormat exten
while(iterator.hasNext()) {
row = new JsonArray();
MachineInfo machineInfo = iterator.next();
- DuccDaemonRuntimeProperties drp = DuccDaemonRuntimeProperties.getInstance();
String machineName = machineInfo.getShortName();
if(machineName.startsWith("=")) {
continue;
}
- Properties properties = drp.getAgent(machineName);
// Status
StringBuffer status = new StringBuffer();
if(brokerAlive) {
@@ -2518,16 +2516,24 @@ public class DuccHandlerJsonFormat exten
String daemonName = "Agent";
row.add(new JsonPrimitive(daemonName));
// Boot Time
- String bootTime = getTimeStamp(DuccCookies.getDateStyle(request),getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyBootTime,""));
+ String bootTime = null;
+ long bootTimeLong = machineInfo.getBootTime();
+ if(bootTimeLong > 0) {
+ bootTime = getTimeStamp(DuccCookies.getDateStyle(request),bootTimeLong);
+ }
row.add(new JsonPrimitive(bootTime));
// Host IP
- String hostIP = getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyNodeIpAddress,"");
+ String hostIP = machineInfo.getIp();
row.add(new JsonPrimitive(hostIP));
// Host Name
String hostName = machineInfo.getName();
row.add(new JsonPrimitive(hostName));
// PID
- String pid = getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyPid,"");
+ String pid = null;
+ long pidLong = machineInfo.getPid();
+ if(pidLong > 0) {
+ pid = ""+pidLong;
+ }
row.add(new JsonPrimitive(pid));
// Publication Size (last)
String publicationSizeLast = machineInfo.getPublicationSizeLast();
@@ -2559,7 +2565,7 @@ public class DuccHandlerJsonFormat exten
}
row.add(new JsonPrimitive(fmtHeartbeatMaxTOD));
// JConsole URL
- String jmxUrl = getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyJmxUrl,"");
+ String jmxUrl = machineInfo.getJconsole();
String jmxUrlLink = "";
if(jmxUrl != null) {
jmxUrlLink = buildjConsoleLink(jmxUrl);