package zx.soft.zk.manager.controller;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import zx.soft.zk.manager.utils.CmdUtil;
import zx.soft.zk.manager.utils.ServletUtil;
import freemarker.template.TemplateException;
@WebServlet(urlPatterns = { "/monitor" })
public class Monitor extends HttpServlet {
private static final long serialVersionUID = -992002919738191063L;
private final static Logger logger = LoggerFactory.getLogger(Monitor.class);
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.debug("Monitor Action!");
try {
Properties globalProps = (Properties) this.getServletContext().getAttribute("globalProps");
String zkServer = globalProps.getProperty("zkServer");
String[] zkServerLst = zkServer.split(",");
Map<String, Object> templateParam = new HashMap<>();
StringBuffer stats = new StringBuffer();
for (String zkObj : zkServerLst) {
stats.append("<br/><hr/><br/>").append("Server: ").append(zkObj).append("<br/><hr/><br/>");
String[] monitorZKServer = zkObj.split(":");
stats.append(CmdUtil.INSTANCE.executeCmd("stat", monitorZKServer[0], monitorZKServer[1]));
stats.append(CmdUtil.INSTANCE.executeCmd("envi", monitorZKServer[0], monitorZKServer[1]));
}
templateParam.put("stats", stats);
ServletUtil.INSTANCE.renderHtml(request, response, templateParam, "monitor.ftl.html");
} catch (IOException | InterruptedException | TemplateException ex) {
ServletUtil.INSTANCE.renderError(request, response, ex.getMessage());
}
}
}