Search in sources :

Example 1 with Page

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);
}
Also used : AbstractRegistry(com.alibaba.dubbo.registry.support.AbstractRegistry) ArrayList(java.util.ArrayList) List(java.util.List) ArrayList(java.util.ArrayList) Page(com.alibaba.dubbo.monitor.simple.common.Page) AbstractRegistry(com.alibaba.dubbo.registry.support.AbstractRegistry) Registry(com.alibaba.dubbo.registry.Registry)

Example 2 with Page

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);
}
Also used : ArrayList(java.util.ArrayList) ExchangeServer(com.alibaba.dubbo.remoting.exchange.ExchangeServer) List(java.util.List) ArrayList(java.util.ArrayList) Page(com.alibaba.dubbo.monitor.simple.common.Page)

Example 3 with Page

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);
}
Also used : ArrayList(java.util.ArrayList) List(java.util.List) ArrayList(java.util.ArrayList) Page(com.alibaba.dubbo.monitor.simple.common.Page) URL(com.alibaba.dubbo.common.URL)

Example 4 with Page

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("<", "&lt;").replace(">", "&lt;").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> &gt; " + 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();
    }
}
Also used : Page(com.alibaba.dubbo.monitor.simple.common.Page) PrintWriter(java.io.PrintWriter)

Example 5 with Page

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);
}
Also used : ArrayList(java.util.ArrayList) List(java.util.List) ArrayList(java.util.ArrayList) Page(com.alibaba.dubbo.monitor.simple.common.Page) URL(com.alibaba.dubbo.common.URL)

Aggregations

Page (com.alibaba.dubbo.monitor.simple.common.Page)18 ArrayList (java.util.ArrayList)15 List (java.util.List)15 URL (com.alibaba.dubbo.common.URL)9 Registry (com.alibaba.dubbo.registry.Registry)3 AbstractRegistry (com.alibaba.dubbo.registry.support.AbstractRegistry)3 SimpleDateFormat (java.text.SimpleDateFormat)3 Date (java.util.Date)3 ExchangeServer (com.alibaba.dubbo.remoting.exchange.ExchangeServer)2 File (java.io.File)2 HashMap (java.util.HashMap)2 Status (com.alibaba.dubbo.common.status.Status)1 StatusChecker (com.alibaba.dubbo.common.status.StatusChecker)1 Menu (com.alibaba.dubbo.monitor.simple.common.Menu)1 PageHandler (com.alibaba.dubbo.monitor.simple.servlet.PageHandler)1 ExchangeChannel (com.alibaba.dubbo.remoting.exchange.ExchangeChannel)1 FileInputStream (java.io.FileInputStream)1 IOException (java.io.IOException)1 PrintWriter (java.io.PrintWriter)1 ByteBuffer (java.nio.ByteBuffer)1