Search in sources :

Example 1 with StatusChecker

use of com.alibaba.dubbo.common.status.StatusChecker in project dubbo by alibaba.

the class StatusManager method addStatusHandlers.

public void addStatusHandlers(Collection<StatusChecker> statusHandlers) {
    for (StatusChecker statusChecker : statusHandlers) {
        String name = statusChecker.getClass().getSimpleName();
        if (name.endsWith(StatusChecker.class.getSimpleName())) {
            name = name.substring(0, name.length() - StatusChecker.class.getSimpleName().length());
        }
        this.statusHandlers.put(name, statusChecker);
    }
}
Also used : StatusChecker(com.alibaba.dubbo.common.status.StatusChecker)

Example 2 with StatusChecker

use of com.alibaba.dubbo.common.status.StatusChecker in project dubbo by alibaba.

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.container.page.Page) StatusChecker(com.alibaba.dubbo.common.status.StatusChecker)

Example 3 with StatusChecker

use of com.alibaba.dubbo.common.status.StatusChecker in project dubbo by alibaba.

the class StatusTelnetHandler method telnet.

public String telnet(Channel channel, String message) {
    if (message.equals("-l")) {
        List<StatusChecker> checkers = extensionLoader.getActivateExtension(channel.getUrl(), "status");
        String[] header = new String[] { "resource", "status", "message" };
        List<List<String>> table = new ArrayList<List<String>>();
        Map<String, Status> statuses = new HashMap<String, Status>();
        if (checkers != null && checkers.size() > 0) {
            for (StatusChecker checker : checkers) {
                String name = extensionLoader.getExtensionName(checker);
                Status stat;
                try {
                    stat = checker.check();
                } catch (Throwable t) {
                    stat = new Status(Status.Level.ERROR, t.getMessage());
                }
                statuses.put(name, stat);
                if (stat.getLevel() != null && stat.getLevel() != Status.Level.UNKNOWN) {
                    List<String> row = new ArrayList<String>();
                    row.add(name);
                    row.add(String.valueOf(stat.getLevel()));
                    row.add(stat.getMessage() == null ? "" : stat.getMessage());
                    table.add(row);
                }
            }
        }
        Status stat = StatusUtils.getSummaryStatus(statuses);
        List<String> row = new ArrayList<String>();
        row.add("summary");
        row.add(String.valueOf(stat.getLevel()));
        row.add(stat.getMessage());
        table.add(row);
        return TelnetUtils.toTable(header, table);
    } else if (message.length() > 0) {
        return "Unsupported parameter " + message + " for status.";
    }
    String status = channel.getUrl().getParameter("status");
    Map<String, Status> statuses = new HashMap<String, Status>();
    if (status != null && status.length() > 0) {
        String[] ss = Constants.COMMA_SPLIT_PATTERN.split(status);
        for (String s : ss) {
            StatusChecker handler = extensionLoader.getExtension(s);
            Status stat;
            try {
                stat = handler.check();
            } catch (Throwable t) {
                stat = new Status(Status.Level.ERROR, t.getMessage());
            }
            statuses.put(s, stat);
        }
    }
    Status stat = StatusUtils.getSummaryStatus(statuses);
    return String.valueOf(stat.getLevel());
}
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) StatusChecker(com.alibaba.dubbo.common.status.StatusChecker)

Aggregations

StatusChecker (com.alibaba.dubbo.common.status.StatusChecker)3 Status (com.alibaba.dubbo.common.status.Status)2 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2 List (java.util.List)2 Page (com.alibaba.dubbo.container.page.Page)1