in uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java [3128:3347]
private void handleServletJsonSystemDaemonsData(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response)
throws IOException, ServletException
{
String methodName = "handleJsonServletSystemDaemonsData";
duccLogger.trace(methodName, null, messages.fetch("enter"));
StringBuffer sb = new StringBuffer();
sb.append("{ ");
sb.append("\"aaData\": [ ");
boolean first = true;
for(DaemonName daemonName : DuccDaemonRuntimeProperties.daemonNames) {
String status = "unknown";
String heartbeat = "-1";
String heartmax = "-1";
Properties properties = DuccDaemonRuntimeProperties.getInstance().get(daemonName);
switch(daemonName) {
case Webserver:
status = "up";
heartbeat = "0";
heartmax = "0";
break;
case Broker:
boolean brokerAlive = brokerHelper.isAlive();
if(brokerAlive) {
status = "up";
}
else {
status = "down";
}
heartbeat = "0";
heartmax = "0";
break;
case Database:
if(databaseHelper.isAlive()) {
status = "up";
}
else {
status = "down";
}
heartbeat = "0";
heartmax = "0";
break;
default:
status = "unknown";
String hb = DuccDaemonsData.getInstance().getHeartbeat(daemonName);
try {
Long.parseLong(hb);
heartbeat = hb;
long timeout = DuccWebProperties.get_ducc_ws_monitored_daemon_down_millis_expiry()/1000;
if(timeout > 0) {
long overtime = timeout - Long.parseLong(hb);
if(overtime < 0) {
status = "down";
}
else {
status = "up";
}
}
}
catch(Throwable t) {
}
String hx = DuccDaemonsData.getInstance().getMaxHeartbeat(daemonName);
try {
Long.parseLong(hx);
heartmax = hx;
}
catch(Throwable t) {
}
break;
}
String heartmaxTOD = TimeStamp.simpleFormat(DuccDaemonsData.getInstance().getMaxHeartbeatTOD(daemonName));
if(first) {
first = false;
}
else {
sb.append(",");
}
sb.append("[");
sb.append(quote(status));
sb.append(",");
sb.append(quote(getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyDaemonName,daemonName.toString())));
sb.append(",");
sb.append(quote(getTimeStamp(DuccCookies.getDateStyle(request),getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyBootTime,""))));
sb.append(",");
sb.append(quote(getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyNodeIpAddress,"")));
sb.append(",");
sb.append(quote(getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyNodeName,"")));
sb.append(",");
sb.append(quote(getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyPid,"")));
sb.append(",");
Long pubSize = DuccDaemonsData.getInstance().getEventSize(daemonName);
sb.append(quote(""+pubSize));
sb.append(",");
Long pubSizeMax = DuccDaemonsData.getInstance().getEventSizeMax(daemonName);
sb.append(quote(""+pubSizeMax));
sb.append(",");
sb.append(quote(heartbeat));
sb.append(",");
sb.append(quote(heartmax));
sb.append(",");
try {
heartmaxTOD = getTimeStamp(DuccCookies.getDateStyle(request),heartmaxTOD);
}
catch(Exception e) {
}
sb.append(quote(heartmaxTOD));
sb.append(",");
String jmxUrl = getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyJmxUrl,"");
if(jmxUrl != null) {
sb.append(quote(buildjSonjConsoleLink(jmxUrl)));
}
sb.append("]");
}
// <Agents>
String cookie = DuccCookies.getCookie(request,DuccCookies.cookieAgents);
if(cookie.equals(DuccCookies.valueAgentsShow)) {
duccLogger.trace(methodName, jobid, "== show: "+cookie);
Map<MachineInfo,NodeId> machines = DuccMachinesData.getInstance().getMachines();
Iterator<MachineInfo> iterator = machines.keySet().iterator();
while(iterator.hasNext()) {
MachineInfo machineInfo = iterator.next();
Properties properties = DuccDaemonRuntimeProperties.getInstance().getAgent(machineInfo.getShortName());
if(first) {
first = false;
}
else {
sb.append(",");
}
sb.append("[");
// Status
String status;
String machineStatus = machineInfo.getStatus();
if(machineStatus.equals("down")) {
//status.append("<span class=\"health_red\""+">");
status = machineStatus;
//status.append("</span>");
}
else if(machineStatus.equals("up")) {
//status.append("<span class=\"health_green\""+">");
status = machineStatus;
//status.append("</span>");
}
else {
status = "unknown";
}
sb.append(quote(status));
// Daemon Name
sb.append(",");
String daemonName = "Agent";
sb.append(quote(daemonName));
// Boot Time
sb.append(",");
String bootTime = getTimeStamp(DuccCookies.getDateStyle(request),getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyBootTime,""));
sb.append(quote(bootTime));
// Host IP
sb.append(",");
String hostIP = getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyNodeIpAddress,"");
sb.append(quote(hostIP));
// Host Name
sb.append(",");
String hostName = machineInfo.getName();
sb.append(quote(hostName));
// PID
sb.append(",");
String pid = getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyPid,"");
sb.append(quote(pid));
// Publication Size (last)
sb.append(",");
String publicationSizeLast = machineInfo.getPublicationSizeLast();
sb.append(quote(publicationSizeLast));
// Publication Size (max)
sb.append(",");
String publicationSizeMax = machineInfo.getPublicationSizeMax();
sb.append(quote(publicationSizeMax));
// Heartbeat (last)
sb.append(",");
String heartbeatLast = machineInfo.getHeartbeatLast();
sb.append(quote(heartbeatLast));
// Heartbeat (max)
sb.append(",");
String fmtHeartbeatMax = "";
long heartbeatMax = machineInfo.getHeartbeatMax();
if(heartbeatMax > 0) {
fmtHeartbeatMax += heartbeatMax;
}
sb.append(quote(fmtHeartbeatMax));
// Heartbeat (max) TOD
sb.append(",");
String fmtHeartbeatMaxTOD = "";
long heartbeatMaxTOD = machineInfo.getHeartbeatMaxTOD();
if(heartbeatMaxTOD > 0) {
fmtHeartbeatMaxTOD = TimeStamp.simpleFormat(""+heartbeatMaxTOD);
try {
fmtHeartbeatMaxTOD = getTimeStamp(DuccCookies.getDateStyle(request),fmtHeartbeatMaxTOD);
}
catch(Exception e) {
}
}
sb.append(quote(fmtHeartbeatMaxTOD));
// JConsole URL
sb.append(",");
String fmtJmxUrl = "";
String jmxUrl = getPropertiesValue(properties,DuccDaemonRuntimeProperties.keyJmxUrl,"");
if(jmxUrl != null) {
fmtJmxUrl = buildjSonjConsoleLink(jmxUrl);
}
sb.append(quote(fmtJmxUrl));
sb.append("]");
}
}
else {
duccLogger.trace(methodName, jobid, "!= show: "+cookie);
}
// </Agents>
sb.append(" ]");
sb.append(" }");
duccLogger.debug(methodName, null, sb);
response.getWriter().println(sb);
response.setContentType("application/json");
duccLogger.trace(methodName, null, messages.fetch("exit"));
}