Search in sources :

Example 6 with Page

use of com.alibaba.dubbo.monitor.simple.common.Page in project incubator-dubbo-ops by apache.

the class ClientsPageHandler method handle.

public Page handle(URL url) {
    String port = url.getParameter("port");
    int p = port == null || port.length() == 0 ? 0 : Integer.parseInt(port);
    Collection<ExchangeServer> servers = DubboProtocol.getDubboProtocol().getServers();
    ExchangeServer server = null;
    StringBuilder select = new StringBuilder();
    if (servers != null && servers.size() > 0) {
        if (servers.size() == 1) {
            server = servers.iterator().next();
            String address = server.getUrl().getAddress();
            select.append(" &gt; " + NetUtils.getHostName(address) + "/" + address);
        } else {
            select.append(" &gt; <select onchange=\"window.location.href='clients.html?port=' + this.value;\">");
            for (ExchangeServer s : servers) {
                int sp = s.getUrl().getPort();
                select.append("<option value=\">");
                select.append(sp);
                if (p == 0 && server == null || p == sp) {
                    server = s;
                    select.append("\" selected=\"selected");
                }
                select.append("\">");
                select.append(s.getUrl().getAddress());
                select.append("</option>");
            }
            select.append("</select>");
        }
    }
    List<List<String>> rows = new ArrayList<List<String>>();
    if (server != null) {
        Collection<ExchangeChannel> channels = server.getExchangeChannels();
        for (ExchangeChannel c : channels) {
            List<String> row = new ArrayList<String>();
            String address = NetUtils.toAddressString(c.getRemoteAddress());
            row.add(NetUtils.getHostName(address) + "/" + address);
            rows.add(row);
        }
    }
    return new Page("<a href=\"servers.html\">Servers</a>" + select.toString() + " &gt; Clients", "Clients (" + rows.size() + ")", new String[] { "Client Address:" }, rows);
}
Also used : ArrayList(java.util.ArrayList) ExchangeServer(com.alibaba.dubbo.remoting.exchange.ExchangeServer) List(java.util.List) ArrayList(java.util.ArrayList) ExchangeChannel(com.alibaba.dubbo.remoting.exchange.ExchangeChannel) Page(com.alibaba.dubbo.monitor.simple.common.Page)

Example 7 with Page

use of com.alibaba.dubbo.monitor.simple.common.Page in project incubator-dubbo-ops by apache.

the class LogPageHandler method handle.

public Page handle(URL url) {
    long size = 0;
    String content = "";
    String modified = "Not exist";
    if (file != null && file.exists()) {
        try {
            FileInputStream fis = new FileInputStream(file);
            FileChannel channel = fis.getChannel();
            size = channel.size();
            ByteBuffer bb;
            if (size <= SHOW_LOG_LENGTH) {
                bb = ByteBuffer.allocate((int) size);
                channel.read(bb, 0);
            } else {
                int pos = (int) (size - SHOW_LOG_LENGTH);
                bb = ByteBuffer.allocate(SHOW_LOG_LENGTH);
                channel.read(bb, pos);
            }
            bb.flip();
            content = new String(bb.array()).replace("<", "&lt;").replace(">", "&gt;").replace("\n", "<br/><br/>");
            modified = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(file.lastModified()));
        } catch (IOException e) {
        }
    }
    Level level = LogManager.getRootLogger().getLevel();
    List<List<String>> rows = new ArrayList<List<String>>();
    List<String> row = new ArrayList<String>();
    row.add(content);
    rows.add(row);
    return new Page("Log", "Log", new String[] { (file == null ? "" : file.getName()) + ", " + size + " bytes, " + modified + ", " + level }, rows);
}
Also used : FileChannel(java.nio.channels.FileChannel) ArrayList(java.util.ArrayList) Page(com.alibaba.dubbo.monitor.simple.common.Page) IOException(java.io.IOException) ByteBuffer(java.nio.ByteBuffer) FileInputStream(java.io.FileInputStream) Date(java.util.Date) Level(org.apache.log4j.Level) ArrayList(java.util.ArrayList) List(java.util.List) SimpleDateFormat(java.text.SimpleDateFormat)

Example 8 with Page

