Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
f10f2eba
C
cat
项目概览
梦中观雨
/
cat
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
cat
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
f10f2eba
编写于
11月 22, 2013
作者:
A
ainilife
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update README.md and more unit tests
上级
5ffa8491
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
110 addition
and
26 deletion
+110
-26
README.md
README.md
+28
-17
cat-client/src/main/java/com/dianping/cat/abtest/spi/internal/groupstrategy/TrafficDistributionGroupStrategy.java
...ernal/groupstrategy/TrafficDistributionGroupStrategy.java
+9
-0
cat-client/src/main/resources/com/dianping/cat/configuration/client/config.xsd
...esources/com/dianping/cat/configuration/client/config.xsd
+1
-2
cat-client/src/main/resources/com/dianping/cat/status/model/status.xsd
...c/main/resources/com/dianping/cat/status/model/status.xsd
+1
-2
cat-client/src/test/java/com/dianping/cat/AllTests.java
cat-client/src/test/java/com/dianping/cat/AllTests.java
+9
-0
cat-client/src/test/java/com/dianping/cat/abtest/spi/internal/ABTestCodecTest.java
...com/dianping/cat/abtest/spi/internal/ABTestCodecTest.java
+1
-1
cat-client/src/test/java/com/dianping/cat/abtest/spi/internal/ABTestContextTest.java
...m/dianping/cat/abtest/spi/internal/ABTestContextTest.java
+5
-0
cat-client/src/test/java/com/dianping/cat/abtest/spi/internal/groupstrategy/TrafficDistributionGroupStrategyTest.java
...l/groupstrategy/TrafficDistributionGroupStrategyTest.java
+46
-0
cat-maven-plugin/src/main/java/com/dianping/cat/plugin/InstallMojo.java
...in/src/main/java/com/dianping/cat/plugin/InstallMojo.java
+10
-4
未找到文件。
README.md
浏览文件 @
f10f2eba
CAT
CAT
[![Build Status](https://travis-ci.org/dianping/cat.png?branch=biz)](https://travis-ci.org/dianping/cat)
===
<hr>
Central Application Tracking
[
![Build Status
](
https://travis-ci.org/dianping/cat.png?branch=biz
)
](https://travis-ci.org/dianping/cat)
CAT的全称是Central Application Tracking,是基于Java开发的实时应用监控平台,包括实时系统监控、应用监控以及业务监控。
CAT主要通过以下几种埋点类型收集信息:
*
Event 用来记录次数,表名单位时间内消息发生次数,比如记录系统异常,它和transaction相比缺少了时间的统计,开销比transaction要小。
*
Transaction 适合记录跨越系统边界的程序访问行为,,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控。
*
Heartbeat Heartbeta表示程序内定期产生的统计信息, 如CHPU%, MEM%, 连接池状态, 系统负载等。
*
Metric 用于业务监控埋点的API。
Requirements
---------------------
*
Java 6
*
Maven
*
MySQL
Quick Started
---------------------
#####1、安装Java 6+,Maven以及MySQL
#####2、cd到CAT目录下,用maven构建项目
mvn eclipse:clean eclipse:eclipse
#####3、安装CAT的maven plugin,使用它配置CAT的环境
cd cat-maven-plugin;mvn cat:install
确保系统的临时目录程序拥有读写权限,Linux为/tmp/目录
#####5、如果你安装了hadoop集群,请到/data/appdatas/cat/server.xml中配置对应hadoop信息,并将localmode设置为false。默认情况下,CAT在localmode=true的开发模式下工作。
#####1、cd到CAT目录下,用maven构建项目
mvn install
#####2、安装CAT的maven plugin,使用它配置CAT的环境
mkdir -p /data/appdata/cat; chmod 777 /data/appdata/cat
mkdir -p /data/applogs/cat; chmod 777 /data/applogs/cat
mvn cat:install
#####3、如果安装了hadoop集群,需到/data/appdatas/cat/server.xml中配置对应hadoop信息。将localmode设置为false,默认情况下,CAT在开发模式(localmode=true)下工作。
#####4、运行CAT
开发模式下有两种方式启动:
方式一:
cd cat-home;mvn jetty:run
然后浏览http://localhost:2281
方式二:
将项目导入到eclipse中,运行cat-home项目里得‘com.dianping.cat.TestServer’来启动CAT。
cd cat-home;mvn jetty:run
然后打开浏览器,输入http://localhost:2281。
或者在cat目录下输入
mvn eclipse:clean eclipse:eclipse
然后将项目导入到eclipse中,运行cat-home项目里得‘com.dianping.cat.TestServer’来启动CAT。
Copyright and license
---------------------
...
...
cat-client/src/main/java/com/dianping/cat/abtest/spi/internal/groupstrategy/TrafficDistributionGroupStrategy.java
浏览文件 @
f10f2eba
...
...
@@ -42,4 +42,13 @@ public class TrafficDistributionGroupStrategy implements ABTestGroupStrategy {
m_percentA
=
50
;
}
}
public
void
init
(
int
...
percents
)
{
if
(
percents
.
length
==
2
)
{
if
(
percents
[
0
]
+
percents
[
1
]
==
100
)
{
m_percentControl
=
percents
[
0
];
m_percentA
=
percents
[
1
];
}
}
}
}
cat-client/src/main/resources/com/dianping/cat/configuration/client/config.xsd
浏览文件 @
f10f2eba
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
xmlns:xs=
"http://www.w3.org/2001/XMLSchema"
elementFormDefault=
"qualified"
attributeFormDefault=
"unqualified"
>
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
xmlns:xs=
"http://www.w3.org/2001/XMLSchema"
elementFormDefault=
"qualified"
attributeFormDefault=
"unqualified"
>
<xs:element
name=
"config"
type=
"ConfigType"
/>
<xs:complexType
name=
"ConfigType"
>
<xs:sequence>
...
...
cat-client/src/main/resources/com/dianping/cat/status/model/status.xsd
浏览文件 @
f10f2eba
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
xmlns:xs=
"http://www.w3.org/2001/XMLSchema"
elementFormDefault=
"qualified"
attributeFormDefault=
"unqualified"
>
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
xmlns:xs=
"http://www.w3.org/2001/XMLSchema"
elementFormDefault=
"qualified"
attributeFormDefault=
"unqualified"
>
<xs:element
name=
"status"
type=
"StatusType"
/>
<xs:complexType
name=
"StatusType"
>
<xs:sequence>
...
...
cat-client/src/test/java/com/dianping/cat/AllTests.java
浏览文件 @
f10f2eba
...
...
@@ -4,6 +4,9 @@ import org.junit.runner.RunWith;
import
org.junit.runners.Suite
;
import
org.junit.runners.Suite.SuiteClasses
;
import
com.dianping.cat.abtest.spi.internal.ABTestCodecTest
;
import
com.dianping.cat.abtest.spi.internal.ABTestEntityManagerTest
;
import
com.dianping.cat.abtest.spi.internal.groupstrategy.TrafficDistributionGroupStrategyTest
;
import
com.dianping.cat.configuration.ConfigTest
;
import
com.dianping.cat.log4j.CatAppenderTest
;
import
com.dianping.cat.message.EventTest
;
...
...
@@ -26,6 +29,12 @@ CatAppenderTest.class,
/* .message */
MessageTest
.
class
,
TrafficDistributionGroupStrategyTest
.
class
,
ABTestCodecTest
.
class
,
ABTestEntityManagerTest
.
class
,
EventTest
.
class
,
HeartbeatTest
.
class
,
...
...
cat-client/src/test/java/com/dianping/cat/abtest/spi/internal/ABTestCo
ntextManager
Test.java
→
cat-client/src/test/java/com/dianping/cat/abtest/spi/internal/ABTestCo
dec
Test.java
浏览文件 @
f10f2eba
...
...
@@ -9,7 +9,7 @@ import junit.framework.Assert;
import
org.junit.Test
;
import
org.unidal.lookup.ComponentTestCase
;
public
class
ABTestCo
ntextManager
Test
extends
ComponentTestCase
{
public
class
ABTestCo
dec
Test
extends
ComponentTestCase
{
@Test
public
void
testCodec
()
throws
Exception
{
check
(
"1=ab:A|cd:B&2=ab:A|cd:B"
,
"1=ab:A|cd:B&2=ab:A|cd:B"
);
...
...
cat-client/src/test/java/com/dianping/cat/abtest/spi/internal/ABTestContextTest.java
0 → 100644
浏览文件 @
f10f2eba
package
com.dianping.cat.abtest.spi.internal
;
public
class
ABTestContextTest
{
}
cat-client/src/test/java/com/dianping/cat/abtest/spi/internal/groupstrategy/TrafficDistributionGroupStrategyTest.java
0 → 100644
浏览文件 @
f10f2eba
package
com.dianping.cat.abtest.spi.internal.groupstrategy
;
import
junit.framework.Assert
;
import
org.junit.Test
;
import
org.unidal.lookup.ComponentTestCase
;
import
com.dianping.cat.abtest.spi.ABTestContext
;
import
com.dianping.cat.abtest.spi.ABTestEntity
;
import
com.dianping.cat.abtest.spi.ABTestGroupStrategy
;
import
com.dianping.cat.abtest.spi.internal.DefaultABTestContext
;
public
class
TrafficDistributionGroupStrategyTest
extends
ComponentTestCase
{
@Test
public
void
test
()
throws
Exception
{
testApply
(
50
,
50
);
testApply
(
40
,
60
);
testApply
(
55
,
45
);
}
public
void
testApply
(
int
expectDefault
,
int
expectA
)
throws
Exception
{
TrafficDistributionGroupStrategy
strategy
=
(
TrafficDistributionGroupStrategy
)
lookup
(
ABTestGroupStrategy
.
class
,
TrafficDistributionGroupStrategy
.
ID
);
ABTestContext
ctx
=
new
DefaultABTestContext
(
new
ABTestEntity
());
strategy
.
init
(
expectDefault
,
expectA
);
int
countDefault
=
0
;
int
countA
=
0
;
for
(
int
i
=
0
;
i
<
100
;
i
++)
{
strategy
.
apply
(
ctx
);
if
(
ctx
.
getGroupName
().
equals
(
ABTestContext
.
DEFAULT_GROUP
))
{
countDefault
++;
}
else
{
countA
++;
}
}
Assert
.
assertEquals
(
expectDefault
,
countDefault
);
Assert
.
assertEquals
(
expectA
,
countA
);
}
}
cat-maven-plugin/src/main/java/com/dianping/cat/plugin/InstallMojo.java
浏览文件 @
f10f2eba
...
...
@@ -25,6 +25,8 @@ public class InstallMojo extends AbstractMojo {
private
String
m_path
=
"/data/appdatas/cat"
;
private
String
m_logPath
=
"/data/applogs/cat"
;
private
String
m_clientPath
=
m_path
+
File
.
separator
+
"client.xml"
;
private
String
m_serverPath
=
m_path
+
File
.
separator
+
"server.xml"
;
...
...
@@ -91,6 +93,7 @@ public class InstallMojo extends AbstractMojo {
getLog
().
info
(
"Preparing Cat environment ... DONE"
);
getLog
().
info
(
"Use following command line to start local Cat server:"
);
getLog
().
info
(
" cd cat-home; mvn jetty:run"
);
getLog
().
info
(
"Please open http://localhost:2281/cat in your browser"
);
}
}
...
...
@@ -101,16 +104,18 @@ public class InstallMojo extends AbstractMojo {
return
conn
;
}
private
boolean
setupConfigurationFiles
()
{
private
boolean
setupConfigurationFiles
()
throws
MojoFailureException
{
File
path
=
new
File
(
m_path
);
File
logPath
=
new
File
(
m_logPath
);
if
(!
path
.
exists
())
{
path
.
mkdirs
();
logPath
.
mkdirs
();
}
if
(!
path
.
canRead
()
||
!
path
.
canWrite
())
{
if
(!
path
.
canRead
()
||
!
path
.
canWrite
()
||
!
logPath
.
canRead
()
||
!
logPath
.
canWrite
()
)
{
getLog
().
error
(
"Don't have privilege to read/write "
+
m_path
);
return
false
;
throw
new
MojoFailureException
(
"Don't have privilege to read/write "
+
m_path
)
;
}
getLog
().
info
(
"Generating the configuration files to "
+
m_path
+
" ..."
);
...
...
@@ -153,7 +158,7 @@ public class InstallMojo extends AbstractMojo {
}
}
private
boolean
setupDatabase
()
{
private
boolean
setupDatabase
()
throws
MojoFailureException
{
Connection
conn
=
null
;
Statement
stmt
=
null
;
boolean
isSuccess
=
false
;
...
...
@@ -175,6 +180,7 @@ public class InstallMojo extends AbstractMojo {
isSuccess
=
true
;
}
catch
(
Throwable
e
)
{
getLog
().
error
(
e
);
throw
new
MojoFailureException
(
e
.
getMessage
());
}
finally
{
try
{
if
(
stmt
!=
null
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录