Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
阿信在这里
SkyWalking
提交
d3db2d7f
S
SkyWalking
项目概览
阿信在这里
/
SkyWalking
与 Fork 源项目一致
Fork自
山不在高_有仙则灵 / SkyWalking
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyWalking
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d3db2d7f
编写于
8月 30, 2017
作者:
P
pengys5
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Service reference finish and test success.
#373
上级
167dc818
变更
48
隐藏空白更改
内联
并排
Showing
48 changed file
with
749 addition
and
168 deletion
+749
-168
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/handler/JVMMetricsServiceHandler.java
...ector/agentjvm/grpc/handler/JVMMetricsServiceHandler.java
+1
-1
apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/InstanceDiscoveryServiceHandler.java
...egister/grpc/handler/InstanceDiscoveryServiceHandler.java
+5
-9
apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/instance/InstanceIDService.java
...m/collector/agentregister/instance/InstanceIDService.java
+1
-7
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/cache/ServiceCache.java
.../apm/collector/agentstream/worker/cache/ServiceCache.java
+7
-7
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/register/servicename/dao/IServiceNameDAO.java
...ream/worker/register/servicename/dao/IServiceNameDAO.java
+2
-0
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/register/servicename/dao/ServiceNameEsDAO.java
...eam/worker/register/servicename/dao/ServiceNameEsDAO.java
+12
-1
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/register/servicename/dao/ServiceNameH2DAO.java
...eam/worker/register/servicename/dao/ServiceNameH2DAO.java
+4
-0
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java
...stream/worker/service/entry/ServiceEntrySpanListener.java
+5
-7
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/dao/ServiceEntryEsDAO.java
...entstream/worker/service/entry/dao/ServiceEntryEsDAO.java
+6
-4
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/define/ServiceEntryEsTableDefine.java
...orker/service/entry/define/ServiceEntryEsTableDefine.java
+5
-2
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/define/ServiceEntryH2TableDefine.java
...orker/service/entry/define/ServiceEntryH2TableDefine.java
+5
-2
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceSpanListener.java
...tream/worker/serviceref/ServiceReferenceSpanListener.java
+29
-14
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/dao/ServiceReferenceEsDAO.java
...ntstream/worker/serviceref/dao/ServiceReferenceEsDAO.java
+6
-3
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/define/ServiceReferenceEsTableDefine.java
...rker/serviceref/define/ServiceReferenceEsTableDefine.java
+1
-0
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/define/ServiceReferenceH2TableDefine.java
...rker/serviceref/define/ServiceReferenceH2TableDefine.java
+1
-0
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/SegmentPost.java
...kywalking/apm/collector/agentstream/mock/SegmentPost.java
+18
-2
apm-collector/apm-collector-agentstream/src/test/resources/json/segment/normal/dubbox-provider.json
...c/test/resources/json/segment/normal/dubbox-provider.json
+2
-2
apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/ColumnNameUtils.java
...g/skywalking/apm/collector/core/util/ColumnNameUtils.java
+26
-0
apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/TimeBucketUtils.java
...g/skywalking/apm/collector/core/util/TimeBucketUtils.java
+28
-0
apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/utils/ColumnNameUtilsTestCase.java
...ing/apm/collector/core/utils/ColumnNameUtilsTestCase.java
+17
-0
apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/utils/TimeBucketUtilsTestCase.java
...ing/apm/collector/core/utils/TimeBucketUtilsTestCase.java
+7
-0
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/service/ServiceEntryDataDefine.java
...lector/storage/define/service/ServiceEntryDataDefine.java
+31
-17
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/service/ServiceEntryTable.java
...m/collector/storage/define/service/ServiceEntryTable.java
+2
-0
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/serviceref/ServiceReferenceDataDefine.java
...storage/define/serviceref/ServiceReferenceDataDefine.java
+22
-7
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/serviceref/ServiceReferenceTable.java
...ctor/storage/define/serviceref/ServiceReferenceTable.java
+1
-0
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/define/ElasticSearchColumnDefine.java
...orage/elasticsearch/define/ElasticSearchColumnDefine.java
+1
-1
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/define/ElasticSearchStorageInstaller.java
...e/elasticsearch/define/ElasticSearchStorageInstaller.java
+13
-4
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/cache/ServiceIdCache.java
...org/skywalking/apm/collector/ui/cache/ServiceIdCache.java
+37
-0
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/cache/ServiceNameCache.java
...g/skywalking/apm/collector/ui/cache/ServiceNameCache.java
+10
-0
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IInstanceDAO.java
...ava/org/skywalking/apm/collector/ui/dao/IInstanceDAO.java
+2
-2
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceEntryDAO.java
...org/skywalking/apm/collector/ui/dao/IServiceEntryDAO.java
+2
-2
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceNameDAO.java
.../org/skywalking/apm/collector/ui/dao/IServiceNameDAO.java
+2
-0
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceEsDAO.java
...va/org/skywalking/apm/collector/ui/dao/InstanceEsDAO.java
+20
-19
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceH2DAO.java
...va/org/skywalking/apm/collector/ui/dao/InstanceH2DAO.java
+2
-1
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryEsDAO.java
...rg/skywalking/apm/collector/ui/dao/ServiceEntryEsDAO.java
+65
-2
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryH2DAO.java
...rg/skywalking/apm/collector/ui/dao/ServiceEntryH2DAO.java
+3
-3
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceNameEsDAO.java
...org/skywalking/apm/collector/ui/dao/ServiceNameEsDAO.java
+28
-4
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceNameH2DAO.java
...org/skywalking/apm/collector/ui/dao/ServiceNameH2DAO.java
+4
-0
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
...kywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
+137
-1
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleDefine.java
...kywalking/apm/collector/ui/jetty/UIJettyModuleDefine.java
+8
-4
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/application/ApplicationsGetHandler.java
.../ui/jetty/handler/application/ApplicationsGetHandler.java
+53
-0
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/EntryServiceGetHandler.java
.../ui/jetty/handler/servicetree/EntryServiceGetHandler.java
+50
-1
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetHandler.java
...r/ui/jetty/handler/servicetree/ServiceTreeGetHandler.java
+31
-1
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/AllInstanceLastTimeGetHandler.java
.../ui/jetty/handler/time/AllInstanceLastTimeGetHandler.java
+7
-8
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/OneInstanceLastTimeGetHandler.java
.../ui/jetty/handler/time/OneInstanceLastTimeGetHandler.java
+4
-4
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ApplicationService.java
...ywalking/apm/collector/ui/service/ApplicationService.java
+16
-0
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java
...lking/apm/collector/ui/service/InstanceHealthService.java
+0
-23
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java
...ywalking/apm/collector/ui/service/ServiceTreeService.java
+10
-3
未找到文件。
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/handler/JVMMetricsServiceHandler.java
浏览文件 @
d3db2d7f
...
...
@@ -59,7 +59,7 @@ public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsSe
long
heartBeatTime
)
{
InstanceHeartBeatDataDefine
.
InstanceHeartBeat
heartBeat
=
new
InstanceHeartBeatDataDefine
.
InstanceHeartBeat
();
heartBeat
.
setId
(
String
.
valueOf
(
applicationInstanceId
));
heartBeat
.
setHeartBeatTime
(
heartBeatTime
);
heartBeat
.
setHeartBeatTime
(
TimeBucketUtils
.
INSTANCE
.
getSecondTimeBucket
(
heartBeatTime
)
);
heartBeat
.
setInstanceId
(
applicationInstanceId
);
try
{
logger
.
debug
(
"send to instance heart beat persistence worker, id: {}"
,
heartBeat
.
getId
());
...
...
apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/InstanceDiscoveryServiceHandler.java
浏览文件 @
d3db2d7f
...
...
@@ -4,9 +4,9 @@ import com.google.gson.JsonArray;
import
com.google.gson.JsonObject
;
import
io.grpc.stub.StreamObserver
;
import
org.skywalking.apm.collector.agentregister.instance.InstanceIDService
;
import
org.skywalking.apm.collector.core.util.TimeBucketUtils
;
import
org.skywalking.apm.collector.server.grpc.GRPCHandler
;
import
org.skywalking.apm.network.proto.ApplicationInstance
;
import
org.skywalking.apm.network.proto.ApplicationInstanceHeartbeat
;
import
org.skywalking.apm.network.proto.ApplicationInstanceMapping
;
import
org.skywalking.apm.network.proto.ApplicationInstanceRecover
;
import
org.skywalking.apm.network.proto.Downstream
;
...
...
@@ -26,7 +26,8 @@ public class InstanceDiscoveryServiceHandler extends InstanceDiscoveryServiceGrp
@Override
public
void
register
(
ApplicationInstance
request
,
StreamObserver
<
ApplicationInstanceMapping
>
responseObserver
)
{
int
instanceId
=
instanceIDService
.
getOrCreate
(
request
.
getApplicationId
(),
request
.
getAgentUUID
(),
request
.
getRegisterTime
(),
buildOsInfo
(
request
.
getOsinfo
()));
long
timeBucket
=
TimeBucketUtils
.
INSTANCE
.
getSecondTimeBucket
(
request
.
getRegisterTime
());
int
instanceId
=
instanceIDService
.
getOrCreate
(
request
.
getApplicationId
(),
request
.
getAgentUUID
(),
timeBucket
,
buildOsInfo
(
request
.
getOsinfo
()));
ApplicationInstanceMapping
.
Builder
builder
=
ApplicationInstanceMapping
.
newBuilder
();
builder
.
setApplicationId
(
request
.
getApplicationId
());
builder
.
setApplicationInstanceId
(
instanceId
);
...
...
@@ -34,15 +35,10 @@ public class InstanceDiscoveryServiceHandler extends InstanceDiscoveryServiceGrp
responseObserver
.
onCompleted
();
}
@Override
public
void
heartbeat
(
ApplicationInstanceHeartbeat
request
,
StreamObserver
<
Downstream
>
responseObserver
)
{
instanceIDService
.
heartBeat
(
request
.
getApplicationInstanceId
(),
request
.
getHeartbeatTime
());
responseObserver
.
onNext
(
Downstream
.
newBuilder
().
build
());
responseObserver
.
onCompleted
();
}
@Override
public
void
registerRecover
(
ApplicationInstanceRecover
request
,
StreamObserver
<
Downstream
>
responseObserver
)
{
instanceIDService
.
recover
(
request
.
getApplicationInstanceId
(),
request
.
getApplicationId
(),
request
.
getRegisterTime
(),
buildOsInfo
(
request
.
getOsinfo
()));
long
timeBucket
=
TimeBucketUtils
.
INSTANCE
.
getSecondTimeBucket
(
request
.
getRegisterTime
());
instanceIDService
.
recover
(
request
.
getApplicationInstanceId
(),
request
.
getApplicationId
(),
timeBucket
,
buildOsInfo
(
request
.
getOsinfo
()));
responseObserver
.
onNext
(
Downstream
.
newBuilder
().
build
());
responseObserver
.
onCompleted
();
}
...
...
apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/instance/InstanceIDService.java
浏览文件 @
d3db2d7f
package
org.skywalking.apm.collector.agentregister.instance
;
import
org.skywalking.apm.collector.agentstream.worker.register.application.ApplicationRegisterRemoteWorker
;
import
org.skywalking.apm.collector.storage.define.register.InstanceDataDefine
;
import
org.skywalking.apm.collector.agentstream.worker.register.instance.dao.IInstanceDAO
;
import
org.skywalking.apm.collector.core.framework.CollectorContextHelper
;
import
org.skywalking.apm.collector.storage.dao.DAOContainer
;
import
org.skywalking.apm.collector.storage.define.register.InstanceDataDefine
;
import
org.skywalking.apm.collector.stream.StreamModuleContext
;
import
org.skywalking.apm.collector.stream.StreamModuleGroupDefine
;
import
org.skywalking.apm.collector.stream.worker.WorkerInvokeException
;
...
...
@@ -36,12 +36,6 @@ public class InstanceIDService {
return
applicationId
;
}
public
void
heartBeat
(
int
instanceId
,
long
heartbeatTime
)
{
logger
.
debug
(
"instance heart beat, instance id: {}, heartbeat time: {}"
,
instanceId
,
heartbeatTime
);
IInstanceDAO
dao
=
(
IInstanceDAO
)
DAOContainer
.
INSTANCE
.
get
(
IInstanceDAO
.
class
.
getName
());
dao
.
updateHeartbeatTime
(
instanceId
,
heartbeatTime
);
}
public
void
recover
(
int
instanceId
,
int
applicationId
,
long
registerTime
,
String
osInfo
)
{
logger
.
debug
(
"instance recover, instance id: {}, application id: {}, register time: {}"
,
instanceId
,
applicationId
,
registerTime
);
IInstanceDAO
dao
=
(
IInstanceDAO
)
DAOContainer
.
INSTANCE
.
get
(
IInstanceDAO
.
class
.
getName
());
...
...
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/cache/Service
Name
Cache.java
→
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/cache/ServiceCache.java
浏览文件 @
d3db2d7f
...
...
@@ -2,25 +2,25 @@ package org.skywalking.apm.collector.agentstream.worker.cache;
import
com.google.common.cache.Cache
;
import
com.google.common.cache.CacheBuilder
;
import
org.skywalking.apm.collector.core.util.Const
;
import
org.skywalking.apm.collector.agentstream.worker.register.servicename.dao.IServiceNameDAO
;
import
org.skywalking.apm.collector.core.util.Const
;
import
org.skywalking.apm.collector.storage.dao.DAOContainer
;
/**
* @author pengys5
*/
public
class
Service
Name
Cache
{
public
class
ServiceCache
{
private
static
Cache
<
String
,
Integer
>
CACHE
=
CacheBuilder
.
newBuilder
().
maximumSize
(
2
000
).
build
();
private
static
Cache
<
Integer
,
String
>
CACHE
=
CacheBuilder
.
newBuilder
().
maximumSize
(
10
000
).
build
();
public
static
int
get
(
int
applicationId
,
String
serviceName
)
{
public
static
String
getServiceName
(
int
serviceId
)
{
try
{
return
CACHE
.
get
(
applicationId
+
Const
.
ID_SPLIT
+
serviceName
,
()
->
{
return
CACHE
.
get
(
serviceId
,
()
->
{
IServiceNameDAO
dao
=
(
IServiceNameDAO
)
DAOContainer
.
INSTANCE
.
get
(
IServiceNameDAO
.
class
.
getName
());
return
dao
.
getService
Id
(
applicationId
,
serviceName
);
return
dao
.
getService
Name
(
serviceId
);
});
}
catch
(
Throwable
e
)
{
return
0
;
return
Const
.
EMPTY_STRING
;
}
}
}
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/register/servicename/dao/IServiceNameDAO.java
浏览文件 @
d3db2d7f
...
...
@@ -8,6 +8,8 @@ import org.skywalking.apm.collector.storage.define.register.ServiceNameDataDefin
public
interface
IServiceNameDAO
{
int
getServiceId
(
int
applicationId
,
String
serviceName
);
String
getServiceName
(
int
serviceId
);
int
getMaxServiceId
();
int
getMinServiceId
();
...
...
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/register/servicename/dao/ServiceNameEsDAO.java
浏览文件 @
d3db2d7f
...
...
@@ -2,6 +2,7 @@ package org.skywalking.apm.collector.agentstream.worker.register.servicename.dao
import
java.util.HashMap
;
import
java.util.Map
;
import
org.elasticsearch.action.get.GetResponse
;
import
org.elasticsearch.action.index.IndexResponse
;
import
org.elasticsearch.action.search.SearchRequestBuilder
;
import
org.elasticsearch.action.search.SearchResponse
;
...
...
@@ -10,9 +11,10 @@ import org.elasticsearch.action.support.WriteRequest;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.search.SearchHit
;
import
org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient
;
import
org.skywalking.apm.collector.core.util.Const
;
import
org.skywalking.apm.collector.storage.define.register.ServiceNameDataDefine
;
import
org.skywalking.apm.collector.storage.define.register.ServiceNameTable
;
import
org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient
;
import
org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -53,6 +55,15 @@ public class ServiceNameEsDAO extends EsDAO implements IServiceNameDAO {
return
getMinId
(
ServiceNameTable
.
TABLE
,
ServiceNameTable
.
COLUMN_SERVICE_ID
);
}
@Override
public
String
getServiceName
(
int
serviceId
)
{
GetResponse
response
=
getClient
().
prepareGet
(
ServiceNameTable
.
TABLE
,
String
.
valueOf
(
serviceId
)).
get
();
if
(
response
.
isExists
())
{
return
(
String
)
response
.
getSource
().
get
(
ServiceNameTable
.
COLUMN_SERVICE_NAME
);
}
else
{
return
Const
.
EMPTY_STRING
;
}
}
@Override
public
void
save
(
ServiceNameDataDefine
.
ServiceName
serviceName
)
{
logger
.
debug
(
"save service name register info, application id: {}, service name: {}"
,
serviceName
.
getApplicationId
(),
serviceName
.
getServiceName
());
ElasticSearchClient
client
=
getClient
();
...
...
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/register/servicename/dao/ServiceNameH2DAO.java
浏览文件 @
d3db2d7f
...
...
@@ -20,6 +20,10 @@ public class ServiceNameH2DAO extends H2DAO implements IServiceNameDAO {
return
0
;
}
@Override
public
String
getServiceName
(
int
serviceId
)
{
return
null
;
}
@Override
public
void
save
(
ServiceNameDataDefine
.
ServiceName
serviceName
)
{
}
...
...
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java
浏览文件 @
d3db2d7f
package
org.skywalking.apm.collector.agentstream.worker.service.entry
;
import
org.skywalking.apm.collector.agentstream.worker.cache.ServiceCache
;
import
org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener
;
import
org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener
;
import
org.skywalking.apm.collector.agentstream.worker.segment.RefsListener
;
...
...
@@ -36,7 +37,7 @@ public class ServiceEntrySpanListener implements RefsListener, FirstSpanListener
if
(
spanObject
.
getOperationNameId
()
==
0
)
{
this
.
entryServiceName
=
spanObject
.
getOperationName
();
}
else
{
this
.
entryServiceName
=
Const
.
EMPTY_STRING
;
this
.
entryServiceName
=
ServiceCache
.
getServiceName
(
this
.
entryServiceId
)
;
}
}
...
...
@@ -55,15 +56,12 @@ public class ServiceEntrySpanListener implements RefsListener, FirstSpanListener
StreamModuleContext
context
=
(
StreamModuleContext
)
CollectorContextHelper
.
INSTANCE
.
getContext
(
StreamModuleGroupDefine
.
GROUP_NAME
);
if
(!
hasReference
)
{
ServiceEntryDataDefine
.
ServiceEntry
serviceEntry
=
new
ServiceEntryDataDefine
.
ServiceEntry
();
if
(
entryServiceId
==
0
)
{
serviceEntry
.
setId
(
timeBucket
+
Const
.
ID_SPLIT
+
entryServiceName
);
}
else
{
serviceEntry
.
setId
(
timeBucket
+
Const
.
ID_SPLIT
+
entryServiceId
);
}
serviceEntry
.
setId
(
applicationId
+
Const
.
ID_SPLIT
+
entryServiceName
);
serviceEntry
.
setApplicationId
(
applicationId
);
serviceEntry
.
setEntryServiceId
(
entryServiceId
);
serviceEntry
.
setEntryServiceName
(
entryServiceName
);
serviceEntry
.
setTimeBucket
(
timeBucket
);
serviceEntry
.
setRegisterTime
(
timeBucket
);
serviceEntry
.
setNewestTime
(
timeBucket
);
try
{
logger
.
debug
(
"send to service entry aggregation worker, id: {}"
,
serviceEntry
.
getId
());
...
...
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/dao/ServiceEntryEsDAO.java
浏览文件 @
d3db2d7f
...
...
@@ -24,7 +24,8 @@ public class ServiceEntryEsDAO extends EsDAO implements IServiceEntryDAO, IPersi
data
.
setDataInteger
(
0
,
((
Number
)
source
.
get
(
ServiceEntryTable
.
COLUMN_APPLICATION_ID
)).
intValue
());
data
.
setDataInteger
(
1
,
((
Number
)
source
.
get
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_ID
)).
intValue
());
data
.
setDataString
(
1
,
(
String
)
source
.
get
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_NAME
));
data
.
setDataLong
(
0
,
(
Long
)
source
.
get
(
ServiceEntryTable
.
COLUMN_TIME_BUCKET
));
data
.
setDataLong
(
0
,
((
Number
)
source
.
get
(
ServiceEntryTable
.
COLUMN_REGISTER_TIME
)).
longValue
());
data
.
setDataLong
(
1
,
((
Number
)
source
.
get
(
ServiceEntryTable
.
COLUMN_NEWEST_TIME
)).
longValue
());
return
data
;
}
else
{
return
null
;
...
...
@@ -36,8 +37,8 @@ public class ServiceEntryEsDAO extends EsDAO implements IServiceEntryDAO, IPersi
source
.
put
(
ServiceEntryTable
.
COLUMN_APPLICATION_ID
,
data
.
getDataInteger
(
0
));
source
.
put
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_ID
,
data
.
getDataInteger
(
1
));
source
.
put
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_NAME
,
data
.
getDataString
(
1
));
source
.
put
(
ServiceEntryTable
.
COLUMN_
TIME_BUCKET
,
data
.
getDataLong
(
0
));
source
.
put
(
ServiceEntryTable
.
COLUMN_
REGISTER_TIME
,
data
.
getDataLong
(
0
));
source
.
put
(
ServiceEntryTable
.
COLUMN_NEWEST_TIME
,
data
.
getDataLong
(
1
));
return
getClient
().
prepareIndex
(
ServiceEntryTable
.
TABLE
,
data
.
getDataString
(
0
)).
setSource
(
source
);
}
...
...
@@ -46,7 +47,8 @@ public class ServiceEntryEsDAO extends EsDAO implements IServiceEntryDAO, IPersi
source
.
put
(
ServiceEntryTable
.
COLUMN_APPLICATION_ID
,
data
.
getDataInteger
(
0
));
source
.
put
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_ID
,
data
.
getDataInteger
(
1
));
source
.
put
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_NAME
,
data
.
getDataString
(
1
));
source
.
put
(
ServiceEntryTable
.
COLUMN_TIME_BUCKET
,
data
.
getDataLong
(
0
));
source
.
put
(
ServiceEntryTable
.
COLUMN_REGISTER_TIME
,
data
.
getDataLong
(
0
));
source
.
put
(
ServiceEntryTable
.
COLUMN_NEWEST_TIME
,
data
.
getDataLong
(
1
));
return
getClient
().
prepareUpdate
(
ServiceEntryTable
.
TABLE
,
data
.
getDataString
(
0
)).
setDoc
(
source
);
}
...
...
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/define/ServiceEntryEsTableDefine.java
浏览文件 @
d3db2d7f
...
...
@@ -26,7 +26,10 @@ public class ServiceEntryEsTableDefine extends ElasticSearchTableDefine {
}
@Override
public
void
initialize
()
{
addColumn
(
new
ElasticSearchColumnDefine
(
ServiceEntryTable
.
COLUMN_AGG
,
ElasticSearchColumnDefine
.
Type
.
Keyword
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
ServiceEntryTable
.
COLUMN_TIME_BUCKET
,
ElasticSearchColumnDefine
.
Type
.
Long
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
ServiceEntryTable
.
COLUMN_APPLICATION_ID
,
ElasticSearchColumnDefine
.
Type
.
Integer
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_ID
,
ElasticSearchColumnDefine
.
Type
.
Integer
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_NAME
,
ElasticSearchColumnDefine
.
Type
.
Text
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
ServiceEntryTable
.
COLUMN_REGISTER_TIME
,
ElasticSearchColumnDefine
.
Type
.
Long
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
ServiceEntryTable
.
COLUMN_NEWEST_TIME
,
ElasticSearchColumnDefine
.
Type
.
Long
.
name
()));
}
}
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/define/ServiceEntryH2TableDefine.java
浏览文件 @
d3db2d7f
...
...
@@ -15,7 +15,10 @@ public class ServiceEntryH2TableDefine extends H2TableDefine {
@Override
public
void
initialize
()
{
addColumn
(
new
H2ColumnDefine
(
ServiceEntryTable
.
COLUMN_ID
,
H2ColumnDefine
.
Type
.
Varchar
.
name
()));
addColumn
(
new
H2ColumnDefine
(
ServiceEntryTable
.
COLUMN_AGG
,
H2ColumnDefine
.
Type
.
Varchar
.
name
()));
addColumn
(
new
H2ColumnDefine
(
ServiceEntryTable
.
COLUMN_TIME_BUCKET
,
H2ColumnDefine
.
Type
.
Bigint
.
name
()));
addColumn
(
new
H2ColumnDefine
(
ServiceEntryTable
.
COLUMN_APPLICATION_ID
,
H2ColumnDefine
.
Type
.
Int
.
name
()));
addColumn
(
new
H2ColumnDefine
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_ID
,
H2ColumnDefine
.
Type
.
Int
.
name
()));
addColumn
(
new
H2ColumnDefine
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_NAME
,
H2ColumnDefine
.
Type
.
Varchar
.
name
()));
addColumn
(
new
H2ColumnDefine
(
ServiceEntryTable
.
COLUMN_REGISTER_TIME
,
H2ColumnDefine
.
Type
.
Bigint
.
name
()));
addColumn
(
new
H2ColumnDefine
(
ServiceEntryTable
.
COLUMN_NEWEST_TIME
,
H2ColumnDefine
.
Type
.
Bigint
.
name
()));
}
}
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceSpanListener.java
浏览文件 @
d3db2d7f
...
...
@@ -2,6 +2,7 @@ package org.skywalking.apm.collector.agentstream.worker.serviceref;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.skywalking.apm.collector.agentstream.worker.cache.InstanceCache
;
import
org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener
;
import
org.skywalking.apm.collector.agentstream.worker.segment.ExitSpanListener
;
import
org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener
;
...
...
@@ -14,6 +15,7 @@ import org.skywalking.apm.collector.stream.StreamModuleContext;
import
org.skywalking.apm.collector.stream.StreamModuleGroupDefine
;
import
org.skywalking.apm.collector.stream.worker.WorkerInvokeException
;
import
org.skywalking.apm.collector.stream.worker.WorkerNotFoundException
;
import
org.skywalking.apm.network.proto.SpanLayer
;
import
org.skywalking.apm.network.proto.SpanObject
;
import
org.skywalking.apm.network.proto.TraceSegmentReference
;
import
org.slf4j.Logger
;
...
...
@@ -49,7 +51,7 @@ public class ServiceReferenceSpanListener implements FirstSpanListener, EntrySpa
public
void
parseEntry
(
SpanObject
spanObject
,
int
applicationId
,
int
applicationInstanceId
,
String
segmentId
)
{
serviceId
=
spanObject
.
getOperationNameId
();
if
(
spanObject
.
getOperationNameId
()
==
0
)
{
serviceName
=
spanObject
.
getOperationName
();
serviceName
=
String
.
valueOf
(
applicationId
)
+
Const
.
ID_SPLIT
+
spanObject
.
getOperationName
();
}
else
{
serviceName
=
Const
.
EMPTY_STRING
;
}
...
...
@@ -60,18 +62,21 @@ public class ServiceReferenceSpanListener implements FirstSpanListener, EntrySpa
@Override
public
void
parseExit
(
SpanObject
spanObject
,
int
applicationId
,
int
applicationInstanceId
,
String
segmentId
)
{
ServiceReferenceDataDefine
.
ServiceReference
serviceReference
=
new
ServiceReferenceDataDefine
.
ServiceReference
();
serviceReference
.
setBehindServiceId
(
spanObject
.
getOperationNameId
());
if
(
spanObject
.
getOperationNameId
()
==
0
)
{
serviceReference
.
setBehindServiceName
(
spanObject
.
getOperationName
());
}
else
{
serviceReference
.
setBehindServiceName
(
Const
.
EMPTY_STRING
);
if
(
spanObject
.
getSpanLayer
().
equals
(
SpanLayer
.
Database
))
{
ServiceReferenceDataDefine
.
ServiceReference
serviceReference
=
new
ServiceReferenceDataDefine
.
ServiceReference
();
serviceReference
.
setBehindServiceId
(
spanObject
.
getOperationNameId
());
if
(
spanObject
.
getOperationNameId
()
==
0
)
{
serviceReference
.
setBehindServiceName
(
String
.
valueOf
(
applicationId
)
+
Const
.
ID_SPLIT
+
spanObject
.
getOperationName
());
}
else
{
serviceReference
.
setBehindServiceName
(
Const
.
EMPTY_STRING
);
}
calculateCost
(
serviceReference
,
spanObject
.
getStartTime
(),
spanObject
.
getEndTime
(),
spanObject
.
getIsError
());
exitServiceRefs
.
add
(
serviceReference
);
}
calculateCost
(
serviceReference
,
spanObject
.
getStartTime
(),
spanObject
.
getEndTime
(),
spanObject
.
getIsError
());
exitServiceRefs
.
add
(
serviceReference
);
}
private
void
calculateCost
(
ServiceReferenceDataDefine
.
ServiceReference
serviceReference
,
long
startTime
,
long
endTime
,
private
void
calculateCost
(
ServiceReferenceDataDefine
.
ServiceReference
serviceReference
,
long
startTime
,
long
endTime
,
boolean
isError
)
{
long
cost
=
endTime
-
startTime
;
if
(
cost
<=
1000
&&
!
isError
)
{
...
...
@@ -86,6 +91,7 @@ public class ServiceReferenceSpanListener implements FirstSpanListener, EntrySpa
serviceReference
.
setError
(
1
);
}
serviceReference
.
setSummary
(
1
);
serviceReference
.
setCostSummary
(
cost
);
}
@Override
public
void
build
()
{
...
...
@@ -96,10 +102,10 @@ public class ServiceReferenceSpanListener implements FirstSpanListener, EntrySpa
referenceServices
.
forEach
(
reference
->
{
ServiceReferenceDataDefine
.
ServiceReference
serviceReference
=
new
ServiceReferenceDataDefine
.
ServiceReference
();
int
entryServiceId
=
reference
.
getEntryServiceId
();
String
entryServiceName
=
reference
.
getEntryServiceName
(
);
String
entryServiceName
=
buildServiceName
(
reference
.
getEntryApplicationInstanceId
(),
reference
.
getEntryServiceId
(),
reference
.
getEntryServiceName
()
);
int
frontServiceId
=
reference
.
getParentServiceId
();
String
frontServiceName
=
reference
.
getParentServiceName
(
);
String
frontServiceName
=
buildServiceName
(
reference
.
getParentApplicationInstanceId
(),
reference
.
getParentServiceId
(),
reference
.
getParentServiceName
()
);
int
behindServiceId
=
serviceId
;
String
behindServiceName
=
serviceName
;
...
...
@@ -128,10 +134,10 @@ public class ServiceReferenceSpanListener implements FirstSpanListener, EntrySpa
if
(
referenceServices
.
size
()
>
0
)
{
referenceServices
.
forEach
(
reference
->
{
int
entryServiceId
=
reference
.
getEntryServiceId
();
String
entryServiceName
=
reference
.
getEntryServiceName
(
);
String
entryServiceName
=
buildServiceName
(
reference
.
getEntryApplicationInstanceId
(),
reference
.
getEntryServiceId
(),
reference
.
getEntryServiceName
()
);
int
frontServiceId
=
reference
.
getParentServiceId
();
String
frontServiceName
=
reference
.
getParentServiceName
(
);
String
frontServiceName
=
buildServiceName
(
reference
.
getParentApplicationInstanceId
(),
reference
.
getParentServiceId
(),
reference
.
getParentServiceName
()
);
int
behindServiceId
=
serviceReference
.
getBehindServiceId
();
String
behindServiceName
=
serviceReference
.
getBehindServiceName
();
...
...
@@ -196,4 +202,13 @@ public class ServiceReferenceSpanListener implements FirstSpanListener, EntrySpa
logger
.
error
(
e
.
getMessage
(),
e
);
}
}
private
String
buildServiceName
(
int
instanceId
,
int
serviceId
,
String
serviceName
)
{
if
(
serviceId
==
0
)
{
int
applicationId
=
InstanceCache
.
get
(
instanceId
);
return
String
.
valueOf
(
applicationId
)
+
Const
.
ID_SPLIT
+
serviceName
;
}
else
{
return
Const
.
EMPTY_STRING
;
}
}
}
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/dao/ServiceReferenceEsDAO.java
浏览文件 @
d3db2d7f
...
...
@@ -37,7 +37,8 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
data
.
setDataLong
(
3
,
((
Number
)
source
.
get
(
ServiceReferenceTable
.
COLUMN_S5_GT
)).
longValue
());
data
.
setDataLong
(
4
,
((
Number
)
source
.
get
(
ServiceReferenceTable
.
COLUMN_SUMMARY
)).
longValue
());
data
.
setDataLong
(
5
,
((
Number
)
source
.
get
(
ServiceReferenceTable
.
COLUMN_ERROR
)).
longValue
());
data
.
setDataLong
(
6
,
((
Number
)
source
.
get
(
ServiceReferenceTable
.
COLUMN_TIME_BUCKET
)).
longValue
());
data
.
setDataLong
(
6
,
((
Number
)
source
.
get
(
ServiceReferenceTable
.
COLUMN_COST_SUMMARY
)).
longValue
());
data
.
setDataLong
(
7
,
((
Number
)
source
.
get
(
ServiceReferenceTable
.
COLUMN_TIME_BUCKET
)).
longValue
());
return
data
;
}
else
{
return
null
;
...
...
@@ -58,7 +59,8 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
source
.
put
(
ServiceReferenceTable
.
COLUMN_S5_GT
,
data
.
getDataLong
(
3
));
source
.
put
(
ServiceReferenceTable
.
COLUMN_SUMMARY
,
data
.
getDataLong
(
4
));
source
.
put
(
ServiceReferenceTable
.
COLUMN_ERROR
,
data
.
getDataLong
(
5
));
source
.
put
(
ServiceReferenceTable
.
COLUMN_TIME_BUCKET
,
data
.
getDataLong
(
6
));
source
.
put
(
ServiceReferenceTable
.
COLUMN_COST_SUMMARY
,
data
.
getDataLong
(
6
));
source
.
put
(
ServiceReferenceTable
.
COLUMN_TIME_BUCKET
,
data
.
getDataLong
(
7
));
return
getClient
().
prepareIndex
(
ServiceReferenceTable
.
TABLE
,
data
.
getDataString
(
0
)).
setSource
(
source
);
}
...
...
@@ -77,7 +79,8 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
source
.
put
(
ServiceReferenceTable
.
COLUMN_S5_GT
,
data
.
getDataLong
(
3
));
source
.
put
(
ServiceReferenceTable
.
COLUMN_SUMMARY
,
data
.
getDataLong
(
4
));
source
.
put
(
ServiceReferenceTable
.
COLUMN_ERROR
,
data
.
getDataLong
(
5
));
source
.
put
(
ServiceReferenceTable
.
COLUMN_TIME_BUCKET
,
data
.
getDataLong
(
6
));
source
.
put
(
ServiceReferenceTable
.
COLUMN_COST_SUMMARY
,
data
.
getDataLong
(
6
));
source
.
put
(
ServiceReferenceTable
.
COLUMN_TIME_BUCKET
,
data
.
getDataLong
(
7
));
return
getClient
().
prepareUpdate
(
ServiceReferenceTable
.
TABLE
,
data
.
getDataString
(
0
)).
setDoc
(
source
);
}
...
...
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/define/ServiceReferenceEsTableDefine.java
浏览文件 @
d3db2d7f
...
...
@@ -39,6 +39,7 @@ public class ServiceReferenceEsTableDefine extends ElasticSearchTableDefine {
addColumn
(
new
ElasticSearchColumnDefine
(
ServiceReferenceTable
.
COLUMN_S5_GT
,
ElasticSearchColumnDefine
.
Type
.
Long
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
ServiceReferenceTable
.
COLUMN_SUMMARY
,
ElasticSearchColumnDefine
.
Type
.
Long
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
ServiceReferenceTable
.
COLUMN_ERROR
,
ElasticSearchColumnDefine
.
Type
.
Long
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
ServiceReferenceTable
.
COLUMN_COST_SUMMARY
,
ElasticSearchColumnDefine
.
Type
.
Long
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
ServiceReferenceTable
.
COLUMN_TIME_BUCKET
,
ElasticSearchColumnDefine
.
Type
.
Long
.
name
()));
}
}
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/define/ServiceReferenceH2TableDefine.java
浏览文件 @
d3db2d7f
...
...
@@ -27,6 +27,7 @@ public class ServiceReferenceH2TableDefine extends H2TableDefine {
addColumn
(
new
H2ColumnDefine
(
ServiceReferenceTable
.
COLUMN_S5_GT
,
H2ColumnDefine
.
Type
.
Bigint
.
name
()));
addColumn
(
new
H2ColumnDefine
(
ServiceReferenceTable
.
COLUMN_SUMMARY
,
H2ColumnDefine
.
Type
.
Bigint
.
name
()));
addColumn
(
new
H2ColumnDefine
(
ServiceReferenceTable
.
COLUMN_ERROR
,
H2ColumnDefine
.
Type
.
Bigint
.
name
()));
addColumn
(
new
H2ColumnDefine
(
ServiceReferenceTable
.
COLUMN_COST_SUMMARY
,
H2ColumnDefine
.
Type
.
Bigint
.
name
()));
addColumn
(
new
H2ColumnDefine
(
ServiceReferenceTable
.
COLUMN_TIME_BUCKET
,
H2ColumnDefine
.
Type
.
Bigint
.
name
()));
}
}
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/SegmentPost.java
浏览文件 @
d3db2d7f
...
...
@@ -7,10 +7,13 @@ import java.io.IOException;
import
org.skywalking.apm.collector.agentstream.HttpClientTools
;
import
org.skywalking.apm.collector.agentstream.worker.register.application.dao.ApplicationEsDAO
;
import
org.skywalking.apm.collector.agentstream.worker.register.instance.dao.InstanceEsDAO
;
import
org.skywalking.apm.collector.agentstream.worker.register.servicename.dao.ServiceNameEsDAO
;
import
org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient
;
import
org.skywalking.apm.collector.core.CollectorException
;
import
org.skywalking.apm.collector.core.util.TimeBucketUtils
;
import
org.skywalking.apm.collector.storage.define.register.ApplicationDataDefine
;
import
org.skywalking.apm.collector.storage.define.register.InstanceDataDefine
;
import
org.skywalking.apm.collector.storage.define.register.ServiceNameDataDefine
;
/**
* @author pengys5
...
...
@@ -20,13 +23,14 @@ public class SegmentPost {
public
static
void
main
(
String
[]
args
)
throws
IOException
,
InterruptedException
,
CollectorException
{
ElasticSearchClient
client
=
new
ElasticSearchClient
(
"CollectorDBCluster"
,
true
,
"127.0.0.1:9300"
);
client
.
initialize
();
long
now
=
TimeBucketUtils
.
INSTANCE
.
getSecondTimeBucket
(
System
.
currentTimeMillis
());
InstanceEsDAO
instanceEsDAO
=
new
InstanceEsDAO
();
instanceEsDAO
.
setClient
(
client
);
InstanceDataDefine
.
Instance
consumerInstance
=
new
InstanceDataDefine
.
Instance
(
"2"
,
2
,
"dubbox-consumer"
,
1501858094526L
,
2
,
1501858094526L
,
""
);
InstanceDataDefine
.
Instance
consumerInstance
=
new
InstanceDataDefine
.
Instance
(
"2"
,
2
,
"dubbox-consumer"
,
now
,
2
,
now
,
""
);
instanceEsDAO
.
save
(
consumerInstance
);
InstanceDataDefine
.
Instance
providerInstance
=
new
InstanceDataDefine
.
Instance
(
"3"
,
3
,
"dubbox-provider"
,
1501858094526L
,
3
,
1501858094526L
,
""
);
InstanceDataDefine
.
Instance
providerInstance
=
new
InstanceDataDefine
.
Instance
(
"3"
,
3
,
"dubbox-provider"
,
now
,
3
,
now
,
""
);
instanceEsDAO
.
save
(
providerInstance
);
ApplicationEsDAO
applicationEsDAO
=
new
ApplicationEsDAO
();
...
...
@@ -39,6 +43,18 @@ public class SegmentPost {
ApplicationDataDefine
.
Application
providerApplication
=
new
ApplicationDataDefine
.
Application
(
"3"
,
"dubbox-provider"
,
3
);
applicationEsDAO
.
save
(
providerApplication
);
ServiceNameEsDAO
serviceNameEsDAO
=
new
ServiceNameEsDAO
();
serviceNameEsDAO
.
setClient
(
client
);
ServiceNameDataDefine
.
ServiceName
serviceName_1
=
new
ServiceNameDataDefine
.
ServiceName
(
"1"
,
""
,
0
,
1
);
serviceNameEsDAO
.
save
(
serviceName_1
);
ServiceNameDataDefine
.
ServiceName
serviceName_2
=
new
ServiceNameDataDefine
.
ServiceName
(
"2"
,
"org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"
,
2
,
2
);
serviceNameEsDAO
.
save
(
serviceName_2
);
ServiceNameDataDefine
.
ServiceName
serviceName_3
=
new
ServiceNameDataDefine
.
ServiceName
(
"3"
,
"/dubbox-case/case/dubbox-rest"
,
2
,
3
);
serviceNameEsDAO
.
save
(
serviceName_3
);
ServiceNameDataDefine
.
ServiceName
serviceName_4
=
new
ServiceNameDataDefine
.
ServiceName
(
"4"
,
"org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"
,
3
,
4
);
serviceNameEsDAO
.
save
(
serviceName_4
);
while
(
true
)
{
JsonElement
consumer
=
JsonFileReader
.
INSTANCE
.
read
(
"json/segment/normal/dubbox-consumer.json"
);
modifyTime
(
consumer
);
...
...
apm-collector/apm-collector-agentstream/src/test/resources/json/segment/normal/dubbox-provider.json
浏览文件 @
d3db2d7f
...
...
@@ -25,7 +25,7 @@
"ai"
:
2
,
"si"
:
1
,
"vi"
:
0
,
"vn"
:
"
org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()
"
,
"vn"
:
"
/dubbox-case/case/dubbox-rest
"
,
"ni"
:
0
,
"nn"
:
"172.25.0.4:20880"
,
"ea"
:
2
,
...
...
@@ -38,7 +38,7 @@
{
"si"
:
0
,
"tv"
:
0
,
"lv"
:
1
,
"lv"
:
2
,
"ps"
:
-1
,
"st"
:
1501858094883
,
"et"
:
1501858096950
,
...
...
apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/ColumnNameUtils.java
0 → 100644
浏览文件 @
d3db2d7f
package
org.skywalking.apm.collector.core.util
;
/**
* @author pengys5
*/
public
enum
ColumnNameUtils
{
INSTANCE
;
public
String
rename
(
String
columnName
)
{
StringBuilder
renamedColumnName
=
new
StringBuilder
();
char
[]
chars
=
columnName
.
toLowerCase
().
toCharArray
();
boolean
findUnderline
=
false
;
for
(
char
character
:
chars
)
{
if
(
character
==
'_'
)
{
findUnderline
=
true
;
}
else
if
(
findUnderline
)
{
renamedColumnName
.
append
(
String
.
valueOf
(
character
).
toUpperCase
());
findUnderline
=
false
;
}
else
{
renamedColumnName
.
append
(
character
);
}
}
return
renamedColumnName
.
toString
();
}
}
apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/TimeBucketUtils.java
浏览文件 @
d3db2d7f
...
...
@@ -3,6 +3,7 @@ package org.skywalking.apm.collector.core.util;
import
java.text.SimpleDateFormat
;
import
java.util.Calendar
;
import
java.util.TimeZone
;
import
org.skywalking.apm.collector.core.framework.UnexpectedException
;
/**
* @author pengys5
...
...
@@ -43,6 +44,29 @@ public enum TimeBucketUtils {
return
Long
.
valueOf
(
timeStr
);
}
public
long
changeTimeBucket2TimeStamp
(
String
timeBucketType
,
long
timeBucket
)
{
if
(
TimeBucketType
.
SECOND
.
name
().
toLowerCase
().
equals
(
timeBucketType
.
toLowerCase
()))
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
set
(
Calendar
.
YEAR
,
Integer
.
valueOf
(
String
.
valueOf
(
timeBucket
).
substring
(
0
,
4
)));
calendar
.
set
(
Calendar
.
MONTH
,
Integer
.
valueOf
(
String
.
valueOf
(
timeBucket
).
substring
(
4
,
6
))
-
1
);
calendar
.
set
(
Calendar
.
DAY_OF_MONTH
,
Integer
.
valueOf
(
String
.
valueOf
(
timeBucket
).
substring
(
6
,
8
)));
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
Integer
.
valueOf
(
String
.
valueOf
(
timeBucket
).
substring
(
8
,
10
)));
calendar
.
set
(
Calendar
.
MINUTE
,
Integer
.
valueOf
(
String
.
valueOf
(
timeBucket
).
substring
(
10
,
12
)));
calendar
.
set
(
Calendar
.
SECOND
,
Integer
.
valueOf
(
String
.
valueOf
(
timeBucket
).
substring
(
12
,
14
)));
return
calendar
.
getTimeInMillis
();
}
else
if
(
TimeBucketType
.
MINUTE
.
name
().
toLowerCase
().
equals
(
timeBucketType
.
toLowerCase
()))
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
set
(
Calendar
.
YEAR
,
Integer
.
valueOf
(
String
.
valueOf
(
timeBucket
).
substring
(
0
,
4
)));
calendar
.
set
(
Calendar
.
MONTH
,
Integer
.
valueOf
(
String
.
valueOf
(
timeBucket
).
substring
(
4
,
6
))
-
1
);
calendar
.
set
(
Calendar
.
DAY_OF_MONTH
,
Integer
.
valueOf
(
String
.
valueOf
(
timeBucket
).
substring
(
6
,
8
)));
calendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
Integer
.
valueOf
(
String
.
valueOf
(
timeBucket
).
substring
(
8
,
10
)));
calendar
.
set
(
Calendar
.
MINUTE
,
Integer
.
valueOf
(
String
.
valueOf
(
timeBucket
).
substring
(
10
,
12
)));
return
calendar
.
getTimeInMillis
();
}
else
{
throw
new
UnexpectedException
(
"time bucket type must be second or minute"
);
}
}
public
long
getFiveSecondTimeBucket
(
long
secondTimeBucket
)
{
long
mantissa
=
secondTimeBucket
%
10
;
if
(
mantissa
<
5
)
{
...
...
@@ -63,4 +87,8 @@ public enum TimeBucketUtils {
return
timeBucket
-
800
;
}
}
public
enum
TimeBucketType
{
SECOND
,
MINUTE
,
HOUR
,
DAY
}
}
apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/utils/ColumnNameUtilsTestCase.java
0 → 100644
浏览文件 @
d3db2d7f
package
org.skywalking.apm.collector.core.utils
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.skywalking.apm.collector.core.util.ColumnNameUtils
;
/**
* @author pengys5
*/
public
class
ColumnNameUtilsTestCase
{
@Test
public
void
testRename
()
{
String
columnName
=
ColumnNameUtils
.
INSTANCE
.
rename
(
"aaa_bbb_ccc"
);
Assert
.
assertEquals
(
"aaaBbbCcc"
,
columnName
);
}
}
apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/utils/TimeBucketUtilsTestCase.java
浏览文件 @
d3db2d7f
...
...
@@ -20,4 +20,11 @@ public class TimeBucketUtilsTestCase {
fiveSecondTimeBucket
=
TimeBucketUtils
.
INSTANCE
.
getFiveSecondTimeBucket
(
20170804224815L
);
Assert
.
assertEquals
(
20170804224815L
,
fiveSecondTimeBucket
);
}
@Test
public
void
testChangeTimeBucket2TimeStamp
()
{
long
timeStamp
=
TimeBucketUtils
.
INSTANCE
.
changeTimeBucket2TimeStamp
(
TimeBucketUtils
.
TimeBucketType
.
MINUTE
.
name
(),
201708120810L
);
long
minute
=
TimeBucketUtils
.
INSTANCE
.
getMinuteTimeBucket
(
timeStamp
);
Assert
.
assertEquals
(
201708120810L
,
minute
);
}
}
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/service/ServiceEntryDataDefine.java
浏览文件 @
d3db2d7f
...
...
@@ -15,15 +15,16 @@ import org.skywalking.apm.collector.storage.define.DataDefine;
public
class
ServiceEntryDataDefine
extends
DataDefine
{
@Override
protected
int
initialCapacity
()
{
return
5
;
return
6
;
}
@Override
protected
void
attributeDefine
()
{
addAttribute
(
0
,
new
Attribute
(
ServiceEntryTable
.
COLUMN_ID
,
AttributeType
.
STRING
,
new
NonOperation
()));
addAttribute
(
1
,
new
Attribute
(
ServiceEntryTable
.
COLUMN_APPLICATION_ID
,
AttributeType
.
INTEGER
,
new
NonOperation
()));
addAttribute
(
2
,
new
Attribute
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_ID
,
AttributeType
.
INTEGER
,
new
CoverOperation
()));
addAttribute
(
3
,
new
Attribute
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_NAME
,
AttributeType
.
STRING
,
new
CoverOperation
()));
addAttribute
(
4
,
new
Attribute
(
ServiceEntryTable
.
COLUMN_TIME_BUCKET
,
AttributeType
.
LONG
,
new
CoverOperation
()));
addAttribute
(
2
,
new
Attribute
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_ID
,
AttributeType
.
INTEGER
,
new
NonOperation
()));
addAttribute
(
3
,
new
Attribute
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_NAME
,
AttributeType
.
STRING
,
new
NonOperation
()));
addAttribute
(
4
,
new
Attribute
(
ServiceEntryTable
.
COLUMN_REGISTER_TIME
,
AttributeType
.
LONG
,
new
NonOperation
()));
addAttribute
(
5
,
new
Attribute
(
ServiceEntryTable
.
COLUMN_NEWEST_TIME
,
AttributeType
.
LONG
,
new
CoverOperation
()));
}
@Override
public
Object
deserialize
(
RemoteData
remoteData
)
{
...
...
@@ -39,15 +40,18 @@ public class ServiceEntryDataDefine extends DataDefine {
private
int
applicationId
;
private
int
entryServiceId
;
private
String
entryServiceName
;
private
long
timeBucket
;
private
long
registerTime
;
private
long
newestTime
;
public
ServiceEntry
(
String
id
,
int
applicationId
,
int
entryServiceId
,
String
entryServiceName
,
long
timeBucket
)
{
long
registerTime
,
long
newestTime
)
{
this
.
id
=
id
;
this
.
applicationId
=
applicationId
;
this
.
entryServiceId
=
entryServiceId
;
this
.
entryServiceName
=
entryServiceName
;
this
.
timeBucket
=
timeBucket
;
this
.
registerTime
=
registerTime
;
this
.
newestTime
=
newestTime
;
}
public
ServiceEntry
()
{
...
...
@@ -60,7 +64,8 @@ public class ServiceEntryDataDefine extends DataDefine {
data
.
setDataInteger
(
0
,
this
.
applicationId
);
data
.
setDataInteger
(
1
,
this
.
entryServiceId
);
data
.
setDataString
(
1
,
this
.
entryServiceName
);
data
.
setDataLong
(
0
,
this
.
timeBucket
);
data
.
setDataLong
(
0
,
this
.
registerTime
);
data
.
setDataLong
(
1
,
this
.
newestTime
);
return
data
;
}
...
...
@@ -69,7 +74,8 @@ public class ServiceEntryDataDefine extends DataDefine {
this
.
applicationId
=
data
.
getDataInteger
(
0
);
this
.
entryServiceId
=
data
.
getDataInteger
(
1
);
this
.
entryServiceName
=
data
.
getDataString
(
1
);
this
.
timeBucket
=
data
.
getDataLong
(
0
);
this
.
registerTime
=
data
.
getDataLong
(
0
);
this
.
newestTime
=
data
.
getDataLong
(
1
);
return
this
;
}
...
...
@@ -97,14 +103,6 @@ public class ServiceEntryDataDefine extends DataDefine {
this
.
entryServiceName
=
entryServiceName
;
}
public
long
getTimeBucket
()
{
return
timeBucket
;
}
public
void
setTimeBucket
(
long
timeBucket
)
{
this
.
timeBucket
=
timeBucket
;
}
public
int
getApplicationId
()
{
return
applicationId
;
}
...
...
@@ -112,5 +110,21 @@ public class ServiceEntryDataDefine extends DataDefine {
public
void
setApplicationId
(
int
applicationId
)
{
this
.
applicationId
=
applicationId
;
}
public
long
getRegisterTime
()
{
return
registerTime
;
}
public
void
setRegisterTime
(
long
registerTime
)
{
this
.
registerTime
=
registerTime
;
}
public
long
getNewestTime
()
{
return
newestTime
;
}
public
void
setNewestTime
(
long
newestTime
)
{
this
.
newestTime
=
newestTime
;
}
}
}
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/service/ServiceEntryTable.java
浏览文件 @
d3db2d7f
...
...
@@ -10,4 +10,6 @@ public class ServiceEntryTable extends CommonTable {
public
static
final
String
COLUMN_APPLICATION_ID
=
"application_id"
;
public
static
final
String
COLUMN_ENTRY_SERVICE_ID
=
"entry_service_id"
;
public
static
final
String
COLUMN_ENTRY_SERVICE_NAME
=
"entry_service_name"
;
public
static
final
String
COLUMN_REGISTER_TIME
=
"register_time"
;
public
static
final
String
COLUMN_NEWEST_TIME
=
"newest_time"
;
}
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/serviceref/ServiceReferenceDataDefine.java
浏览文件 @
d3db2d7f
...
...
@@ -15,7 +15,7 @@ import org.skywalking.apm.collector.storage.define.DataDefine;
public
class
ServiceReferenceDataDefine
extends
DataDefine
{
@Override
protected
int
initialCapacity
()
{
return
1
4
;
return
1
5
;
}
@Override
protected
void
attributeDefine
()
{
...
...
@@ -32,7 +32,8 @@ public class ServiceReferenceDataDefine extends DataDefine {
addAttribute
(
10
,
new
Attribute
(
ServiceReferenceTable
.
COLUMN_S5_GT
,
AttributeType
.
LONG
,
new
AddOperation
()));
addAttribute
(
11
,
new
Attribute
(
ServiceReferenceTable
.
COLUMN_SUMMARY
,
AttributeType
.
LONG
,
new
AddOperation
()));
addAttribute
(
12
,
new
Attribute
(
ServiceReferenceTable
.
COLUMN_ERROR
,
AttributeType
.
LONG
,
new
AddOperation
()));
addAttribute
(
13
,
new
Attribute
(
ServiceReferenceTable
.
COLUMN_TIME_BUCKET
,
AttributeType
.
LONG
,
new
NonOperation
()));
addAttribute
(
13
,
new
Attribute
(
ServiceReferenceTable
.
COLUMN_COST_SUMMARY
,
AttributeType
.
LONG
,
new
AddOperation
()));
addAttribute
(
14
,
new
Attribute
(
ServiceReferenceTable
.
COLUMN_TIME_BUCKET
,
AttributeType
.
LONG
,
new
NonOperation
()));
}
@Override
public
Object
deserialize
(
RemoteData
remoteData
)
{
...
...
@@ -49,9 +50,10 @@ public class ServiceReferenceDataDefine extends DataDefine {
long
s5Gt
=
remoteData
.
getDataLongs
(
3
);
long
summary
=
remoteData
.
getDataLongs
(
4
);
long
error
=
remoteData
.
getDataLongs
(
5
);
long
timeBucket
=
remoteData
.
getDataLongs
(
6
);
long
costSummary
=
remoteData
.
getDataLongs
(
6
);
long
timeBucket
=
remoteData
.
getDataLongs
(
7
);
return
new
ServiceReference
(
id
,
entryServiceId
,
entryServiceName
,
frontServiceId
,
frontServiceName
,
behindServiceId
,
behindServiceName
,
s1Lte
,
s3Lte
,
s5Lte
,
s5Gt
,
summary
,
error
,
timeBucket
);
behindServiceId
,
behindServiceName
,
s1Lte
,
s3Lte
,
s5Lte
,
s5Gt
,
summary
,
error
,
costSummary
,
timeBucket
);
}
@Override
public
RemoteData
serialize
(
Object
object
)
{
...
...
@@ -70,6 +72,7 @@ public class ServiceReferenceDataDefine extends DataDefine {
builder
.
addDataLongs
(
serviceReference
.
getS5Gt
());
builder
.
addDataLongs
(
serviceReference
.
getSummary
());
builder
.
addDataLongs
(
serviceReference
.
getError
());
builder
.
addDataLongs
(
serviceReference
.
getCostSummary
());
builder
.
addDataLongs
(
serviceReference
.
getTimeBucket
());
return
builder
.
build
();
}
...
...
@@ -88,11 +91,12 @@ public class ServiceReferenceDataDefine extends DataDefine {
private
long
s5Gt
;
private
long
summary
;
private
long
error
;
private
long
costSummary
;
private
long
timeBucket
;
public
ServiceReference
(
String
id
,
int
entryServiceId
,
String
entryServiceName
,
int
frontServiceId
,
String
frontServiceName
,
int
behindServiceId
,
String
behindServiceName
,
long
s1Lte
,
long
s3Lte
,
long
s5Lte
,
long
s5Gt
,
long
summary
,
long
error
,
long
timeBucket
)
{
long
s5Gt
,
long
summary
,
long
error
,
long
costSummary
,
long
timeBucket
)
{
this
.
id
=
id
;
this
.
entryServiceId
=
entryServiceId
;
this
.
entryServiceName
=
entryServiceName
;
...
...
@@ -106,6 +110,7 @@ public class ServiceReferenceDataDefine extends DataDefine {
this
.
s5Gt
=
s5Gt
;
this
.
summary
=
summary
;
this
.
error
=
error
;
this
.
costSummary
=
costSummary
;
this
.
timeBucket
=
timeBucket
;
}
...
...
@@ -128,7 +133,8 @@ public class ServiceReferenceDataDefine extends DataDefine {
data
.
setDataLong
(
3
,
this
.
s5Gt
);
data
.
setDataLong
(
4
,
this
.
summary
);
data
.
setDataLong
(
5
,
this
.
error
);
data
.
setDataLong
(
6
,
this
.
timeBucket
);
data
.
setDataLong
(
6
,
this
.
costSummary
);
data
.
setDataLong
(
7
,
this
.
timeBucket
);
return
data
;
}
...
...
@@ -146,7 +152,8 @@ public class ServiceReferenceDataDefine extends DataDefine {
this
.
s5Gt
=
data
.
getDataLong
(
3
);
this
.
summary
=
data
.
getDataLong
(
4
);
this
.
error
=
data
.
getDataLong
(
5
);
this
.
timeBucket
=
data
.
getDataLong
(
6
);
this
.
costSummary
=
data
.
getDataLong
(
6
);
this
.
timeBucket
=
data
.
getDataLong
(
7
);
return
this
;
}
...
...
@@ -254,6 +261,14 @@ public class ServiceReferenceDataDefine extends DataDefine {
this
.
error
=
error
;
}
public
long
getCostSummary
()
{
return
costSummary
;
}
public
void
setCostSummary
(
long
costSummary
)
{
this
.
costSummary
=
costSummary
;
}
public
long
getTimeBucket
()
{
return
timeBucket
;
}
...
...
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/serviceref/ServiceReferenceTable.java
浏览文件 @
d3db2d7f
...
...
@@ -18,5 +18,6 @@ public class ServiceReferenceTable extends CommonTable {
public
static
final
String
COLUMN_S5_LTE
=
"s5_lte"
;
public
static
final
String
COLUMN_S5_GT
=
"s5_gt"
;
public
static
final
String
COLUMN_SUMMARY
=
"summary"
;
public
static
final
String
COLUMN_COST_SUMMARY
=
"cost_summary"
;
public
static
final
String
COLUMN_ERROR
=
"error"
;
}
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/define/ElasticSearchColumnDefine.java
浏览文件 @
d3db2d7f
...
...
@@ -11,6 +11,6 @@ public class ElasticSearchColumnDefine extends ColumnDefine {
}
public
enum
Type
{
Binary
,
Boolean
,
Keyword
,
Long
,
Integer
,
Double
Binary
,
Boolean
,
Keyword
,
Long
,
Integer
,
Double
,
Text
}
}
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/define/ElasticSearchStorageInstaller.java
浏览文件 @
d3db2d7f
...
...
@@ -63,10 +63,19 @@ public class ElasticSearchStorageInstaller extends StorageInstaller {
for
(
ColumnDefine
columnDefine
:
tableDefine
.
getColumnDefines
())
{
ElasticSearchColumnDefine
elasticSearchColumnDefine
=
(
ElasticSearchColumnDefine
)
columnDefine
;
mappingBuilder
.
startObject
(
elasticSearchColumnDefine
.
getName
())
.
field
(
"type"
,
elasticSearchColumnDefine
.
getType
().
toLowerCase
())
.
endObject
();
if
(
ElasticSearchColumnDefine
.
Type
.
Text
.
name
().
toLowerCase
().
equals
(
elasticSearchColumnDefine
.
getType
().
toLowerCase
()))
{
mappingBuilder
.
startObject
(
elasticSearchColumnDefine
.
getName
())
.
field
(
"type"
,
elasticSearchColumnDefine
.
getType
().
toLowerCase
())
.
field
(
"fielddata"
,
true
)
.
endObject
();
}
else
{
mappingBuilder
.
startObject
(
elasticSearchColumnDefine
.
getName
())
.
field
(
"type"
,
elasticSearchColumnDefine
.
getType
().
toLowerCase
())
.
endObject
();
}
}
mappingBuilder
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/cache/ServiceIdCache.java
0 → 100644
浏览文件 @
d3db2d7f
package
org.skywalking.apm.collector.ui.cache
;
import
com.google.common.cache.Cache
;
import
com.google.common.cache.CacheBuilder
;
import
org.skywalking.apm.collector.core.util.Const
;
import
org.skywalking.apm.collector.storage.dao.DAOContainer
;
import
org.skywalking.apm.collector.ui.dao.IServiceNameDAO
;
/**
* @author pengys5
*/
public
class
ServiceIdCache
{
//TODO size configuration
private
static
Cache
<
String
,
Integer
>
CACHE
=
CacheBuilder
.
newBuilder
().
maximumSize
(
1000
).
build
();
public
static
int
get
(
int
applicationId
,
String
serviceName
)
{
try
{
return
CACHE
.
get
(
applicationId
+
Const
.
ID_SPLIT
+
serviceName
,
()
->
{
IServiceNameDAO
dao
=
(
IServiceNameDAO
)
DAOContainer
.
INSTANCE
.
get
(
IServiceNameDAO
.
class
.
getName
());
return
dao
.
getServiceId
(
applicationId
,
serviceName
);
});
}
catch
(
Throwable
e
)
{
return
0
;
}
}
public
static
int
getForUI
(
int
applicationId
,
String
serviceName
)
{
int
serviceId
=
get
(
applicationId
,
serviceName
);
if
(
serviceId
==
0
)
{
IServiceNameDAO
dao
=
(
IServiceNameDAO
)
DAOContainer
.
INSTANCE
.
get
(
IServiceNameDAO
.
class
.
getName
());
serviceId
=
dao
.
getServiceId
(
applicationId
,
serviceName
);
CACHE
.
put
(
applicationId
+
Const
.
ID_SPLIT
+
serviceName
,
serviceId
);
}
return
serviceId
;
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/cache/ServiceNameCache.java
浏览文件 @
d3db2d7f
...
...
@@ -24,4 +24,14 @@ public class ServiceNameCache {
return
Const
.
EXCEPTION
;
}
}
public
static
String
getForUI
(
int
serviceId
)
{
String
serviceName
=
get
(
serviceId
);
if
(
serviceName
.
equals
(
"Unknown"
))
{
IServiceNameDAO
dao
=
(
IServiceNameDAO
)
DAOContainer
.
INSTANCE
.
get
(
IServiceNameDAO
.
class
.
getName
());
serviceName
=
dao
.
getServiceName
(
serviceId
);
CACHE
.
put
(
serviceId
,
serviceName
);
}
return
serviceName
;
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IInstanceDAO.java
浏览文件 @
d3db2d7f
package
org.skywalking.apm.collector.ui.dao
;
import
java.util.List
;
import
com.google.gson.JsonArray
;
import
org.skywalking.apm.collector.storage.define.register.InstanceDataDefine
;
/**
...
...
@@ -11,7 +11,7 @@ public interface IInstanceDAO {
Long
instanceLastHeartBeatTime
(
long
applicationInstanceId
);
List
<
Application
>
getApplications
(
long
t
ime
);
JsonArray
getApplications
(
long
startTime
,
long
endT
ime
);
InstanceDataDefine
.
Instance
getInstance
(
int
instanceId
);
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceEntryDAO.java
浏览文件 @
d3db2d7f
package
org.skywalking.apm.collector.ui.dao
;
import
com.google.gson.Json
Array
;
import
com.google.gson.Json
Object
;
/**
* @author pengys5
*/
public
interface
IServiceEntryDAO
{
Json
Array
load
(
int
applicationId
,
long
startTime
,
long
endTim
e
);
Json
Object
load
(
int
applicationId
,
String
entryServiceName
,
long
startTime
,
long
endTime
,
int
from
,
int
siz
e
);
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceNameDAO.java
浏览文件 @
d3db2d7f
...
...
@@ -5,4 +5,6 @@ package org.skywalking.apm.collector.ui.dao;
*/
public
interface
IServiceNameDAO
{
String
getServiceName
(
int
serviceId
);
int
getServiceId
(
int
applicationId
,
String
serviceName
);
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceEsDAO.java
浏览文件 @
d3db2d7f
package
org.skywalking.apm.collector.ui.dao
;
import
java.util.LinkedList
;
import
java.util.Lis
t
;
import
com.google.gson.JsonArray
;
import
com.google.gson.JsonObjec
t
;
import
org.elasticsearch.action.get.GetRequestBuilder
;
import
org.elasticsearch.action.get.GetResponse
;
import
org.elasticsearch.action.search.SearchRequestBuilder
;
...
...
@@ -15,11 +15,13 @@ import org.elasticsearch.index.query.RangeQueryBuilder;
import
org.elasticsearch.search.SearchHit
;
import
org.elasticsearch.search.aggregations.AggregationBuilders
;
import
org.elasticsearch.search.aggregations.bucket.terms.Terms
;
import
org.elasticsearch.search.aggregations.metrics.valuecount.ValueCount
;
import
org.elasticsearch.search.sort.SortBuilders
;
import
org.elasticsearch.search.sort.SortMode
;
import
org.skywalking.apm.collector.storage.define.register.InstanceDataDefine
;
import
org.skywalking.apm.collector.storage.define.register.InstanceTable
;
import
org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO
;
import
org.skywalking.apm.collector.ui.cache.ApplicationCache
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -67,32 +69,31 @@ public class InstanceEsDAO extends EsDAO implements IInstanceDAO {
return
heartBeatTime
;
}
@Override
public
List
<
Application
>
getApplications
(
long
t
ime
)
{
logger
.
debug
(
"application list get,
time: {}"
,
t
ime
);
@Override
public
JsonArray
getApplications
(
long
startTime
,
long
endT
ime
)
{
logger
.
debug
(
"application list get,
start time: {}, end time: {}"
,
startTime
,
endT
ime
);
SearchRequestBuilder
searchRequestBuilder
=
getClient
().
prepareSearch
(
InstanceTable
.
TABLE
);
searchRequestBuilder
.
setTypes
(
InstanceTable
.
TABLE_TYPE
);
searchRequestBuilder
.
setSearchType
(
SearchType
.
DFS_QUERY_THEN_FETCH
);
BoolQueryBuilder
boolQueryBuilder
=
QueryBuilders
.
boolQuery
();
RangeQueryBuilder
heartBeatRangeQueryBuilder
=
QueryBuilders
.
rangeQuery
(
InstanceTable
.
COLUMN_HEARTBEAT_TIME
).
gte
(
time
);
RangeQueryBuilder
registerRangeQueryBuilder
=
QueryBuilders
.
rangeQuery
(
InstanceTable
.
COLUMN_REGISTER_TIME
).
lte
(
time
);
boolQueryBuilder
.
must
().
add
(
registerRangeQueryBuilder
);
boolQueryBuilder
.
must
().
add
(
heartBeatRangeQueryBuilder
);
searchRequestBuilder
.
setQuery
(
boolQueryBuilder
);
searchRequestBuilder
.
setQuery
(
QueryBuilders
.
rangeQuery
(
InstanceTable
.
COLUMN_HEARTBEAT_TIME
).
gte
(
startTime
));
searchRequestBuilder
.
setSize
(
0
);
searchRequestBuilder
.
addAggregation
(
AggregationBuilders
.
terms
(
InstanceTable
.
COLUMN_APPLICATION_ID
).
field
(
InstanceTable
.
COLUMN_APPLICATION_ID
).
size
(
100
));
searchRequestBuilder
.
addAggregation
(
AggregationBuilders
.
terms
(
InstanceTable
.
COLUMN_APPLICATION_ID
).
field
(
InstanceTable
.
COLUMN_APPLICATION_ID
).
size
(
100
)
.
subAggregation
(
AggregationBuilders
.
count
(
InstanceTable
.
COLUMN_INSTANCE_ID
).
field
(
InstanceTable
.
COLUMN_INSTANCE_ID
)));
SearchResponse
searchResponse
=
searchRequestBuilder
.
execute
().
actionGet
();
Terms
genders
=
searchResponse
.
getAggregations
().
get
(
InstanceTable
.
COLUMN_APPLICATION_ID
);
List
<
Application
>
applications
=
new
LinkedList
<>
();
for
(
Terms
.
Bucket
entry
:
genders
.
getBuckets
())
{
Integer
applicationId
=
entry
.
getKeyAsNumber
().
intValue
();
JsonArray
applications
=
new
JsonArray
();
for
(
Terms
.
Bucket
applicationsBucket
:
genders
.
getBuckets
())
{
Integer
applicationId
=
applicationsBucket
.
getKeyAsNumber
().
intValue
();
logger
.
debug
(
"applicationId: {}"
,
applicationId
);
long
instanceCount
=
entry
.
getDocCount
();
applications
.
add
(
new
Application
(
applicationId
,
instanceCount
));
ValueCount
instanceCount
=
applicationsBucket
.
getAggregations
().
get
(
InstanceTable
.
COLUMN_INSTANCE_ID
);
JsonObject
application
=
new
JsonObject
();
application
.
addProperty
(
"applicationId"
,
applicationId
);
application
.
addProperty
(
"applicationCode"
,
ApplicationCache
.
getForUI
(
applicationId
));
application
.
addProperty
(
"instanceCount"
,
instanceCount
.
getValue
());
applications
.
add
(
application
);
}
return
applications
;
}
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceH2DAO.java
浏览文件 @
d3db2d7f
package
org.skywalking.apm.collector.ui.dao
;
import
com.google.gson.JsonArray
;
import
java.util.List
;
import
org.skywalking.apm.collector.storage.define.register.InstanceDataDefine
;
import
org.skywalking.apm.collector.storage.h2.dao.H2DAO
;
...
...
@@ -16,7 +17,7 @@ public class InstanceH2DAO extends H2DAO implements IInstanceDAO {
return
null
;
}
@Override
public
List
<
Application
>
getApplications
(
long
t
ime
)
{
@Override
public
JsonArray
getApplications
(
long
startTime
,
long
endT
ime
)
{
return
null
;
}
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryEsDAO.java
浏览文件 @
d3db2d7f
package
org.skywalking.apm.collector.ui.dao
;
import
com.google.gson.JsonArray
;
import
com.google.gson.JsonObject
;
import
org.elasticsearch.action.search.SearchRequestBuilder
;
import
org.elasticsearch.action.search.SearchResponse
;
import
org.elasticsearch.action.search.SearchType
;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.search.SearchHit
;
import
org.elasticsearch.search.SearchHits
;
import
org.elasticsearch.search.sort.SortBuilders
;
import
org.elasticsearch.search.sort.SortOrder
;
import
org.skywalking.apm.collector.core.util.ColumnNameUtils
;
import
org.skywalking.apm.collector.core.util.StringUtils
;
import
org.skywalking.apm.collector.storage.define.service.ServiceEntryTable
;
import
org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO
;
import
org.skywalking.apm.collector.ui.cache.ApplicationCache
;
/**
* @author pengys5
*/
public
class
ServiceEntryEsDAO
extends
EsDAO
implements
IServiceEntryDAO
{
@Override
public
JsonArray
load
(
int
applicationId
,
long
startTime
,
long
endTime
)
{
return
null
;
@Override
public
JsonObject
load
(
int
applicationId
,
String
entryServiceName
,
long
startTime
,
long
endTime
,
int
from
,
int
size
)
{
SearchRequestBuilder
searchRequestBuilder
=
getClient
().
prepareSearch
(
ServiceEntryTable
.
TABLE
);
searchRequestBuilder
.
setTypes
(
ServiceEntryTable
.
TABLE_TYPE
);
searchRequestBuilder
.
setSearchType
(
SearchType
.
DFS_QUERY_THEN_FETCH
);
BoolQueryBuilder
boolQueryBuilder
=
QueryBuilders
.
boolQuery
();
boolQueryBuilder
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
ServiceEntryTable
.
COLUMN_REGISTER_TIME
).
lte
(
endTime
));
boolQueryBuilder
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
ServiceEntryTable
.
COLUMN_NEWEST_TIME
).
gte
(
startTime
));
if
(
applicationId
!=
0
)
{
boolQueryBuilder
.
must
().
add
(
QueryBuilders
.
matchQuery
(
ServiceEntryTable
.
COLUMN_APPLICATION_ID
,
applicationId
));
}
if
(
StringUtils
.
isNotEmpty
(
entryServiceName
))
{
boolQueryBuilder
.
must
().
add
(
QueryBuilders
.
termQuery
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_NAME
,
entryServiceName
));
}
searchRequestBuilder
.
setQuery
(
boolQueryBuilder
);
searchRequestBuilder
.
setSize
(
size
);
searchRequestBuilder
.
setFrom
(
from
);
searchRequestBuilder
.
addSort
(
SortBuilders
.
fieldSort
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_NAME
).
order
(
SortOrder
.
ASC
));
SearchResponse
searchResponse
=
searchRequestBuilder
.
execute
().
actionGet
();
return
parseResponse
(
searchResponse
);
}
private
JsonObject
parseResponse
(
SearchResponse
searchResponse
)
{
SearchHits
searchHits
=
searchResponse
.
getHits
();
JsonArray
serviceArray
=
new
JsonArray
();
for
(
SearchHit
searchHit
:
searchHits
.
getHits
())
{
int
applicationId
=
((
Number
)
searchHit
.
getSource
().
get
(
ServiceEntryTable
.
COLUMN_APPLICATION_ID
)).
intValue
();
int
entryServiceId
=
((
Number
)
searchHit
.
getSource
().
get
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_ID
)).
intValue
();
String
applicationCode
=
ApplicationCache
.
getForUI
(
applicationId
);
String
entryServiceName
=
(
String
)
searchHit
.
getSource
().
get
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_NAME
);
JsonObject
row
=
new
JsonObject
();
row
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_ID
),
entryServiceId
);
row
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_NAME
),
entryServiceName
);
row
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceEntryTable
.
COLUMN_APPLICATION_ID
),
applicationId
);
row
.
addProperty
(
"applicationCode"
,
applicationCode
);
serviceArray
.
add
(
row
);
}
JsonObject
response
=
new
JsonObject
();
response
.
addProperty
(
"total"
,
searchHits
.
totalHits
);
response
.
add
(
"array"
,
serviceArray
);
return
response
;
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryH2DAO.java
浏览文件 @
d3db2d7f
package
org.skywalking.apm.collector.ui.dao
;
import
com.google.gson.Json
Array
;
import
com.google.gson.Json
Object
;
import
org.skywalking.apm.collector.storage.h2.dao.H2DAO
;
/**
* @author pengys5
*/
public
class
ServiceEntryH2DAO
extends
H2DAO
implements
IServiceEntryDAO
{
@Override
public
JsonArray
load
(
int
applicationId
,
long
startTime
,
long
endTim
e
)
{
@Override
public
JsonObject
load
(
int
applicationId
,
String
entryServiceName
,
long
startTime
,
long
endTime
,
int
from
,
int
siz
e
)
{
return
null
;
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceNameEsDAO.java
浏览文件 @
d3db2d7f
...
...
@@ -2,10 +2,15 @@ package org.skywalking.apm.collector.ui.dao;
import
org.elasticsearch.action.get.GetRequestBuilder
;
import
org.elasticsearch.action.get.GetResponse
;
import
org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient
;
import
org.elasticsearch.action.search.SearchRequestBuilder
;
import
org.elasticsearch.action.search.SearchResponse
;
import
org.elasticsearch.action.search.SearchType
;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.search.SearchHit
;
import
org.skywalking.apm.collector.core.util.Const
;
import
org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO
;
import
org.skywalking.apm.collector.storage.define.register.ServiceNameTable
;
import
org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO
;
/**
* @author pengys5
...
...
@@ -13,8 +18,7 @@ import org.skywalking.apm.collector.storage.define.register.ServiceNameTable;
public
class
ServiceNameEsDAO
extends
EsDAO
implements
IServiceNameDAO
{
@Override
public
String
getServiceName
(
int
serviceId
)
{
ElasticSearchClient
client
=
getClient
();
GetRequestBuilder
getRequestBuilder
=
client
.
prepareGet
(
ServiceNameTable
.
TABLE
,
String
.
valueOf
(
serviceId
));
GetRequestBuilder
getRequestBuilder
=
getClient
().
prepareGet
(
ServiceNameTable
.
TABLE
,
String
.
valueOf
(
serviceId
));
GetResponse
getResponse
=
getRequestBuilder
.
get
();
if
(
getResponse
.
isExists
())
{
...
...
@@ -22,4 +26,24 @@ public class ServiceNameEsDAO extends EsDAO implements IServiceNameDAO {
}
return
Const
.
UNKNOWN
;
}
@Override
public
int
getServiceId
(
int
applicationId
,
String
serviceName
)
{
SearchRequestBuilder
searchRequestBuilder
=
getClient
().
prepareSearch
(
ServiceNameTable
.
TABLE
);
searchRequestBuilder
.
setTypes
(
ServiceNameTable
.
TABLE_TYPE
);
searchRequestBuilder
.
setSearchType
(
SearchType
.
DFS_QUERY_THEN_FETCH
);
BoolQueryBuilder
boolQuery
=
QueryBuilders
.
boolQuery
();
boolQuery
.
must
().
add
(
QueryBuilders
.
matchQuery
(
ServiceNameTable
.
COLUMN_APPLICATION_ID
,
applicationId
));
boolQuery
.
must
().
add
(
QueryBuilders
.
matchQuery
(
ServiceNameTable
.
COLUMN_SERVICE_NAME
,
serviceName
));
searchRequestBuilder
.
setQuery
(
boolQuery
);
searchRequestBuilder
.
setSize
(
1
);
SearchResponse
searchResponse
=
searchRequestBuilder
.
get
();
if
(
searchResponse
.
getHits
().
totalHits
>
0
)
{
SearchHit
searchHit
=
searchResponse
.
getHits
().
iterator
().
next
();
int
serviceId
=
(
int
)
searchHit
.
getSource
().
get
(
ServiceNameTable
.
COLUMN_SERVICE_ID
);
return
serviceId
;
}
return
0
;
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceNameH2DAO.java
浏览文件 @
d3db2d7f
...
...
@@ -10,4 +10,8 @@ public class ServiceNameH2DAO extends H2DAO implements IServiceNameDAO {
@Override
public
String
getServiceName
(
int
serviceId
)
{
return
null
;
}
@Override
public
int
getServiceId
(
int
applicationId
,
String
serviceName
)
{
return
0
;
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
浏览文件 @
d3db2d7f
package
org.skywalking.apm.collector.ui.dao
;
import
com.google.gson.JsonArray
;
import
com.google.gson.JsonObject
;
import
org.elasticsearch.action.search.SearchRequestBuilder
;
import
org.elasticsearch.action.search.SearchResponse
;
import
org.elasticsearch.action.search.SearchType
;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.search.aggregations.AggregationBuilders
;
import
org.elasticsearch.search.aggregations.bucket.terms.Terms
;
import
org.elasticsearch.search.aggregations.metrics.sum.Sum
;
import
org.skywalking.apm.collector.core.util.ColumnNameUtils
;
import
org.skywalking.apm.collector.core.util.Const
;
import
org.skywalking.apm.collector.core.util.StringUtils
;
import
org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceTable
;
import
org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO
;
import
org.skywalking.apm.collector.ui.cache.ServiceIdCache
;
import
org.skywalking.apm.collector.ui.cache.ServiceNameCache
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -13,6 +28,127 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ServiceReferenceEsDAO
.
class
);
@Override
public
JsonArray
load
(
int
entryServiceId
,
long
startTime
,
long
endTime
)
{
return
null
;
SearchRequestBuilder
searchRequestBuilder
=
getClient
().
prepareSearch
(
ServiceReferenceTable
.
TABLE
);
searchRequestBuilder
.
setTypes
(
ServiceReferenceTable
.
TABLE_TYPE
);
searchRequestBuilder
.
setSearchType
(
SearchType
.
DFS_QUERY_THEN_FETCH
);
BoolQueryBuilder
boolQuery
=
QueryBuilders
.
boolQuery
();
boolQuery
.
should
().
add
(
QueryBuilders
.
matchQuery
(
ServiceReferenceTable
.
COLUMN_ENTRY_SERVICE_ID
,
entryServiceId
));
boolQuery
.
should
().
add
(
QueryBuilders
.
matchQuery
(
ServiceReferenceTable
.
COLUMN_ENTRY_SERVICE_NAME
,
ServiceNameCache
.
getForUI
(
entryServiceId
)));
boolQuery
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
ServiceReferenceTable
.
COLUMN_TIME_BUCKET
).
gte
(
startTime
).
lte
(
endTime
));
searchRequestBuilder
.
setQuery
(
boolQuery
);
searchRequestBuilder
.
setSize
(
0
);
searchRequestBuilder
.
addAggregation
(
AggregationBuilders
.
terms
(
ServiceReferenceTable
.
COLUMN_FRONT_SERVICE_ID
).
field
(
ServiceReferenceTable
.
COLUMN_FRONT_SERVICE_ID
).
size
(
100
)
.
subAggregation
(
AggregationBuilders
.
terms
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_ID
).
field
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_ID
).
size
(
100
)
.
subAggregation
(
AggregationBuilders
.
sum
(
ServiceReferenceTable
.
COLUMN_SUMMARY
).
field
(
ServiceReferenceTable
.
COLUMN_SUMMARY
)))
.
subAggregation
(
AggregationBuilders
.
terms
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_NAME
).
field
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_NAME
).
size
(
100
)
.
subAggregation
(
AggregationBuilders
.
sum
(
ServiceReferenceTable
.
COLUMN_S1_LTE
).
field
(
ServiceReferenceTable
.
COLUMN_S1_LTE
))
.
subAggregation
(
AggregationBuilders
.
sum
(
ServiceReferenceTable
.
COLUMN_S3_LTE
).
field
(
ServiceReferenceTable
.
COLUMN_S3_LTE
))
.
subAggregation
(
AggregationBuilders
.
sum
(
ServiceReferenceTable
.
COLUMN_S5_LTE
).
field
(
ServiceReferenceTable
.
COLUMN_S5_LTE
))
.
subAggregation
(
AggregationBuilders
.
sum
(
ServiceReferenceTable
.
COLUMN_S5_GT
).
field
(
ServiceReferenceTable
.
COLUMN_S5_GT
))
.
subAggregation
(
AggregationBuilders
.
sum
(
ServiceReferenceTable
.
COLUMN_ERROR
).
field
(
ServiceReferenceTable
.
COLUMN_ERROR
))
.
subAggregation
(
AggregationBuilders
.
sum
(
ServiceReferenceTable
.
COLUMN_SUMMARY
).
field
(
ServiceReferenceTable
.
COLUMN_SUMMARY
))
.
subAggregation
(
AggregationBuilders
.
sum
(
ServiceReferenceTable
.
COLUMN_COST_SUMMARY
).
field
(
ServiceReferenceTable
.
COLUMN_COST_SUMMARY
))));
searchRequestBuilder
.
addAggregation
(
AggregationBuilders
.
terms
(
ServiceReferenceTable
.
COLUMN_FRONT_SERVICE_NAME
).
field
(
ServiceReferenceTable
.
COLUMN_FRONT_SERVICE_NAME
).
size
(
100
)
.
subAggregation
(
AggregationBuilders
.
terms
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_ID
).
field
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_ID
).
size
(
100
)
.
subAggregation
(
AggregationBuilders
.
sum
(
ServiceReferenceTable
.
COLUMN_SUMMARY
).
field
(
ServiceReferenceTable
.
COLUMN_SUMMARY
)))
.
subAggregation
(
AggregationBuilders
.
terms
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_NAME
).
field
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_NAME
).
size
(
100
)
.
subAggregation
(
AggregationBuilders
.
sum
(
ServiceReferenceTable
.
COLUMN_S1_LTE
).
field
(
ServiceReferenceTable
.
COLUMN_S1_LTE
))
.
subAggregation
(
AggregationBuilders
.
sum
(
ServiceReferenceTable
.
COLUMN_S3_LTE
).
field
(
ServiceReferenceTable
.
COLUMN_S3_LTE
))
.
subAggregation
(
AggregationBuilders
.
sum
(
ServiceReferenceTable
.
COLUMN_S5_LTE
).
field
(
ServiceReferenceTable
.
COLUMN_S5_LTE
))
.
subAggregation
(
AggregationBuilders
.
sum
(
ServiceReferenceTable
.
COLUMN_S5_GT
).
field
(
ServiceReferenceTable
.
COLUMN_S5_GT
))
.
subAggregation
(
AggregationBuilders
.
sum
(
ServiceReferenceTable
.
COLUMN_ERROR
).
field
(
ServiceReferenceTable
.
COLUMN_ERROR
))
.
subAggregation
(
AggregationBuilders
.
sum
(
ServiceReferenceTable
.
COLUMN_SUMMARY
).
field
(
ServiceReferenceTable
.
COLUMN_SUMMARY
))
.
subAggregation
(
AggregationBuilders
.
sum
(
ServiceReferenceTable
.
COLUMN_COST_SUMMARY
).
field
(
ServiceReferenceTable
.
COLUMN_COST_SUMMARY
))));
JsonArray
serviceReferenceArray
=
new
JsonArray
();
SearchResponse
searchResponse
=
searchRequestBuilder
.
get
();
Terms
frontServiceIdTerms
=
searchResponse
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_FRONT_SERVICE_ID
);
for
(
Terms
.
Bucket
frontServiceBucket
:
frontServiceIdTerms
.
getBuckets
())
{
int
frontServiceId
=
frontServiceBucket
.
getKeyAsNumber
().
intValue
();
if
(
frontServiceId
!=
0
)
{
parseSubAggregate
(
serviceReferenceArray
,
frontServiceBucket
,
frontServiceId
);
}
}
Terms
frontServiceNameTerms
=
searchResponse
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_FRONT_SERVICE_NAME
);
for
(
Terms
.
Bucket
frontServiceBucket
:
frontServiceNameTerms
.
getBuckets
())
{
String
frontServiceName
=
frontServiceBucket
.
getKeyAsString
();
if
(
StringUtils
.
isNotEmpty
(
frontServiceName
))
{
String
[]
serviceNames
=
frontServiceName
.
split
(
Const
.
ID_SPLIT
);
int
frontServiceId
=
ServiceIdCache
.
getForUI
(
Integer
.
parseInt
(
serviceNames
[
0
]),
serviceNames
[
1
]);
parseSubAggregate
(
serviceReferenceArray
,
frontServiceBucket
,
frontServiceId
);
}
}
return
serviceReferenceArray
;
}
private
void
parseSubAggregate
(
JsonArray
serviceReferenceArray
,
Terms
.
Bucket
frontServiceBucket
,
int
frontServiceId
)
{
Terms
behindServiceIdTerms
=
frontServiceBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_ID
);
for
(
Terms
.
Bucket
behindServiceIdBucket
:
behindServiceIdTerms
.
getBuckets
())
{
int
behindServiceId
=
behindServiceIdBucket
.
getKeyAsNumber
().
intValue
();
if
(
behindServiceId
!=
0
)
{
Sum
s1LteSum
=
behindServiceIdBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_S1_LTE
);
Sum
s3LteSum
=
behindServiceIdBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_S3_LTE
);
Sum
s5LteSum
=
behindServiceIdBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_S5_LTE
);
Sum
s5GtSum
=
behindServiceIdBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_S5_GT
);
Sum
error
=
behindServiceIdBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_ERROR
);
Sum
summary
=
behindServiceIdBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_SUMMARY
);
Sum
costSum
=
behindServiceIdBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_COST_SUMMARY
);
String
frontServiceName
=
ServiceNameCache
.
getForUI
(
frontServiceId
);
String
behindServiceName
=
ServiceNameCache
.
getForUI
(
behindServiceId
);
JsonObject
serviceReference
=
new
JsonObject
();
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_FRONT_SERVICE_ID
),
frontServiceId
);
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_FRONT_SERVICE_NAME
),
frontServiceName
);
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_ID
),
behindServiceId
);
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_NAME
),
behindServiceName
);
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_S1_LTE
),
(
long
)
s1LteSum
.
getValue
());
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_S3_LTE
),
(
long
)
s3LteSum
.
getValue
());
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_S5_LTE
),
(
long
)
s5LteSum
.
getValue
());
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_S5_GT
),
(
long
)
s5GtSum
.
getValue
());
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_ERROR
),
(
long
)
error
.
getValue
());
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_SUMMARY
),
(
long
)
summary
.
getValue
());
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_COST_SUMMARY
),
(
long
)
costSum
.
getValue
());
serviceReferenceArray
.
add
(
serviceReference
);
}
}
Terms
behindServiceNameTerms
=
frontServiceBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_NAME
);
for
(
Terms
.
Bucket
behindServiceNameBucket
:
behindServiceNameTerms
.
getBuckets
())
{
String
behindServiceName
=
behindServiceNameBucket
.
getKeyAsString
();
if
(
StringUtils
.
isNotEmpty
(
behindServiceName
))
{
Sum
s1LteSum
=
behindServiceNameBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_S1_LTE
);
Sum
s3LteSum
=
behindServiceNameBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_S3_LTE
);
Sum
s5LteSum
=
behindServiceNameBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_S5_LTE
);
Sum
s5GtSum
=
behindServiceNameBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_S5_GT
);
Sum
error
=
behindServiceNameBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_ERROR
);
Sum
summary
=
behindServiceNameBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_SUMMARY
);
Sum
costSum
=
behindServiceNameBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_COST_SUMMARY
);
String
frontServiceName
=
ServiceNameCache
.
getForUI
(
frontServiceId
);
String
[]
serviceNames
=
behindServiceName
.
split
(
Const
.
ID_SPLIT
);
int
behindServiceId
=
ServiceIdCache
.
getForUI
(
Integer
.
parseInt
(
serviceNames
[
0
]),
serviceNames
[
1
]);
behindServiceName
=
serviceNames
[
1
];
JsonObject
serviceReference
=
new
JsonObject
();
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_FRONT_SERVICE_ID
),
frontServiceId
);
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_FRONT_SERVICE_NAME
),
frontServiceName
);
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_ID
),
behindServiceId
);
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_NAME
),
behindServiceName
);
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_S1_LTE
),
(
long
)
s1LteSum
.
getValue
());
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_S3_LTE
),
(
long
)
s3LteSum
.
getValue
());
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_S5_LTE
),
(
long
)
s5LteSum
.
getValue
());
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_S5_GT
),
(
long
)
s5GtSum
.
getValue
());
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_ERROR
),
(
long
)
error
.
getValue
());
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_SUMMARY
),
(
long
)
summary
.
getValue
());
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_COST_SUMMARY
),
(
long
)
costSum
.
getValue
());
serviceReferenceArray
.
add
(
serviceReference
);
}
}
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleDefine.java
浏览文件 @
d3db2d7f
...
...
@@ -15,10 +15,12 @@ import org.skywalking.apm.collector.ui.jetty.handler.SpanGetHandler;
import
org.skywalking.apm.collector.ui.jetty.handler.TraceDagGetHandler
;
import
org.skywalking.apm.collector.ui.jetty.handler.TraceStackGetHandler
;
import
org.skywalking.apm.collector.ui.jetty.handler.UIJettyServerHandler
;
import
org.skywalking.apm.collector.ui.jetty.handler.
instancehealth
.ApplicationsGetHandler
;
import
org.skywalking.apm.collector.ui.jetty.handler.
application
.ApplicationsGetHandler
;
import
org.skywalking.apm.collector.ui.jetty.handler.instancehealth.InstanceHealthGetHandler
;
import
org.skywalking.apm.collector.ui.jetty.handler.servicetree.EntryServiceGetHandler
;
import
org.skywalking.apm.collector.ui.jetty.handler.servicetree.ServiceTreeGetHandler
;
import
org.skywalking.apm.collector.ui.jetty.handler.time.AllInstanceLastTimeGetHandler
;
import
org.skywalking.apm.collector.ui.jetty.handler.time.InstanceLastTimeGetHandler
;
import
org.skywalking.apm.collector.ui.jetty.handler.time.
One
InstanceLastTimeGetHandler
;
/**
* @author pengys5
...
...
@@ -58,10 +60,12 @@ public class UIJettyModuleDefine extends UIModuleDefine {
handlers
.
add
(
new
SegmentTopGetHandler
());
handlers
.
add
(
new
TraceStackGetHandler
());
handlers
.
add
(
new
SpanGetHandler
());
handlers
.
add
(
new
InstanceLastTimeGetHandler
());
handlers
.
add
(
new
One
InstanceLastTimeGetHandler
());
handlers
.
add
(
new
AllInstanceLastTimeGetHandler
());
handlers
.
add
(
new
ApplicationsGetHandler
());
handlers
.
add
(
new
InstanceHealthGetHandler
());
handlers
.
add
(
new
ApplicationsGetHandler
());
handlers
.
add
(
new
EntryServiceGetHandler
());
handlers
.
add
(
new
ServiceTreeGetHandler
());
return
handlers
;
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/
instancehealth
/ApplicationsGetHandler.java
→
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/
application
/ApplicationsGetHandler.java
浏览文件 @
d3db2d7f
package
org.skywalking.apm.collector.ui.jetty.handler.
instancehealth
;
package
org.skywalking.apm.collector.ui.jetty.handler.
application
;
import
com.google.gson.JsonElement
;
import
javax.servlet.http.HttpServletRequest
;
import
org.skywalking.apm.collector.server.jetty.ArgumentsParseException
;
import
org.skywalking.apm.collector.server.jetty.JettyHandler
;
import
org.skywalking.apm.collector.ui.service.
InstanceHealth
Service
;
import
org.skywalking.apm.collector.ui.service.
Application
Service
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -16,23 +16,35 @@ public class ApplicationsGetHandler extends JettyHandler {
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ApplicationsGetHandler
.
class
);
@Override
public
String
pathSpec
()
{
return
"/
instance/health/
applications"
;
return
"/applications"
;
}
private
InstanceHealthService
service
=
new
InstanceHealth
Service
();
private
ApplicationService
service
=
new
Application
Service
();
@Override
protected
JsonElement
doGet
(
HttpServletRequest
req
)
throws
ArgumentsParseException
{
String
timestampStr
=
req
.
getParameter
(
"timestamp"
);
logger
.
debug
(
"instance health applications get time: {}"
,
timestampStr
);
if
(!
req
.
getParameterMap
().
containsKey
(
"startTime"
)
||
!
req
.
getParameterMap
().
containsKey
(
"endTime"
))
{
throw
new
ArgumentsParseException
(
"must contains startTime. endTime parameter"
);
}
String
startTimeStr
=
req
.
getParameter
(
"startTime"
);
String
endTimeStr
=
req
.
getParameter
(
"endTime"
);
logger
.
debug
(
"applications get start time: {}, end time: {}"
,
startTimeStr
,
endTimeStr
);
long
startTime
;
try
{
startTime
=
Long
.
parseLong
(
startTimeStr
);
}
catch
(
NumberFormatException
e
)
{
throw
new
ArgumentsParseException
(
"start time must be long"
);
}
long
timestamp
;
long
endTime
;
try
{
timestamp
=
Long
.
parseLong
(
timestamp
Str
);
endTime
=
Long
.
parseLong
(
endTime
Str
);
}
catch
(
NumberFormatException
e
)
{
throw
new
ArgumentsParseException
(
"time must be long"
);
throw
new
ArgumentsParseException
(
"
end
time must be long"
);
}
return
service
.
getApplications
(
timestamp
);
return
service
.
getApplications
(
startTime
,
endTime
);
}
@Override
protected
JsonElement
doPost
(
HttpServletRequest
req
)
throws
ArgumentsParseException
{
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/EntryServiceGetHandler.java
浏览文件 @
d3db2d7f
...
...
@@ -22,7 +22,56 @@ public class EntryServiceGetHandler extends JettyHandler {
private
ServiceTreeService
service
=
new
ServiceTreeService
();
@Override
protected
JsonElement
doGet
(
HttpServletRequest
req
)
throws
ArgumentsParseException
{
return
null
;
if
(!
req
.
getParameterMap
().
containsKey
(
"applicationId"
)
||
!
req
.
getParameterMap
().
containsKey
(
"entryServiceName"
)
||
!
req
.
getParameterMap
().
containsKey
(
"startTime"
)
||
!
req
.
getParameterMap
().
containsKey
(
"endTime"
)
||
!
req
.
getParameterMap
().
containsKey
(
"from"
)
||
!
req
.
getParameterMap
().
containsKey
(
"size"
))
{
throw
new
ArgumentsParseException
(
"must contains parameters: applicationId, entryServiceName, startTime, endTime, from, size"
);
}
String
applicationIdStr
=
req
.
getParameter
(
"applicationId"
);
String
entryServiceName
=
req
.
getParameter
(
"entryServiceName"
);
String
startTimeStr
=
req
.
getParameter
(
"startTime"
);
String
endTimeStr
=
req
.
getParameter
(
"endTime"
);
String
fromStr
=
req
.
getParameter
(
"from"
);
String
sizeStr
=
req
.
getParameter
(
"size"
);
logger
.
debug
(
"service entry get applicationId: {}, entryServiceName: {}, startTime: {}, endTime: {}, from: {}, size: {}"
,
applicationIdStr
,
entryServiceName
,
startTimeStr
,
endTimeStr
,
fromStr
,
sizeStr
);
int
applicationId
;
try
{
applicationId
=
Integer
.
parseInt
(
applicationIdStr
);
}
catch
(
NumberFormatException
e
)
{
throw
new
ArgumentsParseException
(
"application id must be integer"
);
}
long
startTime
;
try
{
startTime
=
Long
.
parseLong
(
startTimeStr
);
}
catch
(
NumberFormatException
e
)
{
throw
new
ArgumentsParseException
(
"start time must be long"
);
}
long
endTime
;
try
{
endTime
=
Long
.
parseLong
(
endTimeStr
);
}
catch
(
NumberFormatException
e
)
{
throw
new
ArgumentsParseException
(
"end time must be long"
);
}
int
from
;
try
{
from
=
Integer
.
parseInt
(
fromStr
);
}
catch
(
NumberFormatException
e
)
{
throw
new
ArgumentsParseException
(
"from must be integer"
);
}
int
size
;
try
{
size
=
Integer
.
parseInt
(
sizeStr
);
}
catch
(
NumberFormatException
e
)
{
throw
new
ArgumentsParseException
(
"size must be integer"
);
}
return
service
.
loadEntryService
(
applicationId
,
entryServiceName
,
startTime
,
endTime
,
from
,
size
);
}
@Override
protected
JsonElement
doPost
(
HttpServletRequest
req
)
throws
ArgumentsParseException
{
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetHandler.java
浏览文件 @
d3db2d7f
...
...
@@ -22,7 +22,37 @@ public class ServiceTreeGetHandler extends JettyHandler {
private
ServiceTreeService
service
=
new
ServiceTreeService
();
@Override
protected
JsonElement
doGet
(
HttpServletRequest
req
)
throws
ArgumentsParseException
{
return
null
;
if
(!
req
.
getParameterMap
().
containsKey
(
"entryServiceId"
)
||
!
req
.
getParameterMap
().
containsKey
(
"startTime"
)
||
!
req
.
getParameterMap
().
containsKey
(
"endTime"
))
{
throw
new
ArgumentsParseException
(
"must contains parameters: entryServiceId, startTime, endTime"
);
}
String
entryServiceIdStr
=
req
.
getParameter
(
"entryServiceId"
);
String
startTimeStr
=
req
.
getParameter
(
"startTime"
);
String
endTimeStr
=
req
.
getParameter
(
"endTime"
);
logger
.
debug
(
"service entry get entryServiceId: {}, startTime: {}, endTime: {}"
,
entryServiceIdStr
,
startTimeStr
,
endTimeStr
);
int
entryServiceId
;
try
{
entryServiceId
=
Integer
.
parseInt
(
entryServiceIdStr
);
}
catch
(
NumberFormatException
e
)
{
throw
new
ArgumentsParseException
(
"entry service id must be integer"
);
}
long
startTime
;
try
{
startTime
=
Long
.
parseLong
(
startTimeStr
);
}
catch
(
NumberFormatException
e
)
{
throw
new
ArgumentsParseException
(
"start time must be long"
);
}
long
endTime
;
try
{
endTime
=
Long
.
parseLong
(
endTimeStr
);
}
catch
(
NumberFormatException
e
)
{
throw
new
ArgumentsParseException
(
"end time must be long"
);
}
return
service
.
loadServiceTree
(
entryServiceId
,
startTime
,
endTime
);
}
@Override
protected
JsonElement
doPost
(
HttpServletRequest
req
)
throws
ArgumentsParseException
{
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/AllInstanceLastTimeGetHandler.java
浏览文件 @
d3db2d7f
...
...
@@ -4,6 +4,7 @@ import com.google.gson.JsonElement;
import
com.google.gson.JsonObject
;
import
java.util.Calendar
;
import
javax.servlet.http.HttpServletRequest
;
import
org.skywalking.apm.collector.core.util.TimeBucketUtils
;
import
org.skywalking.apm.collector.server.jetty.ArgumentsParseException
;
import
org.skywalking.apm.collector.server.jetty.JettyHandler
;
import
org.skywalking.apm.collector.ui.service.TimeSynchronousService
;
...
...
@@ -24,17 +25,15 @@ public class AllInstanceLastTimeGetHandler extends JettyHandler {
private
TimeSynchronousService
service
=
new
TimeSynchronousService
();
@Override
protected
JsonElement
doGet
(
HttpServletRequest
req
)
throws
ArgumentsParseException
{
Long
time
=
service
.
allInstanceLastTime
();
logger
.
debug
(
"all instance last time: {}"
,
time
);
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTimeInMillis
(
time
);
Long
timeBucket
=
service
.
allInstanceLastTime
();
logger
.
debug
(
"all instance last time: {}"
,
timeBucket
);
int
second
=
calendar
.
get
(
Calendar
.
SECOND
);
second
=
(
second
%
5
)
*
5
;
calendar
.
set
(
Calendar
.
SECOND
,
second
);
Calendar
calendar
=
Calendar
.
getInstance
(
);
calendar
.
setTimeInMillis
(
TimeBucketUtils
.
INSTANCE
.
changeTimeBucket2TimeStamp
(
TimeBucketUtils
.
TimeBucketType
.
SECOND
.
name
(),
timeBucket
))
;
calendar
.
add
(
Calendar
.
SECOND
,
-
5
);
JsonObject
timeJson
=
new
JsonObject
();
timeJson
.
addProperty
(
"time
"
,
calendar
.
getTimeInMillis
(
));
timeJson
.
addProperty
(
"time
Bucket"
,
TimeBucketUtils
.
INSTANCE
.
getSecondTimeBucket
(
calendar
.
getTimeInMillis
()
));
return
timeJson
;
}
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/InstanceLastTimeGetHandler.java
→
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/
One
InstanceLastTimeGetHandler.java
浏览文件 @
d3db2d7f
...
...
@@ -12,12 +12,12 @@ import org.slf4j.LoggerFactory;
/**
* @author pengys5
*/
public
class
InstanceLastTimeGetHandler
extends
JettyHandler
{
public
class
One
InstanceLastTimeGetHandler
extends
JettyHandler
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
InstanceLastTimeGetHandler
.
class
);
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
One
InstanceLastTimeGetHandler
.
class
);
@Override
public
String
pathSpec
()
{
return
"/time/
instanceId
"
;
return
"/time/
oneInstance
"
;
}
private
TimeSynchronousService
service
=
new
TimeSynchronousService
();
...
...
@@ -36,7 +36,7 @@ public class InstanceLastTimeGetHandler extends JettyHandler {
Long
time
=
service
.
instanceLastTime
(
applicationInstanceId
);
logger
.
debug
(
"application instance id: {}, instance last time: {}"
,
applicationInstanceId
,
time
);
JsonObject
timeJson
=
new
JsonObject
();
timeJson
.
addProperty
(
"time"
,
time
);
timeJson
.
addProperty
(
"time
Bucket
"
,
time
);
return
timeJson
;
}
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ApplicationService.java
0 → 100644
浏览文件 @
d3db2d7f
package
org.skywalking.apm.collector.ui.service
;
import
com.google.gson.JsonArray
;
import
org.skywalking.apm.collector.storage.dao.DAOContainer
;
import
org.skywalking.apm.collector.ui.dao.IInstanceDAO
;
/**
* @author pengys5
*/
public
class
ApplicationService
{
public
JsonArray
getApplications
(
long
startTime
,
long
endTime
)
{
IInstanceDAO
instanceDAO
=
(
IInstanceDAO
)
DAOContainer
.
INSTANCE
.
get
(
IInstanceDAO
.
class
.
getName
());
return
instanceDAO
.
getApplications
(
startTime
,
endTime
);
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java
浏览文件 @
d3db2d7f
...
...
@@ -8,7 +8,6 @@ import org.skywalking.apm.collector.storage.dao.DAOContainer;
import
org.skywalking.apm.collector.ui.cache.ApplicationCache
;
import
org.skywalking.apm.collector.ui.dao.IGCMetricDAO
;
import
org.skywalking.apm.collector.ui.dao.IInstPerformanceDAO
;
import
org.skywalking.apm.collector.ui.dao.IInstanceDAO
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -19,28 +18,6 @@ public class InstanceHealthService {
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
InstanceHealthService
.
class
);
public
JsonObject
getApplications
(
long
timeBucket
)
{
IInstanceDAO
instanceDAO
=
(
IInstanceDAO
)
DAOContainer
.
INSTANCE
.
get
(
IInstanceDAO
.
class
.
getName
());
List
<
IInstanceDAO
.
Application
>
applications
=
instanceDAO
.
getApplications
(
timeBucket
);
JsonObject
response
=
new
JsonObject
();
JsonArray
applicationArray
=
new
JsonArray
();
response
.
addProperty
(
"timeBucket"
,
timeBucket
);
response
.
add
(
"applicationList"
,
applicationArray
);
applications
.
forEach
(
application
->
{
JsonObject
applicationJson
=
new
JsonObject
();
String
applicationCode
=
ApplicationCache
.
get
(
application
.
getApplicationId
());
applicationJson
.
addProperty
(
"applicationId"
,
application
.
getApplicationId
());
applicationJson
.
addProperty
(
"applicationCode"
,
applicationCode
);
applicationJson
.
addProperty
(
"instanceCount"
,
application
.
getCount
());
applicationArray
.
add
(
applicationJson
);
});
return
response
;
}
public
JsonObject
getInstances
(
long
timestamp
,
int
applicationId
)
{
JsonObject
response
=
new
JsonObject
();
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java
浏览文件 @
d3db2d7f
package
org.skywalking.apm.collector.ui.service
;
import
com.google.gson.JsonArray
;
import
com.google.gson.JsonObject
;
import
org.skywalking.apm.collector.storage.dao.DAOContainer
;
import
org.skywalking.apm.collector.ui.dao.IServiceEntryDAO
;
import
org.skywalking.apm.collector.ui.dao.IServiceReferenceDAO
;
/**
* @author pengys5
*/
public
class
ServiceTreeService
{
public
JsonArray
loadEntryService
(
int
applicationId
,
long
startTime
,
long
endTime
)
{
return
null
;
public
JsonObject
loadEntryService
(
int
applicationId
,
String
entryServiceName
,
long
startTime
,
long
endTime
,
int
from
,
int
size
)
{
IServiceEntryDAO
serviceEntryDAO
=
(
IServiceEntryDAO
)
DAOContainer
.
INSTANCE
.
get
(
IServiceEntryDAO
.
class
.
getName
());
return
serviceEntryDAO
.
load
(
applicationId
,
entryServiceName
,
startTime
,
endTime
,
from
,
size
);
}
public
JsonArray
loadServiceTree
(
int
entryServiceId
,
long
startTime
,
long
endTime
)
{
return
null
;
IServiceReferenceDAO
serviceReferenceDAO
=
(
IServiceReferenceDAO
)
DAOContainer
.
INSTANCE
.
get
(
IServiceReferenceDAO
.
class
.
getName
());
return
serviceReferenceDAO
.
load
(
entryServiceId
,
startTime
,
endTime
);
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录