use of com.alibaba.dubbo.monitor.simple.common.Page in project incubator-dubbo-ops by apache.

the class StatisticsPageHandler method handle.

public Page handle(URL url) {
    String service = url.getParameter("service");
    if (service == null || service.length() == 0) {
        throw new IllegalArgumentException("Please input service parameter.");
    }
    String date = url.getParameter("date");
    if (date == null || date.length() == 0) {
        date = new SimpleDateFormat("yyyyMMdd").format(new Date());
    }
    String expand = url.getParameter("expand");
    List<List<String>> rows = new ArrayList<List<String>>();
    String directory = ConfigUtils.getProperty("dubbo.statistics.directory");
    String filename = directory + "/" + date + "/" + service;
    File serviceDir = new File(filename);
    if (serviceDir.exists()) {
        File[] methodDirs = serviceDir.listFiles();
        for (File methodDir : methodDirs) {
            long[] statistics = newStatistics();
            Map<String, long[]> expandMap = new HashMap<String, long[]>();
            File[] consumerDirs = methodDir.listFiles();
            for (File consumerDir : consumerDirs) {
                long[] expandStatistics = null;
                if (MonitorService.CONSUMER.equals(expand)) {
                    expandStatistics = newStatistics();
                    expandMap.put(consumerDir.getName(), expandStatistics);
                }
                File[] providerDirs = consumerDir.listFiles();
                for (File providerDir : providerDirs) {
                    if (MonitorService.PROVIDER.equals(expand)) {
                        expandStatistics = newStatistics();
                        expandMap.put(providerDir.getName(), expandStatistics);
                    }
                    appendStatistics(providerDir, statistics);
                    if (expandStatistics != null) {
                        appendStatistics(providerDir, expandStatistics);
                    }
                }
            }
            rows.add(toRow(methodDir.getName(), statistics));
            if (expandMap != null && expandMap.size() > 0) {
                for (Map.Entry<String, long[]> entry : expandMap.entrySet()) {
                    String node = MonitorService.CONSUMER.equals(expand) ? "&lt;--" : "--&gt;";
                    rows.add(toRow(" &nbsp;&nbsp;&nbsp;&nbsp; |" + node + " " + entry.getKey(), entry.getValue()));
                }
            }
        }
    }
    StringBuilder nav = new StringBuilder();
    nav.append("<a href=\"services.html\">Services</a> &gt; ");
    nav.append(service);
    nav.append(" &gt; <a href=\"providers.html?service=");
    nav.append(service);
    nav.append("\">Providers</a> | <a href=\"consumers.html?service=");
    nav.append(service);
    nav.append("\">Consumers</a> | Statistics | <a href=\"charts.html?service=");
    nav.append(service);
    nav.append("&date=");
    nav.append(date);
    nav.append("\">Charts</a> &gt; <input type=\"text\" style=\"width: 65px;\" name=\"date\" value=\"");
    nav.append(date);
    nav.append("\" onkeyup=\"if (event.keyCode == 10 || event.keyCode == 13) {window.location.href='statistics.html?service=");
    nav.append(service);
    if (expand != null && expand.length() > 0) {
        nav.append("&expand=");
        nav.append(expand);
    }
    nav.append("&date=' + this.value;}\" /> &gt; ");
    if (!MonitorService.PROVIDER.equals(expand) && !MonitorService.CONSUMER.equals(expand)) {
        nav.append("Summary");
    } else {
        nav.append("<a href=\"statistics.html?service=");
        nav.append(service);
        nav.append("&date=");
        nav.append(date);
        nav.append("\">Summary</a>");
    }
    if (MonitorService.PROVIDER.equals(expand)) {
        nav.append(" | +Provider");
    } else {
        nav.append(" | <a href=\"statistics.html?service=");
        nav.append(service);
        nav.append("&date=");
        nav.append(date);
        nav.append("&expand=provider\">+Provider</a>");
    }
    if (MonitorService.CONSUMER.equals(expand)) {
        nav.append(" | +Consumer");
    } else {
        nav.append(" | <a href=\"statistics.html?service=");
        nav.append(service);
        nav.append("&date=");
        nav.append(date);
        nav.append("&expand=consumer\">+Consumer</a>");
    }
    return new Page(nav.toString(), "Statistics (" + rows.size() + ")", new String[] { "Method:", "Success", "Failure", "Avg Elapsed (ms)", "Max Elapsed (ms)", "Max Concurrent" }, rows);
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Page(com.alibaba.dubbo.monitor.simple.common.Page) Date(java.util.Date) ArrayList(java.util.ArrayList) List(java.util.List) SimpleDateFormat(java.text.SimpleDateFormat) File(java.io.File) HashMap(java.util.HashMap) Map(java.util.Map)

Example 9 with Page

use of com.alibaba.dubbo.monitor.simple.common.Page in project incubator-dubbo-ops by apache.

the class StatusPageHandler method handle.

public Page handle(URL url) {
    List<List<String>> rows = new ArrayList<List<String>>();
    Set<String> names = ExtensionLoader.getExtensionLoader(StatusChecker.class).getSupportedExtensions();
    Map<String, Status> statuses = new HashMap<String, Status>();
    for (String name : names) {
        StatusChecker checker = ExtensionLoader.getExtensionLoader(StatusChecker.class).getExtension(name);
        List<String> row = new ArrayList<String>();
        row.add(name);
        Status status = checker.check();
        if (status != null && !Status.Level.UNKNOWN.equals(status.getLevel())) {
            statuses.put(name, status);
            row.add(getLevelHtml(status.getLevel()));
            row.add(status.getMessage());
            rows.add(row);
        }
    }
    Status status = StatusUtils.getSummaryStatus(statuses);
    if ("status".equals(url.getPath())) {
        return new Page("", "", "", status.getLevel().toString());
    } else {
        List<String> row = new ArrayList<String>();
        row.add("summary");
        row.add(getLevelHtml(status.getLevel()));
        row.add("<a href=\"/status\" target=\"_blank\">summary</a>");
        rows.add(row);
        return new Page("Status (<a href=\"/status\" target=\"_blank\">summary</a>)", "Status", new String[] { "Name", "Status", "Description" }, rows);
    }
}
Also used : Status(com.alibaba.dubbo.common.status.Status) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) Page(com.alibaba.dubbo.monitor.simple.common.Page) StatusChecker(com.alibaba.dubbo.common.status.StatusChecker)

