提交 96ad7b97 编写于 作者: J jialinsun

Merge branch 'master' of https://github.com/dianping/cat

......@@ -61,87 +61,6 @@ public class ChannelManager implements Task {
private String m_lastServers;
private List<InetSocketAddress> parse(String content) {
try {
List<String> strs = Splitters.by(";").noEmptyItem().split(content);
List<InetSocketAddress> address = new ArrayList<InetSocketAddress>();
for (String str : strs) {
List<String> items = Splitters.by(":").noEmptyItem().split(str);
address.add(new InetSocketAddress(items.get(0), Integer.parseInt(items.get(1))));
}
return address;
} catch (Exception e) {
m_logger.error(e.getMessage(), e);
}
return new ArrayList<InetSocketAddress>();
}
private String getServerConfig() {
try {
String url = m_configManager.getServerConfigUrl();
InputStream currentServer = Urls.forIO().readTimeout(3000).connectTimeout(1000).openStream(url);
String content = Files.forIO().readFrom(currentServer, "utf-8");
return content.trim();
} catch (Exception e) {
}
return null;
}
private Pair<Boolean, String> serverConfigChanged() {
String current = getServerConfig();
if (current != null && !current.equals(m_lastServers)) {
return new Pair<Boolean, String>(true, current);
} else {
return new Pair<Boolean, String>(false, current);
}
}
private void closeAllChannel() {
try {
if (m_activeFuture != null) {
m_activeFuture.getChannel().close();
}
if (m_lastFuture != null) {
m_lastFuture.getChannel().close();
}
m_activeIndex = -1;
} catch (Exception e) {
// ignore
}
}
private void initChannel(List<InetSocketAddress> addresses) {
try {
StringBuilder sb = new StringBuilder();
for (InetSocketAddress address : addresses) {
sb.append(address.getAddress().getHostAddress()).append(":").append(address.getPort()).append(',');
}
m_logger.info("init CAT server:" + sb.toString());
m_serverAddresses = addresses;
int len = addresses.size();
for (int i = 0; i < len; i++) {
ChannelFuture future = createChannel(addresses.get(i));
if (future != null) {
m_activeFuture = future;
m_activeIndex = i;
break;
}
}
} catch (Exception e) {
e.printStackTrace();
// ignore
}
}
public ChannelManager(Logger logger, List<InetSocketAddress> serverAddresses, MessageQueue queue,
ClientConfigManager configManager) {
m_logger = logger;
......@@ -164,7 +83,7 @@ public class ChannelManager implements Task {
bootstrap.setOption("keepAlive", true);
m_bootstrap = bootstrap;
String serverConfig = getServerConfig();
if (serverConfig != null) {
......@@ -178,6 +97,20 @@ public class ChannelManager implements Task {
}
}
private void closeAllChannel() {
try {
if (m_activeFuture != null) {
m_activeFuture.getChannel().close();
}
if (m_lastFuture != null) {
m_lastFuture.getChannel().close();
}
m_activeIndex = -1;
} catch (Exception e) {
// ignore
}
}
private ChannelFuture createChannel(InetSocketAddress address) {
ChannelFuture future = null;
......@@ -215,6 +148,46 @@ public class ChannelManager implements Task {
return "TcpSocketSender-ChannelManager";
}
private String getServerConfig() {
try {
String url = m_configManager.getServerConfigUrl();
InputStream currentServer = Urls.forIO().readTimeout(3000).connectTimeout(1000).openStream(url);
String content = Files.forIO().readFrom(currentServer, "utf-8");
return content.trim();
} catch (Exception e) {
}
return null;
}
private void initChannel(List<InetSocketAddress> addresses) {
try {
StringBuilder sb = new StringBuilder();
for (InetSocketAddress address : addresses) {
sb.append(address.getAddress().getHostAddress()).append(":").append(address.getPort()).append(',');
}
m_logger.info("init CAT server:" + sb.toString());
m_serverAddresses = addresses;
int len = addresses.size();
for (int i = 0; i < len; i++) {
ChannelFuture future = createChannel(addresses.get(i));
if (future != null) {
m_activeFuture = future;
m_activeIndex = i;
break;
}
}
} catch (Exception e) {
e.printStackTrace();
// ignore
}
}
private boolean isChannelStalled() {
m_retriedTimes++;
int size = m_queue.size();
......@@ -235,15 +208,21 @@ public class ChannelManager implements Task {
}
}
private boolean shouldCheckServerConfig(int count) {
//return true;
int duration = 3600;
if (count % (duration) == 0) {
return true;
} else {
return false;
}
private List<InetSocketAddress> parse(String content) {
try {
List<String> strs = Splitters.by(";").noEmptyItem().split(content);
List<InetSocketAddress> address = new ArrayList<InetSocketAddress>();
for (String str : strs) {
List<String> items = Splitters.by(":").noEmptyItem().split(str);
address.add(new InetSocketAddress(items.get(0), Integer.parseInt(items.get(1))));
}
return address;
} catch (Exception e) {
m_logger.error(e.getMessage(), e);
}
return new ArrayList<InetSocketAddress>();
}
@Override
......@@ -308,6 +287,26 @@ public class ChannelManager implements Task {
}
}
private Pair<Boolean, String> serverConfigChanged() {
String current = getServerConfig();
if (current != null && !current.equals(m_lastServers)) {
return new Pair<Boolean, String>(true, current);
} else {
return new Pair<Boolean, String>(false, current);
}
}
private boolean shouldCheckServerConfig(int count) {
int duration = 3600;
if (count % (duration) == 0) {
return true;
} else {
return false;
}
}
@Override
public void shutdown() {
m_active = false;
......
......@@ -95,8 +95,6 @@ public class TcpSocketSender implements Task, MessageSender, LogEnabled {
MessageTree tree = m_queue.poll();
if (tree != null) {
System.out.println("write to====" + future.getChannel().getRemoteAddress());
sendInternal(tree);
tree.setMessage(null);
}
......@@ -104,7 +102,6 @@ public class TcpSocketSender implements Task, MessageSender, LogEnabled {
m_logger.error("Error when sending message over TCP socket!", t);
}
} else {
System.out.println("channel can't write");
try {
Thread.sleep(5);
} catch (Exception e) {
......
......@@ -43,6 +43,7 @@ public class StateDelegate implements ReportDelegate<StateReport> {
m_taskManager.createTask(startTime, domain, Constants.REPORT_ALERT, TaskProlicy.ALL);
m_taskManager.createTask(startTime, domain, Constants.REPORT_UTILIZATION, TaskProlicy.ALL);
m_taskManager.createTask(startTime, domain, Constants.REPORT_NET_TOPOLOGY, TaskProlicy.HOULY);
m_taskManager.createTask(startTime, domain, Constants.REPORT_ROUTER, TaskProlicy.DAILY);
return m_taskManager.createTask(startTime, domain, StateAnalyzer.ID, TaskProlicy.ALL_EXCLUED_HOURLY);
}
......
package com.dianping.cat.report.service.impl;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;
import org.unidal.dal.jdbc.DalException;
import org.unidal.dal.jdbc.DalNotFoundException;
......@@ -17,6 +19,8 @@ import com.dianping.cat.report.service.AbstractReportService;
public class RouterConfigService extends AbstractReportService<RouterConfig> {
private Map<Long, RouterConfig> m_configs = new LinkedHashMap<Long, RouterConfig>();
@Override
public RouterConfig makeReport(String domain, Date start, Date end) {
RouterConfig report = new RouterConfig(domain);
......@@ -28,20 +32,28 @@ public class RouterConfigService extends AbstractReportService<RouterConfig> {
@Override
public RouterConfig queryDailyReport(String domain, Date start, Date end) {
String name = Constants.REPORT_ROUTER;
long time = start.getTime();
RouterConfig config = m_configs.get(time);
if (config == null) {
String name = Constants.REPORT_ROUTER;
try {
DailyReport report = m_dailyReportDao.findByDomainNamePeriod(domain, name, start,
DailyReportEntity.READSET_FULL);
RouterConfig config = queryFromDailyBinary(report.getId(), domain);
try {
DailyReport report = m_dailyReportDao.findByDomainNamePeriod(domain, name, start,
DailyReportEntity.READSET_FULL);
config = queryFromDailyBinary(report.getId(), domain);
m_configs.put(time, config);
return config;
} catch (DalNotFoundException e) {
// ignore
} catch (Exception e) {
Cat.logError(e);
}
return null;
} else {
return config;
} catch (DalNotFoundException e) {
// ignore
} catch (Exception e) {
Cat.logError(e);
}
return null;
}
private RouterConfig queryFromDailyBinary(int id, String domain) throws DalException {
......
......@@ -74,9 +74,8 @@ public class Handler implements PageHandler<Context> {
if (report != null) {
model.setContent(report.toString());
}
break;
}
model.setAction(Action.API);
model.setAction(action);
model.setPage(SystemPage.ROUTER);
if (!ctx.isProcessStopped()) {
......
......@@ -12,5 +12,6 @@
<domain id="Cat">
<server id="10.1.6.37" port="2280"/>
<server id="10.1.6.128" port="2280"/>
<server id="127.0.0.1" port="2280"/>
</domain>
</router-config>
......@@ -8,16 +8,6 @@
<jsp:useBean id="model" type="com.dianping.cat.report.page.dependency.Model" scope="request"/>
<res:bean id="res" />
<res:useCss value='${res.css.local.table_css}' target="head-css" />
<res:useCss value='${res.css.local.body_css}' target="head-css" />
<res:useCss value="${res.css.local['bootstrap.css']}" target="head-css" />
<res:useJs value="${res.js.local['jquery-1.7.1.js']}" target="head-js" />
<res:useJs value="${res.js.local['bootstrap.min.js']}" target="head-js" />
<res:useJs value="${res.js.local['jquery.dataTables.min.js']}" target="head-js" />
<res:useJs value="${res.js.local['startopo.js']}" target="head-js" />
<res:useJs value="${res.js.local['raphael-min.js']}" target="head-js" />
<res:useJs value="${res.js.local['dependencyConfig.js']}" target="head-js" />
<res:useJs value="${res.js.local['jquery.validate.min.js']}" target="head-js" />
<style>
.tooltip-inner {
max-width:36555px;
......@@ -31,6 +21,16 @@
</style>
<c:choose>
<c:when test="${payload.fullScreen}">
<res:useCss value='${res.css.local.table_css}' target="head-css" />
<res:useCss value='${res.css.local.body_css}' target="head-css" />
<res:useCss value="${res.css.local['bootstrap.css']}" target="head-css" />
<res:useJs value="${res.js.local['jquery-1.7.1.js']}" target="head-js" />
<res:useJs value="${res.js.local['bootstrap.min.js']}" target="head-js" />
<res:useJs value="${res.js.local['jquery.dataTables.min.js']}" target="head-js" />
<res:useJs value="${res.js.local['raphael-min.js']}" target="head-js" />
<res:useJs value="${res.js.local['dependencyConfig.js']}" target="head-js" />
<res:useJs value="${res.js.local['jquery.validate.min.js']}" target="head-js" />
<res:useJs value="${res.js.local['startopo.js']}" target="head-js" />
<div class="report">
<a href="javascript:showOpNav()" id="switch" class="btn btn-small btn-success">隐藏</a>
<div class="opNav">
......@@ -46,6 +46,8 @@
</div>
</c:when>
<c:otherwise>
<res:useJs value="${res.js.local['raphael-min.js']}" target="head-js" />
<res:useJs value="${res.js.local['startopo.js']}" target="head-js" />
<a:report title="Dependency Report"
navUrlPrefix="domain=${model.domain}&op=dashboard">
<jsp:attribute name="subtitle">From ${w:format(model.reportStart,'yyyy-MM-dd HH:mm:ss')} to ${w:format(model.reportEnd,'yyyy-MM-dd HH:mm:ss')}</jsp:attribute>
......
......@@ -7,14 +7,6 @@
<jsp:useBean id="payload" type="com.dianping.cat.report.page.dependency.Payload" scope="request"/>
<jsp:useBean id="model" type="com.dianping.cat.report.page.dependency.Model" scope="request"/>
<res:bean id="res" />
<res:useCss value='${res.css.local.table_css}' target="head-css" />
<res:useJs value="${res.js.local['dependencyConfig.js']}" target="head-js" />
<res:useCss value='${res.css.local.body_css}' target="head-css" />
<res:useCss value="${res.css.local['bootstrap.css']}" target="head-css" />
<res:useJs value="${res.js.local['jquery-1.7.1.js']}" target="head-js" />
<res:useJs value="${res.js.local['bootstrap.min.js']}" target="head-js" />
<res:useJs value="${res.js.local['baseGraph.js']}" target="head-js"/>
<style>
.tooltip-inner {
......@@ -29,6 +21,14 @@
</style>
<c:choose>
<c:when test="${payload.fullScreen}">
<res:bean id="res" />
<res:useCss value='${res.css.local.table_css}' target="head-css" />
<res:useJs value="${res.js.local['dependencyConfig.js']}" target="head-js" />
<res:useCss value='${res.css.local.body_css}' target="head-css" />
<res:useCss value="${res.css.local['bootstrap.css']}" target="head-css" />
<res:useJs value="${res.js.local['jquery-1.7.1.js']}" target="head-js" />
<res:useJs value="${res.js.local['bootstrap.min.js']}" target="head-js" />
<res:useJs value="${res.js.local['baseGraph.js']}" target="head-js"/>
<res:useJs value="${res.js.local['highcharts.js']}" target="head-js" />
<div class="report">
<a href="javascript:showOpNav()" id="switch" class="btn btn-small btn-success">隐藏</a>
......
<%@ page contentType="text/html; charset=utf-8" %>
<%@ page contentType="text/xml; charset=utf-8" trimDirectiveWhitespaces="true" %>
<jsp:useBean id="model" type="com.dianping.cat.system.page.router.Model" scope="request"/>
${model.content}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册