提交 9f9c503f 编写于 作者: Y You Yong

Merge branch 'master' of ssh://192.168.8.22:58422/cat

......@@ -87,7 +87,8 @@ CREATE TABLE `graph` (
`domain` varchar(20) NOT NULL COMMENT '报表处理的Domain信息',
`period` datetime NOT NULL COMMENT '报表时间段',
`type` tinyint(4) NOT NULL COMMENT '报表数据格式, 1/xml, 2/json, 3/csv, 默认3',
`content` mediumtext NOT NULL COMMENT '绘图内容',
`detail_content` mediumtext NOT NULL COMMENT '详细绘图内容',
`summary_content` mediumtext NOT NULL COMMENT '概要绘图内容',
`creation_date` datetime NOT NULL COMMENT '报表创建时间',
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8 COMMENT='用于存放以小时为单位的绘图数据';
......@@ -113,11 +114,14 @@ CREATE TABLE `dailygraph` (
`domain` varchar(20) NOT NULL COMMENT '报表处理的Domain信息',
`period` datetime NOT NULL COMMENT '报表时间段',
`type` tinyint(4) NOT NULL COMMENT '报表数据格式, 1/xml, 2/json, 3/csv, 默认3',
`content` mediumtext NOT NULL COMMENT '绘图内容',
`detail_content` mediumtext NOT NULL COMMENT '详细绘图内容',
`summary_content` mediumtext NOT NULL COMMENT '概要绘图内容',
`creation_date` datetime NOT NULL COMMENT '报表创建时间',
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8 COMMENT='用于存放以天为单位的绘图数据';
CREATE UNIQUE INDEX dailygraph_period_ip_domain_name ON dailygraph (period, ip, domain, name);
CREATE TABLE `location` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`lat` double NOT NULL,
......
......@@ -5,8 +5,8 @@
<member name="domain" field="domain" value-type="String" length="50" nullable="false" />
<member name="author" field="author" value-type="String" length="32" nullable="false" />
<member name="content" field="content" value-type="String" length="1024" nullable="false" />
<member name="happened" field="happened" value-type="Date" nullable="false" />
<member name="status" field="status" value-type="int" length="3" nullable="false" />
<member name="happened" field="happened" value-type="Date" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
......@@ -41,10 +41,12 @@
<member name="domain" field="domain" value-type="String" length="20" nullable="false" />
<member name="period" field="period" value-type="Date" nullable="false" />
<member name="type" field="type" value-type="int" length="3" nullable="false" />
<member name="content" field="content" value-type="String" length="16777215" nullable="false" />
<member name="detail-content" field="detail_content" value-type="String" length="16777215" nullable="false" />
<member name="summary-content" field="summary_content" value-type="String" length="16777215" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="dailygraph_period_ip_domain_name" unique="true" members="period ASC, ip ASC, domain ASC, name ASC" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
......@@ -111,10 +113,12 @@
<member name="domain" field="domain" value-type="String" length="20" nullable="false" />
<member name="period" field="period" value-type="Date" nullable="false" />
<member name="type" field="type" value-type="int" length="3" nullable="false" />
<member name="content" field="content" value-type="String" length="16777215" nullable="false" />
<member name="detail-content" field="detail_content" value-type="String" length="16777215" nullable="false" />
<member name="summary-content" field="summary_content" value-type="String" length="16777215" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="graph_period_ip_domain_name" unique="true" members="period ASC, ip ASC, domain ASC, name ASC" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
......@@ -139,7 +143,41 @@
</query>
</query-defs>
</entity>
<entity name="logview" table="logview" alias="l">
<entity name="location" table="location" alias="l">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="lat" field="lat" value-type="double" length="22" nullable="false" />
<member name="lng" field="lng" value-type="double" length="22" nullable="false" />
<member name="total" field="total" value-type="int" length="10" nullable="false" />
<member name="transaction-date" field="transaction_date" value-type="Date" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="transaction_date_lat_lng" unique="true" members="transaction_date ASC, lat ASC, lng ASC" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
<updatesets>
<updateset name="FULL" all="true" />
</updatesets>
<query-defs>
<query name="find-by-PK" type="SELECT">
<param name="key-id" />
<statement><![CDATA[SELECT <FIELDS/> FROM <TABLE/> WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="insert" type="INSERT">
<statement><![CDATA[INSERT INTO <TABLE/>(<FIELDS/>) VALUES(<VALUES/>)]]></statement>
</query>
<query name="update-by-PK" type="UPDATE">
<param name="key-id" />
<statement><![CDATA[UPDATE <TABLE/> SET <FIELDS/> WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
<query name="delete-by-PK" type="DELETE">
<param name="key-id" />
<statement><![CDATA[DELETE FROM <TABLE/> WHERE <FIELD name='id'/> = ${key-id}]]></statement>
</query>
</query-defs>
</entity>
<entity name="logview" table="logview" alias="l2">
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="message-id" field="message_id" value-type="String" length="64" nullable="false" />
<member name="data-path" field="data_path" value-type="String" length="200" nullable="false" />
......@@ -264,16 +302,17 @@
<member name="id" field="id" value-type="int" length="10" nullable="false" key="true" auto-increment="true" />
<member name="producer" field="producer" value-type="String" length="20" nullable="false" />
<member name="consumer" field="consumer" value-type="String" length="20" />
<member name="status" field="status" value-type="int" length="3" nullable="false" />
<member name="failure-count" field="failure_count" value-type="int" length="3" nullable="false" />
<member name="report-name" field="report_name" value-type="String" length="20" nullable="false" />
<member name="report-domain" field="report_domain" value-type="String" length="20" nullable="false" />
<member name="report-period" field="report_period" value-type="Date" nullable="false" />
<member name="status" field="status" value-type="int" length="3" nullable="false" />
<member name="creation-date" field="creation_date" value-type="Date" nullable="false" />
<member name="start-date" field="start_date" value-type="Date" nullable="false" />
<member name="end-date" field="end_date" value-type="Date" nullable="false" />
<member name="start-date" field="start_date" value-type="Date" />
<member name="end-date" field="end_date" value-type="Date" />
<var name="key-id" value-type="int" key-member="id" />
<primary-key name="PRIMARY" members="id" />
<index name="task_period_domain_name" unique="true" members="report_period ASC, report_domain ASC, report_name ASC" />
<readsets>
<readset name="FULL" all="true" />
</readsets>
......
......@@ -6,11 +6,11 @@ package com.dianping.cat.report.task;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
import java.util.concurrent.locks.LockSupport;
import org.codehaus.plexus.logging.LogEnabled;
......@@ -311,7 +311,8 @@ public class DefaultTaskConsumer extends TaskConsumer implements LogEnabled {
private List<Graph> splitTransactionReportToGraphs(Date reportPeroid, String domainName, String reportName, TransactionReport transactionReport) {
Set<String> ips = transactionReport.getIps();
List<Graph> graphs = new ArrayList<Graph>(ips.size() + 1); // all and every machine
Map<String, GraphLine> allGraphCache = new HashMap<String, GraphLine>();
Map<String, GraphLine> allDetailCache = new TreeMap<String, GraphLine>();
Map<String, GraphLine> allSummaryCache = new TreeMap<String, GraphLine>();
Date creationDate = new Date();
for (String ip : ips) {
Graph graph = new Graph();
......@@ -323,45 +324,75 @@ public class DefaultTaskConsumer extends TaskConsumer implements LogEnabled {
graph.setCreationDate(creationDate);
Machine machine = transactionReport.getMachines().get(ip);
Map<String, TransactionType> types = machine.getTypes();
StringBuilder contentBuilder = new StringBuilder();
StringBuilder detailBuilder = new StringBuilder();
StringBuilder summaryBuilder = new StringBuilder();
for (Entry<String, TransactionType> transactionEntry : types.entrySet()) {
TransactionType transactionType = transactionEntry.getValue();
summaryBuilder.append(transactionType.getId());
summaryBuilder.append('\t');
summaryBuilder.append(transactionType.getTotalCount());
summaryBuilder.append('\t');
summaryBuilder.append(transactionType.getFailCount());
summaryBuilder.append('\t');
summaryBuilder.append(transactionType.getMin());
summaryBuilder.append('\t');
summaryBuilder.append(transactionType.getMax());
summaryBuilder.append('\t');
summaryBuilder.append(transactionType.getSum());
summaryBuilder.append('\t');
summaryBuilder.append(transactionType.getSum2());
summaryBuilder.append('\n');
String summaryKey = transactionType.getId();
GraphLine summaryLine = allSummaryCache.get(summaryKey);
if (summaryLine == null) {
summaryLine = new GraphLine();
allSummaryCache.put(summaryKey, summaryLine);
}
summaryLine.totalCount += transactionType.getTotalCount();
summaryLine.failCount += transactionType.getFailCount();
summaryLine.min += transactionType.getMin();
summaryLine.max += transactionType.getMax();
summaryLine.sum += transactionType.getSum();
summaryLine.sum2 += transactionType.getSum2();
Map<String, TransactionName> names = transactionType.getNames();
for (Entry<String, TransactionName> nameEntry : names.entrySet()) {
TransactionName transactionName = nameEntry.getValue();
contentBuilder.append(transactionType.getId());
contentBuilder.append('\t');
contentBuilder.append(transactionName.getId());
contentBuilder.append('\t');
contentBuilder.append(transactionName.getTotalCount());
contentBuilder.append('\t');
contentBuilder.append(transactionName.getFailCount());
contentBuilder.append('\t');
contentBuilder.append(transactionName.getMin());
contentBuilder.append('\t');
contentBuilder.append(transactionName.getMax());
contentBuilder.append('\t');
contentBuilder.append(transactionName.getSum());
contentBuilder.append('\t');
contentBuilder.append(transactionName.getSum2());
contentBuilder.append('\n');
detailBuilder.append(transactionType.getId());
detailBuilder.append('\t');
detailBuilder.append(transactionName.getId());
detailBuilder.append('\t');
detailBuilder.append(transactionName.getTotalCount());
detailBuilder.append('\t');
detailBuilder.append(transactionName.getFailCount());
detailBuilder.append('\t');
detailBuilder.append(transactionName.getMin());
detailBuilder.append('\t');
detailBuilder.append(transactionName.getMax());
detailBuilder.append('\t');
detailBuilder.append(transactionName.getSum());
detailBuilder.append('\t');
detailBuilder.append(transactionName.getSum2());
detailBuilder.append('\n');
String key = transactionType.getId() + "\t" + transactionName.getId();
GraphLine graphLine = allGraphCache.get(key);
if (graphLine == null) {
graphLine = new GraphLine();
allGraphCache.put(key, graphLine);
GraphLine detailLine = allDetailCache.get(key);
if (detailLine == null) {
detailLine = new GraphLine();
allDetailCache.put(key, detailLine);
}
graphLine.totalCount += transactionName.getTotalCount();
graphLine.failCount += transactionName.getFailCount();
graphLine.min += transactionName.getMin();
graphLine.max += transactionName.getMax();
graphLine.sum += transactionName.getSum();
graphLine.sum2 += transactionName.getSum2();
detailLine.totalCount += transactionName.getTotalCount();
detailLine.failCount += transactionName.getFailCount();
detailLine.min += transactionName.getMin();
detailLine.max += transactionName.getMax();
detailLine.sum += transactionName.getSum();
detailLine.sum2 += transactionName.getSum2();
}
}
graph.setContent(contentBuilder.toString());
graph.setDetailContent(detailBuilder.toString());
graph.setSummaryContent(summaryBuilder.toString());
graphs.add(graph);
}
......@@ -373,25 +404,45 @@ public class DefaultTaskConsumer extends TaskConsumer implements LogEnabled {
allGraph.setType(3);
allGraph.setCreationDate(creationDate);
StringBuilder sb = new StringBuilder();
for (Entry<String, GraphLine> entry : allGraphCache.entrySet()) {
sb.append(entry.getKey());
sb.append('\t');
StringBuilder detailSb = new StringBuilder();
for (Entry<String, GraphLine> entry : allDetailCache.entrySet()) {
detailSb.append(entry.getKey());
detailSb.append('\t');
GraphLine value = entry.getValue();
detailSb.append(value.totalCount);
detailSb.append('\t');
detailSb.append(value.failCount);
detailSb.append('\t');
detailSb.append(value.min);
detailSb.append('\t');
detailSb.append(value.max);
detailSb.append('\t');
detailSb.append(value.sum);
detailSb.append('\t');
detailSb.append(value.sum2);
detailSb.append('\n');
}
allGraph.setDetailContent(detailSb.toString());
StringBuilder summarySb = new StringBuilder();
for (Entry<String, GraphLine> entry : allSummaryCache.entrySet()) {
summarySb.append(entry.getKey());
summarySb.append('\t');
GraphLine value = entry.getValue();
sb.append(value.totalCount);
sb.append('\t');
sb.append(value.failCount);
sb.append('\t');
sb.append(value.min);
sb.append('\t');
sb.append(value.max);
sb.append('\t');
sb.append(value.sum);
sb.append('\t');
sb.append(value.sum2);
sb.append('\n');
summarySb.append(value.totalCount);
summarySb.append('\t');
summarySb.append(value.failCount);
summarySb.append('\t');
summarySb.append(value.min);
summarySb.append('\t');
summarySb.append(value.max);
summarySb.append('\t');
summarySb.append(value.sum);
summarySb.append('\t');
summarySb.append(value.sum2);
summarySb.append('\n');
}
allGraph.setContent(sb.toString());
allGraph.setSummaryContent(summarySb.toString());
graphs.add(allGraph);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册