Example 10 with Page

use of com.alibaba.dubbo.monitor.simple.common.Page in project incubator-dubbo-ops by apache.

the class SubscribedPageHandler method handle.

public Page handle(URL url) {
    String registryAddress = url.getParameter("registry", "");
    List<List<String>> rows = new ArrayList<List<String>>();
    Collection<Registry> registries = AbstractRegistryFactory.getRegistries();
    StringBuilder select = new StringBuilder();
    Registry registry = null;
    if (registries != null && registries.size() > 0) {
        if (registries.size() == 1) {
            registry = registries.iterator().next();
            select.append(" &gt; " + registry.getUrl().getAddress());
        } else {
            select.append(" &gt; <select onchange=\"window.location.href='subscribed.html?registry=' + this.value;\">");
            for (Registry r : registries) {
                String sp = r.getUrl().getAddress();
                select.append("<option value=\">");
                select.append(sp);
                if (((registryAddress == null || registryAddress.length() == 0) && registry == null) || registryAddress.equals(sp)) {
                    registry = r;
                    select.append("\" selected=\"selected");
                }
                select.append("\">");
                select.append(sp);
                select.append("</option>");
            }
            select.append("</select>");
        }
    }
    if (registry instanceof AbstractRegistry) {
        Set<URL> services = ((AbstractRegistry) registry).getSubscribed().keySet();
        if (services != null && services.size() > 0) {
            for (URL u : services) {
                List<String> row = new ArrayList<String>();
                row.add(u.toFullString().replace("<", "&lt;").replace(">", "&gt;"));
                rows.add(row);
            }
        }
    }
    return new Page("<a href=\"registries.html\">Registries</a>" + select.toString() + " &gt; <a href=\"registered.html?registry=" + registryAddress + "\">Registered</a> | Subscribed", "Subscribed (" + rows.size() + ")", new String[] { "Consumer URL:" }, 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) 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