From a83bf3159f81ae4bd59486d77b5c30fd1911f280 Mon Sep 17 00:00:00 2001 From: You Yong Date: Wed, 18 Jul 2012 10:15:19 +0800 Subject: [PATCH] modify the analyzer --- .../cat/consumer/DefaultAnalyzerFactory.java | 9 +- .../build/ComponentsConfigurator.java | 23 +- .../cat/consumer/dump/DumpAnalyzer.java | 5 + .../cat/consumer/event/EventAnalyzer.java | 26 ++- .../consumer/logview/LogviewTaskCreator.java | 11 + .../cat/consumer/problem/ProblemAnalyzer.java | 24 +++ .../cat/consumer/remote/RemoteIdAnalyzer.java | 116 ----------- .../cat/consumer/remote/RemoteIdChannel.java | 64 +----- .../transaction/TransactionAnalyzer.java | 53 ++++- .../resources/META-INF/plexus/components.xml | 36 ++-- .../configuration/ServerConfigManager.java | 14 ++ .../cat/report/page/model/Handler.java | 29 ++- .../internal/BaseHistoricalModelService.java | 1 + cat-home/src/main/webapp/WEB-INF/webres.tld | 196 +++++++++--------- .../java/com/dianping/cat/job/JobApp.java | 1 - .../job/sql/database/ContainerBootstrap.java | 2 - 16 files changed, 289 insertions(+), 321 deletions(-) create mode 100644 cat-consumer/src/main/java/com/dianping/cat/consumer/logview/LogviewTaskCreator.java delete mode 100644 cat-consumer/src/main/java/com/dianping/cat/consumer/remote/RemoteIdAnalyzer.java diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/DefaultAnalyzerFactory.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/DefaultAnalyzerFactory.java index fa270ba2b..7007b8042 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/DefaultAnalyzerFactory.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/DefaultAnalyzerFactory.java @@ -6,7 +6,6 @@ import com.dianping.cat.consumer.heartbeat.HeartbeatAnalyzer; import com.dianping.cat.consumer.ip.TopIpAnalyzer; import com.dianping.cat.consumer.matrix.MatrixAnalyzer; import com.dianping.cat.consumer.problem.ProblemAnalyzer; -import com.dianping.cat.consumer.remote.RemoteIdAnalyzer; import com.dianping.cat.consumer.transaction.TransactionAnalyzer; import com.dianping.cat.message.spi.MessageAnalyzer; import com.site.lookup.ContainerHolder; @@ -34,13 +33,7 @@ public class DefaultAnalyzerFactory extends ContainerHolder implements AnalyzerF analyzer.setAnalyzerInfo(start, duration, extraTime); return analyzer; - } else if (name.equals("remoteId")) { - RemoteIdAnalyzer analyzer = lookup(RemoteIdAnalyzer.class); - - analyzer.setAnalyzerInfo(start, duration, extraTime); - return analyzer; - } - else if (name.equals("ip")) { + } else if (name.equals("ip")) { TopIpAnalyzer analyzer = lookup(TopIpAnalyzer.class); analyzer.setAnalyzerInfo(start, duration, extraTime); diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java index 9573e99e8..36d1cb6fe 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java @@ -28,7 +28,6 @@ import com.dianping.cat.consumer.problem.handler.Handler; import com.dianping.cat.consumer.problem.handler.HeartbeatHandler; import com.dianping.cat.consumer.problem.handler.LongSqlHandler; import com.dianping.cat.consumer.problem.handler.LongUrlHandler; -import com.dianping.cat.consumer.remote.RemoteIdAnalyzer; import com.dianping.cat.consumer.remote.RemoteIdChannelManager; import com.dianping.cat.consumer.remote.RemoteIdUploader; import com.dianping.cat.consumer.transaction.TransactionAnalyzer; @@ -53,7 +52,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { all.add(C(MessageConsumer.class, "realtime", RealtimeConsumer.class) // .req(AnalyzerFactory.class, LogviewUploader.class) // .config(E("extraTime").value(property("extraTime", "180000"))// - , E("analyzers").value("problem,transaction,event,heartbeat,matrix,dump,remoteId"))); + , E("analyzers").value("problem,transaction,event,heartbeat,matrix,dump"))); String errorTypes = "Error,RuntimeException,Exception"; String failureTypes = "URL,SQL,Call,Cache"; @@ -74,13 +73,16 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { all.add(C(ProblemAnalyzer.class).is(PER_LOOKUP) // .req(Handler.class, new String[] { FAILURE.getName(), ERROR.getName(), LONG_URL.getName(), LONG_SQL.getName(), HEARTBEAT.getName() }, "m_handlers") // - .req(BucketManager.class, ReportDao.class, TaskDao.class)); + .req(BucketManager.class, ReportDao.class, TaskDao.class)// + .req(MessagePathBuilder.class,RemoteIdChannelManager.class)); all.add(C(TransactionAnalyzer.class).is(PER_LOOKUP) // - .req(BucketManager.class, ReportDao.class, TaskDao.class)); + .req(BucketManager.class, ReportDao.class, TaskDao.class)// + .req(MessagePathBuilder.class,RemoteIdChannelManager.class)); all.add(C(EventAnalyzer.class).is(PER_LOOKUP) // - .req(BucketManager.class, ReportDao.class, TaskDao.class)); + .req(BucketManager.class, ReportDao.class, TaskDao.class)// + .req(MessagePathBuilder.class,RemoteIdChannelManager.class)); all.add(C(MatrixAnalyzer.class).is(PER_LOOKUP) // .req(BucketManager.class, ReportDao.class, TaskDao.class)); @@ -93,11 +95,12 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { all.add(C(DumpAnalyzer.class).is(PER_LOOKUP) // .req(ServerConfigManager.class, MessagePathBuilder.class) // - .req(DumpUploader.class, DumpChannelManager.class)); + .req(DumpUploader.class, DumpChannelManager.class)// + .req(RemoteIdUploader.class)); - all.add(C(RemoteIdAnalyzer.class).is(PER_LOOKUP) // - .req(ServerConfigManager.class, MessagePathBuilder.class) // - .req(RemoteIdUploader.class, RemoteIdChannelManager.class)); +// all.add(C(RemoteIdAnalyzer.class).is(PER_LOOKUP) // +// .req(ServerConfigManager.class, MessagePathBuilder.class) // +// .req(RemoteIdUploader.class, RemoteIdChannelManager.class)); all.add(C(RemoteIdChannelManager.class)); @@ -108,7 +111,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { .req(ServerConfigManager.class, FileSystemManager.class)); // all.add(C(RemoteIdUploader.class) // .req(ServerConfigManager.class, FileSystemManager.class) // - .req( MessagePathBuilder.class)); + .req(MessagePathBuilder.class)); all.add(C(LogviewUploader.class) // .req(ServerConfigManager.class, FileSystemManager.class) // .req(BucketManager.class, LogviewDao.class)); diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/dump/DumpAnalyzer.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/dump/DumpAnalyzer.java index 611bc1cd2..e47bbdbf8 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/dump/DumpAnalyzer.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/dump/DumpAnalyzer.java @@ -11,6 +11,7 @@ import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationExce import com.dianping.cat.configuration.NetworkInterfaceManager; import com.dianping.cat.configuration.ServerConfigManager; +import com.dianping.cat.consumer.remote.RemoteIdUploader; import com.dianping.cat.message.spi.AbstractMessageAnalyzer; import com.dianping.cat.message.spi.MessagePathBuilder; import com.dianping.cat.message.spi.MessageTree; @@ -29,6 +30,9 @@ public class DumpAnalyzer extends AbstractMessageAnalyzer implements Ini @Inject private DumpUploader m_uploader; + @Inject + private RemoteIdUploader m_remoteUploader; + public DumpUploader getDumpUploader() { return m_uploader; } @@ -110,6 +114,7 @@ public class DumpAnalyzer extends AbstractMessageAnalyzer implements Ini if (!m_localMode) { m_uploader.start(); + m_remoteUploader.start(); } } } diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/event/EventAnalyzer.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/event/EventAnalyzer.java index b0f5e9263..53bb6f2b4 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/event/EventAnalyzer.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/event/EventAnalyzer.java @@ -19,6 +19,8 @@ import com.dianping.cat.consumer.event.model.entity.EventType; import com.dianping.cat.consumer.event.model.entity.Range; import com.dianping.cat.consumer.event.model.transform.DefaultSaxParser; import com.dianping.cat.consumer.event.model.transform.DefaultXmlBuilder; +import com.dianping.cat.consumer.remote.RemoteIdChannel; +import com.dianping.cat.consumer.remote.RemoteIdChannelManager; import com.dianping.cat.hadoop.dal.Report; import com.dianping.cat.hadoop.dal.ReportDao; import com.dianping.cat.hadoop.dal.Task; @@ -27,6 +29,7 @@ import com.dianping.cat.message.Event; import com.dianping.cat.message.Message; import com.dianping.cat.message.Transaction; import com.dianping.cat.message.spi.AbstractMessageAnalyzer; +import com.dianping.cat.message.spi.MessagePathBuilder; import com.dianping.cat.message.spi.MessageTree; import com.dianping.cat.storage.Bucket; import com.dianping.cat.storage.BucketManager; @@ -42,6 +45,12 @@ public class EventAnalyzer extends AbstractMessageAnalyzer implemen @Inject private TaskDao m_taskDao; + @Inject + private MessagePathBuilder m_builder; + + @Inject + private RemoteIdChannelManager m_manager; + private Map m_reports = new HashMap(); private long m_extraTime; @@ -49,12 +58,17 @@ public class EventAnalyzer extends AbstractMessageAnalyzer implemen private long m_startTime; private long m_duration; - + + private String m_remoteIdPath; + private Logger m_logger; @Override public void doCheckpoint(boolean atEnd) { storeReports(atEnd); + if (atEnd) { + m_manager.closeAllChannels(m_startTime); + } } @Override @@ -218,9 +232,19 @@ public class EventAnalyzer extends AbstractMessageAnalyzer implemen m_duration = duration; loadReports(); + + String ipAddress = NetworkInterfaceManager.INSTANCE.getLocalHostAddress(); + m_remoteIdPath = m_builder.getMessageRemoteIdPath(ipAddress, new Date(m_startTime)); } private void storeMessage(MessageTree tree) { + try { + RemoteIdChannel m_channel = m_manager.openChannel(m_remoteIdPath, m_startTime); + m_channel.write(tree); + } catch (Exception e) { + e.printStackTrace(); + } + String messageId = tree.getMessageId(); String domain = tree.getDomain(); diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/logview/LogviewTaskCreator.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/logview/LogviewTaskCreator.java new file mode 100644 index 000000000..a86351850 --- /dev/null +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/logview/LogviewTaskCreator.java @@ -0,0 +1,11 @@ +package com.dianping.cat.consumer.logview; + +import com.dianping.cat.message.spi.MessageTree; + +public class LogviewTaskCreator { + + + public void write(MessageTree tree){ + + } +} diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/problem/ProblemAnalyzer.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/problem/ProblemAnalyzer.java index a77df990d..83704dfdc 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/problem/ProblemAnalyzer.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/problem/ProblemAnalyzer.java @@ -16,6 +16,8 @@ import com.dianping.cat.consumer.problem.model.entity.Machine; import com.dianping.cat.consumer.problem.model.entity.ProblemReport; import com.dianping.cat.consumer.problem.model.transform.DefaultSaxParser; import com.dianping.cat.consumer.problem.model.transform.DefaultXmlBuilder; +import com.dianping.cat.consumer.remote.RemoteIdChannel; +import com.dianping.cat.consumer.remote.RemoteIdChannelManager; import com.dianping.cat.hadoop.dal.Report; import com.dianping.cat.hadoop.dal.ReportDao; import com.dianping.cat.hadoop.dal.Task; @@ -23,6 +25,7 @@ import com.dianping.cat.hadoop.dal.TaskDao; import com.dianping.cat.message.Message; import com.dianping.cat.message.Transaction; import com.dianping.cat.message.spi.AbstractMessageAnalyzer; +import com.dianping.cat.message.spi.MessagePathBuilder; import com.dianping.cat.message.spi.MessageTree; import com.dianping.cat.storage.Bucket; import com.dianping.cat.storage.BucketManager; @@ -40,6 +43,12 @@ public class ProblemAnalyzer extends AbstractMessageAnalyzer impl @Inject private List m_handlers; + + @Inject + private MessagePathBuilder m_builder; + + @Inject + private RemoteIdChannelManager m_manager; private Map m_reports = new HashMap(); @@ -51,6 +60,8 @@ public class ProblemAnalyzer extends AbstractMessageAnalyzer impl private long m_duration; + private String m_remoteIdPath; + private void closeMessageBuckets() { Date timestamp = new Date(m_startTime); @@ -73,6 +84,9 @@ public class ProblemAnalyzer extends AbstractMessageAnalyzer impl public void doCheckpoint(boolean atEnd) { storeReports(atEnd); closeMessageBuckets(); + if (atEnd) { + m_manager.closeAllChannels(m_startTime); + } } @Override @@ -158,9 +172,19 @@ public class ProblemAnalyzer extends AbstractMessageAnalyzer impl m_duration = duration; loadReports(); + + String ipAddress = NetworkInterfaceManager.INSTANCE.getLocalHostAddress(); + m_remoteIdPath = m_builder.getMessageRemoteIdPath(ipAddress, new Date(m_startTime)); } private void storeMessage(MessageTree tree) { + try { + RemoteIdChannel m_channel = m_manager.openChannel(m_remoteIdPath, m_startTime); + m_channel.write(tree); + } catch (Exception e) { + e.printStackTrace(); + } + String messageId = tree.getMessageId(); String domain = tree.getDomain(); diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/remote/RemoteIdAnalyzer.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/remote/RemoteIdAnalyzer.java deleted file mode 100644 index 178a91cf5..000000000 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/remote/RemoteIdAnalyzer.java +++ /dev/null @@ -1,116 +0,0 @@ -/** - * - */ -package com.dianping.cat.consumer.remote; - -import java.util.Collections; -import java.util.Date; -import java.util.Set; - -import org.codehaus.plexus.logging.LogEnabled; -import org.codehaus.plexus.logging.Logger; -import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; -import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; - -import com.dianping.cat.configuration.NetworkInterfaceManager; -import com.dianping.cat.configuration.ServerConfigManager; -import com.dianping.cat.message.Transaction; -import com.dianping.cat.message.spi.AbstractMessageAnalyzer; -import com.dianping.cat.message.spi.MessagePathBuilder; -import com.dianping.cat.message.spi.MessageTree; -import com.site.lookup.annotation.Inject; - -/** - * @author sean.wang - * @since Jun 21, 2012 - */ -public class RemoteIdAnalyzer extends AbstractMessageAnalyzer implements Initializable, LogEnabled { - @Inject - private ServerConfigManager m_configManager; - - @Inject - private RemoteIdUploader m_uploader; - - @Inject - private MessagePathBuilder m_builder; - - @Inject - private RemoteIdChannelManager m_manager; - - private static Logger m_logger; - - private boolean m_localMode = true; - - private long m_extraTime; - - private long m_startTime; - - private long m_duration; - - @Override - public void doCheckpoint(boolean atEnd) { - if (atEnd) { - m_manager.closeAllChannels(m_startTime); - } - } - - @Override - public void enableLogging(Logger logger) { - m_logger = logger; - } - - @Override - public Set getDomains() { - return Collections.emptySet(); - } - - @Override - public Object getReport(String domain) { - throw new UnsupportedOperationException("This should not be called!"); - } - - @Override - public void initialize() throws InitializationException { - m_localMode = m_configManager.isLocalMode(); - - if (!m_localMode) { - m_uploader.start(); - } - } - - @Override - protected boolean isTimeout() { - long currentTime = System.currentTimeMillis(); - long endTime = m_startTime + m_duration + m_extraTime; - - return currentTime > endTime; - } - - @Override - protected void process(MessageTree tree) { - if (m_localMode || tree.getMessage() == null) { - return; - } - - if (!(tree.getMessage() instanceof Transaction)) { - return; - } - - try { - String ipAddress = NetworkInterfaceManager.INSTANCE.getLocalHostAddress(); - long timestamp = tree.getMessage().getTimestamp(); - String path = m_builder.getMessageRemoteIdPath(ipAddress, new Date(timestamp)); - RemoteIdChannel channel = m_manager.openChannel(path, m_startTime); - channel.write(tree); - } catch (Exception e) { - m_logger.error("Error when write to local file system!", e); - } - } - - public void setAnalyzerInfo(long startTime, long duration, long extraTime) { - m_extraTime = extraTime; - m_startTime = startTime; - m_duration = duration; - } - -} diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/remote/RemoteIdChannel.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/remote/RemoteIdChannel.java index 72af02672..4a3944054 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/remote/RemoteIdChannel.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/remote/RemoteIdChannel.java @@ -6,12 +6,7 @@ import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; -import java.util.ArrayList; -import java.util.List; -import com.dianping.cat.message.Event; -import com.dianping.cat.message.Message; -import com.dianping.cat.message.Transaction; import com.dianping.cat.message.spi.MessageTree; import com.site.helper.Files; @@ -67,67 +62,14 @@ public class RemoteIdChannel { } } - private static class BooleanWrap { - private boolean boo; - } - public void write(MessageTree tree) throws IOException { - List remoteIds = new ArrayList(); - Transaction t = (Transaction) tree.getMessage(); - - BooleanWrap booWrap = new BooleanWrap(); - booWrap.boo = true; // default success - doTransactionChilds(remoteIds, t, booWrap); - - StringBuilder sb = new StringBuilder((remoteIds.size() + 1) * 32); - if (booWrap.boo) { - sb.append('0'); - } else { - sb.append('1'); - } - sb.append('\t'); + StringBuilder sb = new StringBuilder(); sb.append(tree.getMessageId()); sb.append('\t'); - sb.append(tree.getParentMessageId()); - sb.append('\t'); sb.append(tree.getRootMessageId()); - for (String id : remoteIds) { - sb.append('\t'); - sb.append(id); - } sb.append('\n'); - - m_output.write(sb.toString().getBytes()); - } - - public static final String PIGEON_REQUEST_NAME = "PigeonRequest"; - - public static final String PIGEON_RESPONSE_NAME = "PigeonRespone"; - - public static final String PIGEON_REQUEST_TYPE = "RemoteCall"; - - private void doTransactionChilds(List remoteIds, Transaction t, BooleanWrap booWrap) { - if (!t.hasChildren()) { - return; - } - for (Message m : t.getChildren()) { - if (m instanceof Event) { - Event e = (Event) m; - if (!e.isSuccess()) { - booWrap.boo = false; - } - if (PIGEON_REQUEST_TYPE.equals(m.getType()) && (PIGEON_REQUEST_NAME.equals(m.getName()) // is pigeon request - )) { - String requestMessageId = (String) e.getData(); - remoteIds.add(requestMessageId); - } - } else if (m instanceof Transaction) { - Transaction tt = (Transaction) m; - if (!tt.isSuccess()) { - booWrap.boo = false; - } - doTransactionChilds(remoteIds, tt, booWrap); - } + synchronized (m_output) { + m_output.write(sb.toString().getBytes()); } } } diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/transaction/TransactionAnalyzer.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/transaction/TransactionAnalyzer.java index c2aec6c40..b38f30e9c 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/transaction/TransactionAnalyzer.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/transaction/TransactionAnalyzer.java @@ -19,6 +19,8 @@ import org.codehaus.plexus.logging.Logger; import com.dianping.cat.Cat; import com.dianping.cat.configuration.NetworkInterfaceManager; +import com.dianping.cat.consumer.remote.RemoteIdChannel; +import com.dianping.cat.consumer.remote.RemoteIdChannelManager; import com.dianping.cat.consumer.transaction.model.entity.AllDuration; import com.dianping.cat.consumer.transaction.model.entity.Duration; import com.dianping.cat.consumer.transaction.model.entity.Machine; @@ -27,7 +29,6 @@ import com.dianping.cat.consumer.transaction.model.entity.TransactionName; import com.dianping.cat.consumer.transaction.model.entity.TransactionReport; import com.dianping.cat.consumer.transaction.model.entity.TransactionType; import com.dianping.cat.consumer.transaction.model.transform.DefaultSaxParser; -import com.dianping.cat.consumer.transaction.model.transform.DefaultXmlBuilder; import com.dianping.cat.hadoop.dal.Report; import com.dianping.cat.hadoop.dal.ReportDao; import com.dianping.cat.hadoop.dal.Task; @@ -35,6 +36,7 @@ import com.dianping.cat.hadoop.dal.TaskDao; import com.dianping.cat.message.Message; import com.dianping.cat.message.Transaction; import com.dianping.cat.message.spi.AbstractMessageAnalyzer; +import com.dianping.cat.message.spi.MessagePathBuilder; import com.dianping.cat.message.spi.MessageTree; import com.dianping.cat.storage.Bucket; import com.dianping.cat.storage.BucketManager; @@ -50,6 +52,12 @@ public class TransactionAnalyzer extends AbstractMessageAnalyzer m_reports = new HashMap(); private long m_extraTime; @@ -58,6 +66,8 @@ public class TransactionAnalyzer extends AbstractMessageAnalyzer reportBucket = null; @@ -340,7 +359,8 @@ public class TransactionAnalyzer extends AbstractMessageAnalyzer names = new ArrayList(); + Map transactionNames = type.getNames(); + for (TransactionName transactionName : transactionNames.values()) { + if (transactionName.getTotalCount() <= 1) { + names.add(transactionName.getId()); + } + } + + for (String name : names) { + transactionNames.remove(name); + } + } + super.visitType(type); + } + } } diff --git a/cat-consumer/src/main/resources/META-INF/plexus/components.xml b/cat-consumer/src/main/resources/META-INF/plexus/components.xml index 446c1a133..4e8644723 100644 --- a/cat-consumer/src/main/resources/META-INF/plexus/components.xml +++ b/cat-consumer/src/main/resources/META-INF/plexus/components.xml @@ -10,7 +10,7 @@ com.dianping.cat.consumer.RealtimeConsumer 180000 - problem,transaction,event,heartbeat,matrix,dump,remoteId + problem,transaction,event,heartbeat,matrix,dump @@ -87,6 +87,12 @@ com.dianping.cat.hadoop.dal.TaskDao + + com.dianping.cat.message.spi.MessagePathBuilder + + + com.dianping.cat.consumer.remote.RemoteIdChannelManager + @@ -103,6 +109,12 @@ com.dianping.cat.hadoop.dal.TaskDao + + com.dianping.cat.message.spi.MessagePathBuilder + + + com.dianping.cat.consumer.remote.RemoteIdChannelManager + @@ -119,6 +131,12 @@ com.dianping.cat.hadoop.dal.TaskDao + + com.dianping.cat.message.spi.MessagePathBuilder + + + com.dianping.cat.consumer.remote.RemoteIdChannelManager + @@ -183,25 +201,9 @@ com.dianping.cat.consumer.dump.DumpChannelManager - - - - com.dianping.cat.consumer.remote.RemoteIdAnalyzer - com.dianping.cat.consumer.remote.RemoteIdAnalyzer - per-lookup - - - com.dianping.cat.configuration.ServerConfigManager - - - com.dianping.cat.message.spi.MessagePathBuilder - com.dianping.cat.consumer.remote.RemoteIdUploader - - com.dianping.cat.consumer.remote.RemoteIdChannelManager - diff --git a/cat-core/src/main/java/com/dianping/cat/configuration/ServerConfigManager.java b/cat-core/src/main/java/com/dianping/cat/configuration/ServerConfigManager.java index d2de9efa4..35850f7b0 100644 --- a/cat-core/src/main/java/com/dianping/cat/configuration/ServerConfigManager.java +++ b/cat-core/src/main/java/com/dianping/cat/configuration/ServerConfigManager.java @@ -9,6 +9,8 @@ import java.util.Map; import org.codehaus.plexus.logging.LogEnabled; import org.codehaus.plexus.logging.Logger; +import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; +import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; import com.dianping.cat.configuration.server.entity.ConsoleConfig; import com.dianping.cat.configuration.server.entity.Domain; @@ -205,8 +207,11 @@ public class ServerConfigManager implements LogEnabled { public boolean isLocalMode() { if (m_config != null) { + System.out.println("Local Model in ServerConfigManager"+m_config.isLocalMode() ); + System.out.println(m_config); return m_config.isLocalMode(); } else { + System.out.println("Config is Null!!!"); return true; } } @@ -292,4 +297,13 @@ public class ServerConfigManager implements LogEnabled { public void configure(ServerConfigManager manager, boolean firstTime); } + +// @Override +// public void initialize() throws InitializationException { +// try { +// initialize(new File("/data/appdatas/cat/server.xml")); +// } catch (Exception e) { +// throw new RuntimeException("Error where loading cat server.xml!",e); +// } +// } } diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/model/Handler.java b/cat-home/src/main/java/com/dianping/cat/report/page/model/Handler.java index 2a996165b..ca713fcb0 100755 --- a/cat-home/src/main/java/com/dianping/cat/report/page/model/Handler.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/model/Handler.java @@ -19,6 +19,7 @@ import com.dianping.cat.consumer.transaction.model.entity.AllDuration; import com.dianping.cat.consumer.transaction.model.entity.Duration; import com.dianping.cat.consumer.transaction.model.entity.Range; import com.dianping.cat.consumer.transaction.model.entity.TransactionName; +import com.dianping.cat.consumer.transaction.model.entity.TransactionReport; import com.dianping.cat.consumer.transaction.model.entity.TransactionType; import com.dianping.cat.helper.CatString; import com.dianping.cat.report.ReportPage; @@ -271,6 +272,10 @@ public class Handler extends ContainerHolder implements PageHandler { private String m_ipAddress; + private String m_currentType; + + private String m_currentDomain; + public TransactionReportFilter(String type, String name, String ip) { m_type = type; m_name = name; @@ -305,9 +310,19 @@ public class Handler extends ContainerHolder implements PageHandler { if (m_type == null) { // skip it } else if (m_name != null && name.getId().equals(m_name)) { - super.visitName(name); + visitTransactionName(name); } else if ("*".equals(m_name)) { - super.visitName(name); + visitTransactionName(name); + } else { + visitTransactionName(name); + } + } + + private void visitTransactionName(TransactionName name) { + if ("URL".equals(m_currentType) && !"Cat".equals(m_currentDomain)) { + if (name.getTotalCount() > 1) { + super.visitName(name); + } } else { super.visitName(name); } @@ -323,16 +338,24 @@ public class Handler extends ContainerHolder implements PageHandler { @Override public void visitType(TransactionType type) { if (m_type == null) { + m_currentType = type.getId(); super.visitType(type); + } else if (m_type != null && type.getId().equals(m_type)) { type.setSuccessMessageUrl(null); type.setFailMessageUrl(null); - + m_currentType = type.getId(); super.visitType(type); } else { // skip it } } + + @Override + public void visitTransactionReport(TransactionReport transactionReport) { + m_currentDomain = transactionReport.getDomain(); + super.visitTransactionReport(transactionReport); + } } static class HeartBeatReportFilter extends com.dianping.cat.consumer.heartbeat.model.transform.DefaultXmlBuilder { diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/model/spi/internal/BaseHistoricalModelService.java b/cat-home/src/main/java/com/dianping/cat/report/page/model/spi/internal/BaseHistoricalModelService.java index 6629be300..bd5e72d48 100755 --- a/cat-home/src/main/java/com/dianping/cat/report/page/model/spi/internal/BaseHistoricalModelService.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/model/spi/internal/BaseHistoricalModelService.java @@ -31,6 +31,7 @@ public abstract class BaseHistoricalModelService extends ModelServiceWithCalS ServerConfigManager manager = lookup(ServerConfigManager.class); m_localMode = manager.isLocalMode(); + System.out.println(this.getClass().getName() + ">>>>>>>>>>>>>>>>Local Mode :" +m_localMode); } @Override diff --git a/cat-home/src/main/webapp/WEB-INF/webres.tld b/cat-home/src/main/webapp/WEB-INF/webres.tld index d225230c4..10cbffaa9 100755 --- a/cat-home/src/main/webapp/WEB-INF/webres.tld +++ b/cat-home/src/main/webapp/WEB-INF/webres.tld @@ -4,23 +4,9 @@ res http://www.unidal.org/webres - -bean -org.unidal.webres.taglib.basic.BeanTagHandler -JSP - - -id -true -true -java.lang.String - -false - - - -cssSlot -org.unidal.webres.taglib.basic.CssSlotTagHandler + +jsSlot +org.unidal.webres.taglib.basic.JsSlotTagHandler JSP @@ -30,7 +16,7 @@ boolean - + id false true @@ -46,26 +32,40 @@ true - -img -org.unidal.webres.taglib.basic.ImageTagHandler + +bean +org.unidal.webres.taglib.basic.BeanTagHandler JSP - -value + +id true true +java.lang.String + +false + + + +useCss +org.unidal.webres.taglib.basic.UseCssTagHandler +JSP + + +value +false +true java.lang.Object - + secure false true boolean - + id false true @@ -78,45 +78,66 @@ true java.lang.String + + +target +false +true +java.lang.String + true - -jsSlot -org.unidal.webres.taglib.basic.JsSlotTagHandler + +token +org.unidal.webres.taglib.basic.TokenTagHandler JSP - -secure + +renderType false true -boolean +java.lang.String - -id -false + +type +true true java.lang.String +false + + + +set +org.unidal.webres.taglib.basic.SetTagHandler +JSP - -renderType -false + +value +true +true +java.lang.Object + + + +id +true true java.lang.String -true +false - -link -org.unidal.webres.taglib.basic.LinkTagHandler + +useJs +org.unidal.webres.taglib.basic.UseJsTagHandler JSP - + value -true +false true java.lang.Object @@ -128,40 +149,47 @@ boolean + +id +false +true +java.lang.String + + renderType false true java.lang.String + + +target +false +true +java.lang.String + true - -set -org.unidal.webres.taglib.basic.SetTagHandler + +link +org.unidal.webres.taglib.basic.LinkTagHandler JSP - + value true true java.lang.Object - -id -true + +secure +false true -java.lang.String +boolean -false - - - -token -org.unidal.webres.taglib.basic.TokenTagHandler -JSP renderType @@ -169,36 +197,29 @@ true java.lang.String - - -type -true -true -java.lang.String - -false +true - -useCss -org.unidal.webres.taglib.basic.UseCssTagHandler + +img +org.unidal.webres.taglib.basic.ImageTagHandler JSP - + value -false +true true java.lang.Object - + secure false true boolean - + id false true @@ -211,28 +232,14 @@ true java.lang.String - - -target -false -true -java.lang.String - true - -useJs -org.unidal.webres.taglib.basic.UseJsTagHandler + +cssSlot +org.unidal.webres.taglib.basic.CssSlotTagHandler JSP - -value -false -true -java.lang.Object - - secure false @@ -240,7 +247,7 @@ boolean - + id false true @@ -253,13 +260,6 @@ true java.lang.String - - -target -false -true -java.lang.String - true diff --git a/cat-job/src/main/java/com/dianping/cat/job/JobApp.java b/cat-job/src/main/java/com/dianping/cat/job/JobApp.java index a17cb561b..a1b231d39 100644 --- a/cat-job/src/main/java/com/dianping/cat/job/JobApp.java +++ b/cat-job/src/main/java/com/dianping/cat/job/JobApp.java @@ -28,7 +28,6 @@ public class JobApp extends Configured implements Tool { return lookup(role, null); } - @SuppressWarnings("unchecked") public static T lookup(Class role, String roleHint) { try { return (T) s_instance.m_container.lookup(role, roleHint == null ? "default" : roleHint.toString()); diff --git a/cat-job/src/main/java/com/dianping/cat/job/sql/database/ContainerBootstrap.java b/cat-job/src/main/java/com/dianping/cat/job/sql/database/ContainerBootstrap.java index 905463748..dfe8a66e7 100644 --- a/cat-job/src/main/java/com/dianping/cat/job/sql/database/ContainerBootstrap.java +++ b/cat-job/src/main/java/com/dianping/cat/job/sql/database/ContainerBootstrap.java @@ -14,12 +14,10 @@ public enum ContainerBootstrap { m_container = ContainerLoader.getDefaultContainer(); } - @SuppressWarnings("unchecked") public T lookup(Class role) throws ComponentLookupException { return (T) m_container.lookup(role); } - @SuppressWarnings("unchecked") public T lookup(Class role, String roleHint) throws ComponentLookupException { return (T) m_container.lookup(role, roleHint); } -- GitLab