提交 2c551c7b 编写于 作者: Y You Yong

modify the heartbeat

上级 499621ee
......@@ -22,20 +22,20 @@
<attribute name="pigeon-thread-count" value-type="int" primitive="true" />
<attribute name="new-gc-count" value-type="long" primitive="true" />
<attribute name="old-gc-count" value-type="long" primitive="true" />
<attribute name="memory-free" value-type="double" primitive="true" />
<attribute name="heap-usage" value-type="double" primitive="true" />
<attribute name="none-heap-usage" value-type="double" primitive="true" />
<attribute name="memory-free" value-type="double" primitive="true" format="0.0"/>
<attribute name="heap-usage" value-type="double" primitive="true" format="0.0"/>
<attribute name="none-heap-usage" value-type="double" primitive="true" format="0.0"/>
<attribute name="system-load-average" value-type="double" primitive="true" />
<attribute name="cat-message-produced" value-type="long" primitive="true" />
<attribute name="cat-message-overflow" value-type="long" primitive="true" />
<attribute name="cat-message-size" value-type="double" primitive="true" />
<attribute name="cat-message-size" value-type="double" primitive="true" format="0.0"/>
<entity-ref name="disk" type="list" names="disks"/>
</entity>
<entity name="disk">
<attribute name="path" value-type="String" key="true"/>
<attribute name="total" value-type="double" primitive="true" />
<attribute name="free" value-type="double" primitive="true" />
<attribute name="usable" value-type="double" primitive="true" />
<attribute name="total" value-type="double" primitive="true" format="0.0"/>
<attribute name="free" value-type="double" primitive="true" format="0.0"/>
<attribute name="usable" value-type="double" primitive="true" format="0.0"/>
</entity>
</model>
......
......@@ -57,6 +57,7 @@ public class Cat {
public static MessageProducer getProducer() {
if (!isInitialized()) {
initializeForDev();
System.out.println(">>>>>>>>>>>>>>>>>>> for Dev");
}
return getInstance().m_producer;
......
......@@ -221,10 +221,14 @@ public class DefaultMessageManager extends ContainerHolder implements MessageMan
}
boolean shouldThrottle(MessageTree tree) {
if(!isCatEnabled()){
return true;
}
if (tree.getMessage() != null && "Heartbeat".equals(tree.getMessage().getName())) {
return false;
}
int threadCount = ManagementFactory.getThreadMXBean().getThreadCount();
return threadCount > m_domain.getMaxThreads();
......
......@@ -26,7 +26,7 @@ public class InMemoryQueue implements LogEnabled, Initializable {
@Override
public void initialize() throws InitializationException {
if (m_queueSize <= 0) {
m_queue = new LinkedBlockingQueue<MessageTree>();
m_queue = new LinkedBlockingQueue<MessageTree>(1000);
} else {
m_queue = new LinkedBlockingQueue<MessageTree>(m_queueSize);
}
......
......@@ -31,6 +31,7 @@ public class InMemorySender implements MessageSender {
}
public void setQueue(InMemoryQueue queue) {
System.out.println("sdfsdf");
m_queue = queue;
}
......
......@@ -71,7 +71,7 @@ public class Handler implements PageHandler<Context> {
String domain = payload.getDomain();
String date = String.valueOf(payload.getDate());
ModelRequest request = new ModelRequest(domain, payload.getPeriod()) //
.setProperty("date", date);
.setProperty("date", date).setProperty("ip", payload.getIpAddress());
if (m_service.isEligable(request)) {
ModelResponse<HeartbeatReport> response = m_service.invoke(request);
......
package com.dianping.cat.report.page.model;
import java.io.IOException;
import java.util.Set;
import javax.servlet.ServletException;
......@@ -8,6 +9,7 @@ import org.apache.commons.lang.StringUtils;
import com.dianping.cat.consumer.event.model.entity.EventName;
import com.dianping.cat.consumer.event.model.entity.EventType;
import com.dianping.cat.consumer.heartbeat.model.entity.HeartbeatReport;
import com.dianping.cat.consumer.problem.model.entity.JavaThread;
import com.dianping.cat.consumer.problem.model.entity.Machine;
import com.dianping.cat.consumer.transaction.model.IEntity;
......@@ -27,6 +29,7 @@ import com.dianping.cat.report.page.model.spi.ModelRequest;
import com.dianping.cat.report.page.model.spi.ModelResponse;
import com.dianping.cat.report.page.model.spi.ModelService;
import com.dianping.cat.report.page.model.transaction.LocalTransactionService;
import com.dianping.cat.report.view.StringSortHelper;
import com.site.lookup.ContainerHolder;
import com.site.lookup.annotation.Inject;
import com.site.web.mvc.PageHandler;
......@@ -58,20 +61,30 @@ public class Handler extends ContainerHolder implements PageHandler<Context> {
private String doFilter(Payload payload, Object dataModel) {
String report = payload.getReport();
String ipAddress = payload.getIpAddress();
if ("transaction".equals(report)) {
TransactionReportFilter filter = new TransactionReportFilter(payload.getType(), payload.getName(),
payload.getIpAddress());
TransactionReportFilter filter = new TransactionReportFilter(payload.getType(), payload.getName(), ipAddress);
return filter.buildXml((IEntity<?>) dataModel);
} else if ("event".equals(report)) {
EventReportFilter filter = new EventReportFilter(payload.getType(), payload.getName(), payload.getIpAddress());
EventReportFilter filter = new EventReportFilter(payload.getType(), payload.getName(), ipAddress);
return filter.buildXml((com.dianping.cat.consumer.event.model.IEntity<?>) dataModel);
} else if ("problem".equals(report)) {
ProblemReportFilter filter = new ProblemReportFilter(payload.getIpAddress(), payload.getThreadId());
ProblemReportFilter filter = new ProblemReportFilter(ipAddress, payload.getThreadId());
return filter.buildXml((com.dianping.cat.consumer.problem.model.IEntity<?>) dataModel);
} else if ("heartbeat".equals(report)) {
if (StringUtils.isEmpty(ipAddress)) {
HeartbeatReport reportModel = (HeartbeatReport) dataModel;
Set<String> ips = reportModel.getIps();
if (ips.size() > 0) {
ipAddress = StringSortHelper.sort(ips).get(0);
}
}
HeartBeatReportFilter filter = new HeartBeatReportFilter(ipAddress);
return filter.buildXml((com.dianping.cat.consumer.heartbeat.model.IEntity<?>) dataModel);
} else {
return String.valueOf(dataModel);
}
......@@ -257,10 +270,10 @@ public class Handler extends ContainerHolder implements PageHandler<Context> {
}
@Override
public void visitAllDuration(AllDuration duration){
public void visitAllDuration(AllDuration duration) {
}
@Override
public void visitName(TransactionName name) {
if (m_type == null) {
......@@ -295,4 +308,19 @@ public class Handler extends ContainerHolder implements PageHandler<Context> {
}
}
}
static class HeartBeatReportFilter extends com.dianping.cat.consumer.heartbeat.model.transform.DefaultXmlBuilder {
private String m_ip;
public HeartBeatReportFilter(String ip) {
m_ip = ip;
}
@Override
public void visitMachine(com.dianping.cat.consumer.heartbeat.model.entity.Machine machine) {
if (machine.getIp().equals(m_ip)) {
super.visitMachine(machine);
}
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册