use of com.alibaba.dubbo.monitor.simple.common.Page in project incubator-dubbo-ops by apache.
the class RegistriesPageHandler method handle.
public Page handle(URL url) {
List<List<String>> rows = new ArrayList<List<String>>();
Collection<Registry> registries = AbstractRegistryFactory.getRegistries();
int registeredCount = 0;
int subscribedCount = 0;
if (registries != null && registries.size() > 0) {
for (Registry registry : registries) {
String server = registry.getUrl().getAddress();
List<String> row = new ArrayList<String>();
row.add(NetUtils.getHostName(server) + "/" + server);
if (registry.isAvailable()) {
row.add("<font color=\"green\">Connected</font>");
} else {
row.add("<font color=\"red\">Disconnected</font>");
}
int registeredSize = 0;
int subscribedSize = 0;
if (registry instanceof AbstractRegistry) {
registeredSize = ((AbstractRegistry) registry).getRegistered().size();
registeredCount += registeredSize;
subscribedSize = ((AbstractRegistry) registry).getSubscribed().size();
subscribedCount += subscribedSize;
}
row.add("<a href=\"registered.html?registry=" + server + "\">Registered(" + registeredSize + ")</a>");
row.add("<a href=\"subscribed.html?registry=" + server + "\">Subscribed(" + subscribedSize + ")</a>");
rows.add(row);
}
}
return new Page("Registries", "Registries (" + rows.size() + ")", new String[] { "Registry Address:", "Status", "Registered(" + registeredCount + ")", "Subscribed(" + subscribedCount + ")" }, rows);
}
use of com.alibaba.dubbo.monitor.simple.common.Page in project incubator-dubbo-ops by apache.
the class ServersPageHandler method handle.
public Page handle(URL url) {
List<List<String>> rows = new ArrayList<List<String>>();
Collection<ExchangeServer> servers = DubboProtocol.getDubboProtocol().getServers();
int clientCount = 0;
if (servers != null && servers.size() > 0) {
for (ExchangeServer s : servers) {
List<String> row = new ArrayList<String>();
String address = s.getUrl().getAddress();
row.add(NetUtils.getHostName(address) + "/" + address);
int clientSize = s.getExchangeChannels().size();
clientCount += clientSize;
row.add("<a href=\"clients.html?port=" + s.getUrl().getPort() + "\">Clients(" + clientSize + ")</a>");
rows.add(row);
}
}
return new Page("Servers", "Servers (" + rows.size() + ")", new String[] { "Server Address:", "Clients(" + clientCount + ")" }, rows);
}
use of com.alibaba.dubbo.monitor.simple.common.Page in project incubator-dubbo-ops by apache.
the class ServicesPageHandler method handle.
public Page handle(URL url) {
Set<String> services = RegistryContainer.getInstance().getServices();
List<List<String>> rows = new ArrayList<List<String>>();
int providerCount = 0;
int consumerCount = 0;
if (services != null && services.size() > 0) {
for (String service : services) {
List<URL> providers = RegistryContainer.getInstance().getProvidersByService(service);
int providerSize = providers == null ? 0 : providers.size();
providerCount += providerSize;
List<URL> consumers = RegistryContainer.getInstance().getConsumersByService(service);
int consumerSize = consumers == null ? 0 : consumers.size();
consumerCount += consumerSize;
List<String> row = new ArrayList<String>();
row.add(service);
if (providerSize > 0 || consumerSize > 0) {
if (providerSize > 0) {
URL provider = providers.iterator().next();
row.add(provider.getParameter(Constants.APPLICATION_KEY, ""));
row.add(provider.getParameter("owner", "") + (provider.hasParameter("organization") ? " (" + provider.getParameter("organization") + ")" : ""));
} else {
row.add("");
row.add("");
}
row.add(providerSize == 0 ? "<font color=\"red\">No provider</a>" : "<a href=\"providers.html?service=" + service + "\">Providers(" + providerSize + ")</a>");
row.add(consumerSize == 0 ? "<font color=\"blue\">No consumer</a>" : "<a href=\"consumers.html?service=" + service + "\">Consumers(" + consumerSize + ")</a>");
row.add("<a href=\"statistics.html?service=" + service + "\">Statistics</a>");
row.add("<a href=\"charts.html?service=" + service + "\">Charts</a>");
rows.add(row);
}
}
}
return new Page("Services", "Services (" + rows.size() + ")", new String[] { "Service Name:", "Application", "Owner", "Providers(" + providerCount + ")", "Consumers(" + consumerCount + ")", "Statistics", "Charts" }, rows);
}
use of com.alibaba.dubbo.monitor.simple.common.Page in project incubator-dubbo-ops by apache.
the class PageServlet method doPost.
@Override
protected final void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if (!response.isCommitted()) {
PrintWriter writer = response.getWriter();
String uri = request.getRequestURI();
boolean isHtml = false;
if (uri == null || uri.length() == 0 || "/".equals(uri)) {
uri = "index";
isHtml = true;
} else {
if (uri.startsWith("/")) {
uri = uri.substring(1);
}
if (uri.endsWith(".html")) {
uri = uri.substring(0, uri.length() - ".html".length());
isHtml = true;
}
}
if (uri.endsWith("favicon.ico")) {
response.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
}
ExtensionLoader<PageHandler> pageHandlerLoader = ExtensionLoader.getExtensionLoader(PageHandler.class);
PageHandler pageHandler = pageHandlerLoader.hasExtension(uri) ? pageHandlerLoader.getExtension(uri) : null;
if (isHtml) {
writer.println("<html><head><title>Dubbo</title>");
writer.println("<style type=\"text/css\">html, body {margin: 10;padding: 0;background-color: #6D838C;font-family: Arial, Verdana;font-size: 12px;color: #FFFFFF;text-align: center;vertical-align: middle;word-break: break-all; } table {width: 90%; margin: 0px auto;border-collapse: collapse;border: 8px solid #FFFFFF; } thead tr {background-color: #253c46; } tbody tr {background-color: #8da5af; } th {padding-top: 4px;padding-bottom: 4px;font-size: 14px;height: 20px; } td {margin: 3px;padding: 3px;border: 2px solid #FFFFFF;font-size: 14px;height: 25px; } a {color: #FFFFFF;cursor: pointer;text-decoration: underline; } a:hover {text-decoration: none; }</style>");
writer.println("</head><body>");
}
if (pageHandler != null) {
Page page = null;
try {
String query = request.getQueryString();
page = pageHandler.handle(URL.valueOf(request.getRequestURL().toString() + (query == null || query.length() == 0 ? "" : "?" + query)));
} catch (Throwable t) {
logger.warn(t.getMessage(), t);
String msg = t.getMessage();
if (msg == null) {
msg = StringUtils.toString(t);
}
if (isHtml) {
writer.println("<table>");
writer.println("<thead>");
writer.println(" <tr>");
writer.println(" <th>Error</th>");
writer.println(" </tr>");
writer.println("</thead>");
writer.println("<tbody>");
writer.println(" <tr>");
writer.println(" <td>");
writer.println(" " + msg.replace("<", "<").replace(">", "<").replace("\n", "<br/>"));
writer.println(" </td>");
writer.println(" </tr>");
writer.println("</tbody>");
writer.println("</table>");
writer.println("<br/>");
} else {
writer.println(msg);
}
}
if (page != null) {
if (isHtml) {
String nav = page.getNavigation();
if (nav == null || nav.length() == 0) {
nav = ExtensionLoader.getExtensionLoader(PageHandler.class).getExtensionName(pageHandler);
nav = nav.substring(0, 1).toUpperCase() + nav.substring(1);
}
if (!"index".equals(uri)) {
nav = "<a href=\"/\">Home</a> > " + nav;
}
writeMenu(request, writer, nav);
writeTable(writer, page.getTitle(), page.getColumns(), page.getRows());
} else {
if (page.getRows().size() > 0 && page.getRows().get(0).size() > 0) {
writer.println(page.getRows().get(0).get(0));
}
}
}
} else {
if (isHtml) {
writer.println("<table>");
writer.println("<thead>");
writer.println(" <tr>");
writer.println(" <th>Error</th>");
writer.println(" </tr>");
writer.println("</thead>");
writer.println("<tbody>");
writer.println(" <tr>");
writer.println(" <td>");
writer.println(" Not found " + uri + " page. Please goto <a href=\"/\">Home</a> page.");
writer.println(" </td>");
writer.println(" </tr>");
writer.println("</tbody>");
writer.println("</table>");
writer.println("<br/>");
} else {
writer.println("Not found " + uri + " page.");
}
}
if (isHtml) {
writer.println("</body></html>");
}
writer.flush();
}
}
use of com.alibaba.dubbo.monitor.simple.common.Page in project incubator-dubbo-ops by apache.
the class ApplicationsPageHandler method handle.
public Page handle(URL url) {
Set<String> applications = RegistryContainer.getInstance().getApplications();
List<List<String>> rows = new ArrayList<List<String>>();
int providersCount = 0;
int consumersCount = 0;
int efferentCount = 0;
int afferentCount = 0;
if (applications != null && applications.size() > 0) {
for (String application : applications) {
List<String> row = new ArrayList<String>();
row.add(application);
List<URL> providers = RegistryContainer.getInstance().getProvidersByApplication(application);
List<URL> consumers = RegistryContainer.getInstance().getConsumersByApplication(application);
if (providers != null && providers.size() > 0 || consumers != null && consumers.size() > 0) {
URL provider = (providers != null && providers.size() > 0 ? providers.iterator().next() : consumers.iterator().next());
row.add(provider.getParameter("owner", "") + (provider.hasParameter("organization") ? " (" + provider.getParameter("organization") + ")" : ""));
} else {
row.add("");
}
int providersSize = providers == null ? 0 : providers.size();
providersCount += providersSize;
row.add(providersSize == 0 ? "<font color=\"blue\">No provider</font>" : "<a href=\"providers.html?application=" + application + "\">Providers(" + providersSize + ")</a>");
int consumersSize = consumers == null ? 0 : consumers.size();
consumersCount += consumersSize;
row.add(consumersSize == 0 ? "<font color=\"blue\">No consumer</font>" : "<a href=\"consumers.html?application=" + application + "\">Consumers(" + consumersSize + ")</a>");
Set<String> efferents = RegistryContainer.getInstance().getDependencies(application, false);
int efferentSize = efferents == null ? 0 : efferents.size();
efferentCount += efferentSize;
row.add(efferentSize == 0 ? "<font color=\"blue\">No dependency</font>" : "<a href=\"dependencies.html?application=" + application + "\">Depends On(" + efferentSize + ")</a>");
Set<String> afferents = RegistryContainer.getInstance().getDependencies(application, true);
int afferentSize = afferents == null ? 0 : afferents.size();
afferentCount += afferentSize;
row.add(afferentSize == 0 ? "<font color=\"blue\">No used</font>" : "<a href=\"dependencies.html?application=" + application + "&reverse=true\">Used By(" + afferentSize + ")</a>");
rows.add(row);
}
}
return new Page("Applications", "Applications (" + rows.size() + ")", new String[] { "Application Name:", "Owner", "Providers(" + providersCount + ")", "Consumers(" + consumersCount + ")", "Depends On(" + efferentCount + ")", "Used By(" + afferentCount + ")" }, rows);
}
Aggregations