Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
03a5db8e
S
SkyWalking
项目概览
apache
/
SkyWalking
上一次同步 1 年多
通知
302
Star
21345
Fork
6091
代码
文件
提交
分支
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,体验更适合开发者的 AI 搜索 >>
提交
03a5db8e
编写于
9月 09, 2017
作者:
wu-sheng
提交者:
GitHub
9月 09, 2017
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #404 from wu-sheng/feature/debugging
Feature/debugging
上级
815a4776
bd48a75b
变更
82
隐藏空白更改
内联
并排
Showing
82 changed file
with
1279 addition
and
554 deletion
+1279
-554
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/handler/JVMMetricsServiceHandler.java
...ector/agentjvm/grpc/handler/JVMMetricsServiceHandler.java
+22
-23
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/dao/CpuMetricEsDAO.java
...apm/collector/agentjvm/worker/cpu/dao/CpuMetricEsDAO.java
+1
-1
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/define/CpuMetricEsTableDefine.java
...or/agentjvm/worker/cpu/define/CpuMetricEsTableDefine.java
+1
-1
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/define/CpuMetricH2TableDefine.java
...or/agentjvm/worker/cpu/define/CpuMetricH2TableDefine.java
+1
-1
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/dao/GCMetricEsDAO.java
...g/apm/collector/agentjvm/worker/gc/dao/GCMetricEsDAO.java
+1
-2
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/define/GCMetricEsTableDefine.java
...ctor/agentjvm/worker/gc/define/GCMetricEsTableDefine.java
+1
-2
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/define/GCMetricH2TableDefine.java
...ctor/agentjvm/worker/gc/define/GCMetricH2TableDefine.java
+1
-2
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/dao/MemoryPoolMetricEsDAO.java
...agentjvm/worker/memorypool/dao/MemoryPoolMetricEsDAO.java
+1
-1
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/define/MemoryPoolMetricEsTableDefine.java
...rker/memorypool/define/MemoryPoolMetricEsTableDefine.java
+1
-1
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/define/MemoryPoolMetricH2TableDefine.java
...rker/memorypool/define/MemoryPoolMetricH2TableDefine.java
+1
-1
apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ApplicationRegisterServiceHandler.java
...ister/grpc/handler/ApplicationRegisterServiceHandler.java
+7
-3
apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ServiceNameDiscoveryServiceHandler.java
...ster/grpc/handler/ServiceNameDiscoveryServiceHandler.java
+7
-4
apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/instance/InstanceIDService.java
...m/collector/agentregister/instance/InstanceIDService.java
+1
-1
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/GlobalTraceSpanListener.java
...or/agentstream/worker/global/GlobalTraceSpanListener.java
+11
-4
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/InstPerformanceSpanListener.java
...ker/instance/performance/InstPerformanceSpanListener.java
+5
-6
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/dao/InstPerformanceEsDAO.java
...worker/instance/performance/dao/InstPerformanceEsDAO.java
+3
-6
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/define/InstPerformanceEsTableDefine.java
...ance/performance/define/InstPerformanceEsTableDefine.java
+1
-2
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/define/InstPerformanceH2TableDefine.java
...ance/performance/define/InstPerformanceH2TableDefine.java
+1
-2
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceSpanListener.java
...agentstream/worker/noderef/NodeReferenceSpanListener.java
+58
-71
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/register/instance/InstanceRegisterSerialWorker.java
...orker/register/instance/InstanceRegisterSerialWorker.java
+17
-9
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/register/servicename/ServiceNameRegisterSerialWorker.java
...register/servicename/ServiceNameRegisterSerialWorker.java
+6
-2
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/SegmentParse.java
...pm/collector/agentstream/worker/segment/SegmentParse.java
+11
-5
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java
...ntstream/worker/segment/cost/SegmentCostSpanListener.java
+4
-4
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java
...stream/worker/service/entry/ServiceEntrySpanListener.java
+3
-1
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceSpanListener.java
...tream/worker/serviceref/ServiceReferenceSpanListener.java
+22
-62
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/ApplicationRegister.java
.../collector/agentstream/mock/grpc/ApplicationRegister.java
+25
-0
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/GrpcSegmentPost.java
.../apm/collector/agentstream/mock/grpc/GrpcSegmentPost.java
+8
-77
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/InstanceRegister.java
...apm/collector/agentstream/mock/grpc/InstanceRegister.java
+39
-0
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/ServiceRegister.java
.../apm/collector/agentstream/mock/grpc/ServiceRegister.java
+32
-0
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleHasEntryHasExitNoRefSpan.java
...agentstream/mock/grpc/SingleHasEntryHasExitNoRefSpan.java
+115
-0
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleHasEntryNoExitHasRefSpan.java
...agentstream/mock/grpc/SingleHasEntryNoExitHasRefSpan.java
+132
-0
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleHasEntryNoExitNoRefSpan.java
.../agentstream/mock/grpc/SingleHasEntryNoExitNoRefSpan.java
+102
-0
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleNoEntryHasExitNoRefSpan.java
.../agentstream/mock/grpc/SingleNoEntryHasExitNoRefSpan.java
+103
-0
apm-collector/apm-collector-boot/src/main/resources/application.yml
...tor/apm-collector-boot/src/main/resources/application.yml
+1
-3
apm-collector/apm-collector-boot/src/main/resources/logback.xml
...llector/apm-collector-boot/src/main/resources/logback.xml
+1
-1
apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/CollectionUtils.java
...g/skywalking/apm/collector/core/util/CollectionUtils.java
+4
-0
apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/Const.java
...in/java/org/skywalking/apm/collector/core/util/Const.java
+1
-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
+22
-8
apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/utils/TimeBucketUtilsTestCase.java
...ing/apm/collector/core/utils/TimeBucketUtilsTestCase.java
+6
-8
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/CommonTable.java
.../skywalking/apm/collector/storage/define/CommonTable.java
+0
-1
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/instance/InstPerformanceDataDefine.java
...or/storage/define/instance/InstPerformanceDataDefine.java
+12
-26
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/instance/InstPerformanceTable.java
...llector/storage/define/instance/InstPerformanceTable.java
+1
-1
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/CpuMetricDataDefine.java
...apm/collector/storage/define/jvm/CpuMetricDataDefine.java
+14
-13
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/CpuMetricTable.java
...king/apm/collector/storage/define/jvm/CpuMetricTable.java
+1
-1
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/GCMetricDataDefine.java
.../apm/collector/storage/define/jvm/GCMetricDataDefine.java
+11
-25
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/GCMetricTable.java
...lking/apm/collector/storage/define/jvm/GCMetricTable.java
+1
-1
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/MemoryPoolMetricDataDefine.java
...lector/storage/define/jvm/MemoryPoolMetricDataDefine.java
+10
-10
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/MemoryPoolMetricTable.java
...m/collector/storage/define/jvm/MemoryPoolMetricTable.java
+1
-1
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/noderef/NodeReferenceDataDefine.java
...ector/storage/define/noderef/NodeReferenceDataDefine.java
+23
-23
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/service/ServiceEntryDataDefine.java
...lector/storage/define/service/ServiceEntryDataDefine.java
+1
-1
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/cache/ServiceNameCache.java
...g/skywalking/apm/collector/ui/cache/ServiceNameCache.java
+1
-1
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/CpuMetricEsDAO.java
...a/org/skywalking/apm/collector/ui/dao/CpuMetricEsDAO.java
+7
-5
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GCMetricEsDAO.java
...va/org/skywalking/apm/collector/ui/dao/GCMetricEsDAO.java
+13
-16
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GCMetricH2DAO.java
...va/org/skywalking/apm/collector/ui/dao/GCMetricH2DAO.java
+1
-1
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IGCMetricDAO.java
...ava/org/skywalking/apm/collector/ui/dao/IGCMetricDAO.java
+1
-1
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IInstPerformanceDAO.java
.../skywalking/apm/collector/ui/dao/IInstPerformanceDAO.java
+6
-7
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
+3
-0
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ISegmentCostDAO.java
.../org/skywalking/apm/collector/ui/dao/ISegmentCostDAO.java
+2
-1
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceReferenceDAO.java
...skywalking/apm/collector/ui/dao/IServiceReferenceDAO.java
+2
-0
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstPerformanceEsDAO.java
...skywalking/apm/collector/ui/dao/InstPerformanceEsDAO.java
+21
-43
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstPerformanceH2DAO.java
...skywalking/apm/collector/ui/dao/InstPerformanceH2DAO.java
+1
-2
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
+34
-5
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
+5
-0
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/MemoryMetricEsDAO.java
...rg/skywalking/apm/collector/ui/dao/MemoryMetricEsDAO.java
+10
-6
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/MemoryPoolMetricEsDAO.java
...kywalking/apm/collector/ui/dao/MemoryPoolMetricEsDAO.java
+10
-7
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentCostEsDAO.java
...org/skywalking/apm/collector/ui/dao/SegmentCostEsDAO.java
+5
-2
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentCostH2DAO.java
...org/skywalking/apm/collector/ui/dao/SegmentCostH2DAO.java
+2
-1
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceNameEsDAO.java
...org/skywalking/apm/collector/ui/dao/ServiceNameEsDAO.java
+3
-1
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
...kywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
+86
-6
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceH2DAO.java
...kywalking/apm/collector/ui/dao/ServiceReferenceH2DAO.java
+4
-0
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleDefine.java
...kywalking/apm/collector/ui/jetty/UIJettyModuleDefine.java
+4
-2
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetByIdHandler.java
.../jetty/handler/servicetree/ServiceTreeGetByIdHandler.java
+3
-3
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetByNameHandler.java
...etty/handler/servicetree/ServiceTreeGetByNameHandler.java
+62
-0
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/AllInstanceLastTimeGetHandler.java
.../ui/jetty/handler/time/AllInstanceLastTimeGetHandler.java
+10
-4
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java
...lking/apm/collector/ui/service/InstanceHealthService.java
+29
-13
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SegmentTopService.java
...kywalking/apm/collector/ui/service/SegmentTopService.java
+11
-1
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java
...ywalking/apm/collector/ui/service/ServiceTreeService.java
+5
-0
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SpanService.java
.../org/skywalking/apm/collector/ui/service/SpanService.java
+38
-1
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TraceDagDataBuilder.java
...walking/apm/collector/ui/service/TraceDagDataBuilder.java
+30
-4
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TraceStackService.java
...kywalking/apm/collector/ui/service/TraceStackService.java
+14
-2
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/dictionary/OperationNameDictionary.java
...ng/apm/agent/core/dictionary/OperationNameDictionary.java
+1
-1
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/cpu/CPUMetricAccessor.java
.../skywalking/apm/agent/core/jvm/cpu/CPUMetricAccessor.java
+1
-1
未找到文件。
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/handler/JVMMetricsServiceHandler.java
浏览文件 @
03a5db8e
...
...
@@ -38,29 +38,29 @@ public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsSe
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
JVMMetricsServiceHandler
.
class
);
@Override
public
void
collect
(
JVMMetrics
request
,
StreamObserver
<
Downstream
>
responseObserver
)
{
int
applicationI
nstanceId
=
request
.
getApplicationInstanceId
();
logger
.
debug
(
"receive the jvm metric from application instance, id: {}"
,
applicationI
nstanceId
);
int
i
nstanceId
=
request
.
getApplicationInstanceId
();
logger
.
debug
(
"receive the jvm metric from application instance, id: {}"
,
i
nstanceId
);
StreamModuleContext
context
=
(
StreamModuleContext
)
CollectorContextHelper
.
INSTANCE
.
getContext
(
StreamModuleGroupDefine
.
GROUP_NAME
);
request
.
getMetricsList
().
forEach
(
metric
->
{
long
time
=
TimeBucketUtils
.
INSTANCE
.
getSecondTimeBucket
(
metric
.
getTime
());
senToInstanceHeartBeatPersistenceWorker
(
context
,
applicationI
nstanceId
,
metric
.
getTime
());
sendToCpuMetricPersistenceWorker
(
context
,
applicationI
nstanceId
,
time
,
metric
.
getCpu
());
sendToMemoryMetricPersistenceWorker
(
context
,
applicationI
nstanceId
,
time
,
metric
.
getMemoryList
());
sendToMemoryPoolMetricPersistenceWorker
(
context
,
applicationI
nstanceId
,
time
,
metric
.
getMemoryPoolList
());
sendToGCMetricPersistenceWorker
(
context
,
applicationI
nstanceId
,
time
,
metric
.
getGcList
());
senToInstanceHeartBeatPersistenceWorker
(
context
,
i
nstanceId
,
metric
.
getTime
());
sendToCpuMetricPersistenceWorker
(
context
,
i
nstanceId
,
time
,
metric
.
getCpu
());
sendToMemoryMetricPersistenceWorker
(
context
,
i
nstanceId
,
time
,
metric
.
getMemoryList
());
sendToMemoryPoolMetricPersistenceWorker
(
context
,
i
nstanceId
,
time
,
metric
.
getMemoryPoolList
());
sendToGCMetricPersistenceWorker
(
context
,
i
nstanceId
,
time
,
metric
.
getGcList
());
});
responseObserver
.
onNext
(
Downstream
.
newBuilder
().
build
());
responseObserver
.
onCompleted
();
}
private
void
senToInstanceHeartBeatPersistenceWorker
(
StreamModuleContext
context
,
int
applicationI
nstanceId
,
private
void
senToInstanceHeartBeatPersistenceWorker
(
StreamModuleContext
context
,
int
i
nstanceId
,
long
heartBeatTime
)
{
InstanceHeartBeatDataDefine
.
InstanceHeartBeat
heartBeat
=
new
InstanceHeartBeatDataDefine
.
InstanceHeartBeat
();
heartBeat
.
setId
(
String
.
valueOf
(
applicationI
nstanceId
));
heartBeat
.
setId
(
String
.
valueOf
(
i
nstanceId
));
heartBeat
.
setHeartBeatTime
(
TimeBucketUtils
.
INSTANCE
.
getSecondTimeBucket
(
heartBeatTime
));
heartBeat
.
setInstanceId
(
applicationI
nstanceId
);
heartBeat
.
setInstanceId
(
i
nstanceId
);
try
{
logger
.
debug
(
"send to instance heart beat persistence worker, id: {}"
,
heartBeat
.
getId
());
context
.
getClusterWorkerContext
().
lookup
(
InstHeartBeatPersistenceWorker
.
WorkerRole
.
INSTANCE
).
tell
(
heartBeat
.
toData
());
...
...
@@ -69,11 +69,11 @@ public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsSe
}
}
private
void
sendToCpuMetricPersistenceWorker
(
StreamModuleContext
context
,
int
applicationI
nstanceId
,
private
void
sendToCpuMetricPersistenceWorker
(
StreamModuleContext
context
,
int
i
nstanceId
,
long
timeBucket
,
CPU
cpu
)
{
CpuMetricDataDefine
.
CpuMetric
cpuMetric
=
new
CpuMetricDataDefine
.
CpuMetric
();
cpuMetric
.
setId
(
timeBucket
+
Const
.
ID_SPLIT
+
applicationI
nstanceId
);
cpuMetric
.
set
ApplicationInstanceId
(
applicationI
nstanceId
);
cpuMetric
.
setId
(
timeBucket
+
Const
.
ID_SPLIT
+
i
nstanceId
);
cpuMetric
.
set
InstanceId
(
i
nstanceId
);
cpuMetric
.
setUsagePercent
(
cpu
.
getUsagePercent
());
cpuMetric
.
setTimeBucket
(
timeBucket
);
try
{
...
...
@@ -84,13 +84,13 @@ public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsSe
}
}
private
void
sendToMemoryMetricPersistenceWorker
(
StreamModuleContext
context
,
int
applicationI
nstanceId
,
private
void
sendToMemoryMetricPersistenceWorker
(
StreamModuleContext
context
,
int
i
nstanceId
,
long
timeBucket
,
List
<
Memory
>
memories
)
{
memories
.
forEach
(
memory
->
{
MemoryMetricDataDefine
.
MemoryMetric
memoryMetric
=
new
MemoryMetricDataDefine
.
MemoryMetric
();
memoryMetric
.
setId
(
timeBucket
+
Const
.
ID_SPLIT
+
applicationI
nstanceId
+
Const
.
ID_SPLIT
+
String
.
valueOf
(
memory
.
getIsHeap
()));
memoryMetric
.
setApplicationInstanceId
(
applicationI
nstanceId
);
memoryMetric
.
setId
(
timeBucket
+
Const
.
ID_SPLIT
+
i
nstanceId
+
Const
.
ID_SPLIT
+
String
.
valueOf
(
memory
.
getIsHeap
()));
memoryMetric
.
setApplicationInstanceId
(
i
nstanceId
);
memoryMetric
.
setHeap
(
memory
.
getIsHeap
());
memoryMetric
.
setInit
(
memory
.
getInit
());
memoryMetric
.
setMax
(
memory
.
getMax
());
...
...
@@ -106,13 +106,13 @@ public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsSe
});
}
private
void
sendToMemoryPoolMetricPersistenceWorker
(
StreamModuleContext
context
,
int
applicationI
nstanceId
,
private
void
sendToMemoryPoolMetricPersistenceWorker
(
StreamModuleContext
context
,
int
i
nstanceId
,
long
timeBucket
,
List
<
MemoryPool
>
memoryPools
)
{
memoryPools
.
forEach
(
memoryPool
->
{
MemoryPoolMetricDataDefine
.
MemoryPoolMetric
memoryPoolMetric
=
new
MemoryPoolMetricDataDefine
.
MemoryPoolMetric
();
memoryPoolMetric
.
setId
(
timeBucket
+
Const
.
ID_SPLIT
+
applicationI
nstanceId
+
Const
.
ID_SPLIT
+
memoryPool
.
getIsHeap
()
+
Const
.
ID_SPLIT
+
String
.
valueOf
(
memoryPool
.
getType
().
getNumber
()));
memoryPoolMetric
.
set
ApplicationInstanceId
(
applicationI
nstanceId
);
memoryPoolMetric
.
setId
(
timeBucket
+
Const
.
ID_SPLIT
+
i
nstanceId
+
Const
.
ID_SPLIT
+
memoryPool
.
getIsHeap
()
+
Const
.
ID_SPLIT
+
String
.
valueOf
(
memoryPool
.
getType
().
getNumber
()));
memoryPoolMetric
.
set
InstanceId
(
i
nstanceId
);
memoryPoolMetric
.
setPoolType
(
memoryPool
.
getType
().
getNumber
());
memoryPoolMetric
.
setHeap
(
memoryPool
.
getIsHeap
());
memoryPoolMetric
.
setInit
(
memoryPool
.
getInit
());
...
...
@@ -129,17 +129,16 @@ public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsSe
});
}
private
void
sendToGCMetricPersistenceWorker
(
StreamModuleContext
context
,
int
applicationI
nstanceId
,
private
void
sendToGCMetricPersistenceWorker
(
StreamModuleContext
context
,
int
i
nstanceId
,
long
timeBucket
,
List
<
GC
>
gcs
)
{
gcs
.
forEach
(
gc
->
{
GCMetricDataDefine
.
GCMetric
gcMetric
=
new
GCMetricDataDefine
.
GCMetric
();
gcMetric
.
setId
(
timeBucket
+
Const
.
ID_SPLIT
+
applicationI
nstanceId
+
Const
.
ID_SPLIT
+
String
.
valueOf
(
gc
.
getPhraseValue
()));
gcMetric
.
set
ApplicationInstanceId
(
applicationI
nstanceId
);
gcMetric
.
setId
(
timeBucket
+
Const
.
ID_SPLIT
+
i
nstanceId
+
Const
.
ID_SPLIT
+
String
.
valueOf
(
gc
.
getPhraseValue
()));
gcMetric
.
set
InstanceId
(
i
nstanceId
);
gcMetric
.
setPhrase
(
gc
.
getPhraseValue
());
gcMetric
.
setCount
(
gc
.
getCount
());
gcMetric
.
setTime
(
gc
.
getTime
());
gcMetric
.
setTimeBucket
(
timeBucket
);
gcMetric
.
setS5TimeBucket
(
TimeBucketUtils
.
INSTANCE
.
getFiveSecondTimeBucket
(
timeBucket
));
try
{
logger
.
debug
(
"send to gc metric persistence worker, id: {}"
,
gcMetric
.
getId
());
context
.
getClusterWorkerContext
().
lookup
(
GCMetricPersistenceWorker
.
WorkerRole
.
INSTANCE
).
tell
(
gcMetric
.
toData
());
...
...
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/dao/CpuMetricEsDAO.java
浏览文件 @
03a5db8e
...
...
@@ -25,7 +25,7 @@ public class CpuMetricEsDAO extends EsDAO implements ICpuMetricDAO, IPersistence
@Override
public
IndexRequestBuilder
prepareBatchInsert
(
Data
data
)
{
Map
<
String
,
Object
>
source
=
new
HashMap
<>();
source
.
put
(
CpuMetricTable
.
COLUMN_
APPLICATION_
INSTANCE_ID
,
data
.
getDataInteger
(
0
));
source
.
put
(
CpuMetricTable
.
COLUMN_INSTANCE_ID
,
data
.
getDataInteger
(
0
));
source
.
put
(
CpuMetricTable
.
COLUMN_USAGE_PERCENT
,
data
.
getDataDouble
(
0
));
source
.
put
(
CpuMetricTable
.
COLUMN_TIME_BUCKET
,
data
.
getDataLong
(
0
));
...
...
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/define/CpuMetricEsTableDefine.java
浏览文件 @
03a5db8e
...
...
@@ -26,7 +26,7 @@ public class CpuMetricEsTableDefine extends ElasticSearchTableDefine {
}
@Override
public
void
initialize
()
{
addColumn
(
new
ElasticSearchColumnDefine
(
CpuMetricTable
.
COLUMN_
APPLICATION_
INSTANCE_ID
,
ElasticSearchColumnDefine
.
Type
.
Integer
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
CpuMetricTable
.
COLUMN_INSTANCE_ID
,
ElasticSearchColumnDefine
.
Type
.
Integer
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
CpuMetricTable
.
COLUMN_USAGE_PERCENT
,
ElasticSearchColumnDefine
.
Type
.
Double
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
CpuMetricTable
.
COLUMN_TIME_BUCKET
,
ElasticSearchColumnDefine
.
Type
.
Long
.
name
()));
}
...
...
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/define/CpuMetricH2TableDefine.java
浏览文件 @
03a5db8e
...
...
@@ -15,7 +15,7 @@ public class CpuMetricH2TableDefine extends H2TableDefine {
@Override
public
void
initialize
()
{
addColumn
(
new
H2ColumnDefine
(
CpuMetricTable
.
COLUMN_ID
,
H2ColumnDefine
.
Type
.
Varchar
.
name
()));
addColumn
(
new
H2ColumnDefine
(
CpuMetricTable
.
COLUMN_
APPLICATION_
INSTANCE_ID
,
H2ColumnDefine
.
Type
.
Int
.
name
()));
addColumn
(
new
H2ColumnDefine
(
CpuMetricTable
.
COLUMN_INSTANCE_ID
,
H2ColumnDefine
.
Type
.
Int
.
name
()));
addColumn
(
new
H2ColumnDefine
(
CpuMetricTable
.
COLUMN_USAGE_PERCENT
,
H2ColumnDefine
.
Type
.
Double
.
name
()));
addColumn
(
new
H2ColumnDefine
(
CpuMetricTable
.
COLUMN_TIME_BUCKET
,
H2ColumnDefine
.
Type
.
Bigint
.
name
()));
}
...
...
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/dao/GCMetricEsDAO.java
浏览文件 @
03a5db8e
...
...
@@ -21,12 +21,11 @@ public class GCMetricEsDAO extends EsDAO implements IGCMetricDAO, IPersistenceDA
@Override
public
IndexRequestBuilder
prepareBatchInsert
(
Data
data
)
{
Map
<
String
,
Object
>
source
=
new
HashMap
<>();
source
.
put
(
GCMetricTable
.
COLUMN_
APPLICATION_
INSTANCE_ID
,
data
.
getDataInteger
(
0
));
source
.
put
(
GCMetricTable
.
COLUMN_INSTANCE_ID
,
data
.
getDataInteger
(
0
));
source
.
put
(
GCMetricTable
.
COLUMN_PHRASE
,
data
.
getDataInteger
(
1
));
source
.
put
(
GCMetricTable
.
COLUMN_COUNT
,
data
.
getDataLong
(
0
));
source
.
put
(
GCMetricTable
.
COLUMN_TIME
,
data
.
getDataLong
(
1
));
source
.
put
(
GCMetricTable
.
COLUMN_TIME_BUCKET
,
data
.
getDataLong
(
2
));
source
.
put
(
GCMetricTable
.
COLUMN_5S_TIME_BUCKET
,
data
.
getDataLong
(
3
));
return
getClient
().
prepareIndex
(
GCMetricTable
.
TABLE
,
data
.
getDataString
(
0
)).
setSource
(
source
);
}
...
...
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/define/GCMetricEsTableDefine.java
浏览文件 @
03a5db8e
...
...
@@ -26,11 +26,10 @@ public class GCMetricEsTableDefine extends ElasticSearchTableDefine {
}
@Override
public
void
initialize
()
{
addColumn
(
new
ElasticSearchColumnDefine
(
GCMetricTable
.
COLUMN_
APPLICATION_
INSTANCE_ID
,
ElasticSearchColumnDefine
.
Type
.
Integer
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
GCMetricTable
.
COLUMN_INSTANCE_ID
,
ElasticSearchColumnDefine
.
Type
.
Integer
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
GCMetricTable
.
COLUMN_PHRASE
,
ElasticSearchColumnDefine
.
Type
.
Integer
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
GCMetricTable
.
COLUMN_COUNT
,
ElasticSearchColumnDefine
.
Type
.
Long
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
GCMetricTable
.
COLUMN_TIME
,
ElasticSearchColumnDefine
.
Type
.
Long
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
GCMetricTable
.
COLUMN_TIME_BUCKET
,
ElasticSearchColumnDefine
.
Type
.
Long
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
GCMetricTable
.
COLUMN_5S_TIME_BUCKET
,
ElasticSearchColumnDefine
.
Type
.
Long
.
name
()));
}
}
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/define/GCMetricH2TableDefine.java
浏览文件 @
03a5db8e
...
...
@@ -15,11 +15,10 @@ public class GCMetricH2TableDefine extends H2TableDefine {
@Override
public
void
initialize
()
{
addColumn
(
new
H2ColumnDefine
(
GCMetricTable
.
COLUMN_ID
,
H2ColumnDefine
.
Type
.
Varchar
.
name
()));
addColumn
(
new
H2ColumnDefine
(
GCMetricTable
.
COLUMN_
APPLICATION_
INSTANCE_ID
,
H2ColumnDefine
.
Type
.
Int
.
name
()));
addColumn
(
new
H2ColumnDefine
(
GCMetricTable
.
COLUMN_INSTANCE_ID
,
H2ColumnDefine
.
Type
.
Int
.
name
()));
addColumn
(
new
H2ColumnDefine
(
GCMetricTable
.
COLUMN_PHRASE
,
H2ColumnDefine
.
Type
.
Int
.
name
()));
addColumn
(
new
H2ColumnDefine
(
GCMetricTable
.
COLUMN_COUNT
,
H2ColumnDefine
.
Type
.
Bigint
.
name
()));
addColumn
(
new
H2ColumnDefine
(
GCMetricTable
.
COLUMN_TIME
,
H2ColumnDefine
.
Type
.
Bigint
.
name
()));
addColumn
(
new
H2ColumnDefine
(
GCMetricTable
.
COLUMN_TIME_BUCKET
,
H2ColumnDefine
.
Type
.
Bigint
.
name
()));
addColumn
(
new
H2ColumnDefine
(
GCMetricTable
.
COLUMN_5S_TIME_BUCKET
,
H2ColumnDefine
.
Type
.
Bigint
.
name
()));
}
}
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/dao/MemoryPoolMetricEsDAO.java
浏览文件 @
03a5db8e
...
...
@@ -21,7 +21,7 @@ public class MemoryPoolMetricEsDAO extends EsDAO implements IMemoryPoolMetricDAO
@Override
public
IndexRequestBuilder
prepareBatchInsert
(
Data
data
)
{
Map
<
String
,
Object
>
source
=
new
HashMap
<>();
source
.
put
(
MemoryPoolMetricTable
.
COLUMN_
APPLICATION_
INSTANCE_ID
,
data
.
getDataInteger
(
0
));
source
.
put
(
MemoryPoolMetricTable
.
COLUMN_INSTANCE_ID
,
data
.
getDataInteger
(
0
));
source
.
put
(
MemoryPoolMetricTable
.
COLUMN_POOL_TYPE
,
data
.
getDataInteger
(
1
));
source
.
put
(
MemoryPoolMetricTable
.
COLUMN_IS_HEAP
,
data
.
getDataBoolean
(
0
));
source
.
put
(
MemoryPoolMetricTable
.
COLUMN_INIT
,
data
.
getDataLong
(
0
));
...
...
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/define/MemoryPoolMetricEsTableDefine.java
浏览文件 @
03a5db8e
...
...
@@ -26,7 +26,7 @@ public class MemoryPoolMetricEsTableDefine extends ElasticSearchTableDefine {
}
@Override
public
void
initialize
()
{
addColumn
(
new
ElasticSearchColumnDefine
(
MemoryPoolMetricTable
.
COLUMN_
APPLICATION_
INSTANCE_ID
,
ElasticSearchColumnDefine
.
Type
.
Integer
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
MemoryPoolMetricTable
.
COLUMN_INSTANCE_ID
,
ElasticSearchColumnDefine
.
Type
.
Integer
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
MemoryPoolMetricTable
.
COLUMN_POOL_TYPE
,
ElasticSearchColumnDefine
.
Type
.
Integer
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
MemoryPoolMetricTable
.
COLUMN_IS_HEAP
,
ElasticSearchColumnDefine
.
Type
.
Boolean
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
MemoryPoolMetricTable
.
COLUMN_INIT
,
ElasticSearchColumnDefine
.
Type
.
Long
.
name
()));
...
...
apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/define/MemoryPoolMetricH2TableDefine.java
浏览文件 @
03a5db8e
...
...
@@ -15,7 +15,7 @@ public class MemoryPoolMetricH2TableDefine extends H2TableDefine {
@Override
public
void
initialize
()
{
addColumn
(
new
H2ColumnDefine
(
MemoryPoolMetricTable
.
COLUMN_ID
,
H2ColumnDefine
.
Type
.
Varchar
.
name
()));
addColumn
(
new
H2ColumnDefine
(
MemoryPoolMetricTable
.
COLUMN_
APPLICATION_
INSTANCE_ID
,
H2ColumnDefine
.
Type
.
Int
.
name
()));
addColumn
(
new
H2ColumnDefine
(
MemoryPoolMetricTable
.
COLUMN_INSTANCE_ID
,
H2ColumnDefine
.
Type
.
Int
.
name
()));
addColumn
(
new
H2ColumnDefine
(
MemoryPoolMetricTable
.
COLUMN_POOL_TYPE
,
H2ColumnDefine
.
Type
.
Int
.
name
()));
addColumn
(
new
H2ColumnDefine
(
MemoryPoolMetricTable
.
COLUMN_IS_HEAP
,
H2ColumnDefine
.
Type
.
Boolean
.
name
()));
addColumn
(
new
H2ColumnDefine
(
MemoryPoolMetricTable
.
COLUMN_INIT
,
H2ColumnDefine
.
Type
.
Bigint
.
name
()));
...
...
apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ApplicationRegisterServiceHandler.java
浏览文件 @
03a5db8e
...
...
@@ -23,14 +23,18 @@ public class ApplicationRegisterServiceHandler extends ApplicationRegisterServic
@Override
public
void
register
(
Application
request
,
StreamObserver
<
ApplicationMapping
>
responseObserver
)
{
logger
.
debug
(
"register application"
);
ProtocolStringList
applicationCodes
=
request
.
getApplicationCodeList
();
ApplicationMapping
.
Builder
builder
=
ApplicationMapping
.
newBuilder
();
for
(
int
i
=
0
;
i
<
applicationCodes
.
size
();
i
++)
{
String
applicationCode
=
applicationCodes
.
get
(
i
);
int
applicationId
=
applicationIDService
.
getOrCreate
(
applicationCode
);
KeyWithIntegerValue
value
=
KeyWithIntegerValue
.
newBuilder
().
setKey
(
applicationCode
).
setValue
(
applicationId
).
build
();
ApplicationMapping
mapping
=
ApplicationMapping
.
newBuilder
().
addApplication
(
i
,
value
).
build
();
responseObserver
.
onNext
(
mapping
);
if
(
applicationId
!=
0
)
{
KeyWithIntegerValue
value
=
KeyWithIntegerValue
.
newBuilder
().
setKey
(
applicationCode
).
setValue
(
applicationId
).
build
();
builder
.
addApplication
(
value
);
}
}
responseObserver
.
onNext
(
builder
.
build
());
responseObserver
.
onCompleted
();
}
}
apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ServiceNameDiscoveryServiceHandler.java
浏览文件 @
03a5db8e
...
...
@@ -30,10 +30,13 @@ public class ServiceNameDiscoveryServiceHandler extends ServiceNameDiscoveryServ
int
applicationId
=
serviceNameElement
.
getApplicationId
();
String
serviceName
=
serviceNameElement
.
getServiceName
();
int
serviceId
=
serviceNameService
.
getOrCreate
(
applicationId
,
serviceName
);
ServiceNameMappingElement
.
Builder
mappingElement
=
ServiceNameMappingElement
.
newBuilder
();
mappingElement
.
setServiceId
(
serviceId
);
mappingElement
.
setElement
(
serviceNameElement
);
builder
.
addElements
(
mappingElement
);
if
(
serviceId
!=
0
)
{
ServiceNameMappingElement
.
Builder
mappingElement
=
ServiceNameMappingElement
.
newBuilder
();
mappingElement
.
setServiceId
(
serviceId
);
mappingElement
.
setElement
(
serviceNameElement
);
builder
.
addElements
(
mappingElement
);
}
}
responseObserver
.
onNext
(
builder
.
build
());
...
...
apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/instance/InstanceIDService.java
浏览文件 @
03a5db8e
...
...
@@ -33,7 +33,7 @@ public class InstanceIDService {
logger
.
error
(
e
.
getMessage
(),
e
);
}
}
return
application
Id
;
return
instance
Id
;
}
public
void
recover
(
int
instanceId
,
int
applicationId
,
long
registerTime
,
String
osInfo
)
{
...
...
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/GlobalTraceSpanListener.java
浏览文件 @
03a5db8e
...
...
@@ -2,11 +2,12 @@ package org.skywalking.apm.collector.agentstream.worker.global;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.skywalking.apm.collector.storage.define.global.GlobalTraceDataDefine
;
import
org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener
;
import
org.skywalking.apm.collector.agentstream.worker.segment.GlobalTraceIdsListener
;
import
org.skywalking.apm.collector.core.util.TimeBucketUtils
;
import
org.skywalking.apm.collector.core.framework.CollectorContextHelper
;
import
org.skywalking.apm.collector.core.util.Const
;
import
org.skywalking.apm.collector.core.util.TimeBucketUtils
;
import
org.skywalking.apm.collector.storage.define.global.GlobalTraceDataDefine
;
import
org.skywalking.apm.collector.stream.StreamModuleContext
;
import
org.skywalking.apm.collector.stream.StreamModuleGroupDefine
;
import
org.skywalking.apm.collector.stream.worker.WorkerInvokeException
;
...
...
@@ -35,7 +36,13 @@ public class GlobalTraceSpanListener implements FirstSpanListener, GlobalTraceId
@Override
public
void
parseGlobalTraceId
(
UniqueId
uniqueId
)
{
StringBuilder
globalTraceIdBuilder
=
new
StringBuilder
();
uniqueId
.
getIdPartsList
().
forEach
(
globalTraceIdBuilder:
:
append
);
for
(
int
i
=
0
;
i
<
uniqueId
.
getIdPartsList
().
size
();
i
++)
{
if
(
i
==
0
)
{
globalTraceIdBuilder
.
append
(
uniqueId
.
getIdPartsList
().
get
(
i
));
}
else
{
globalTraceIdBuilder
.
append
(
"."
).
append
(
uniqueId
.
getIdPartsList
().
get
(
i
));
}
}
globalTraceIds
.
add
(
globalTraceIdBuilder
.
toString
());
}
...
...
@@ -46,7 +53,7 @@ public class GlobalTraceSpanListener implements FirstSpanListener, GlobalTraceId
for
(
String
globalTraceId
:
globalTraceIds
)
{
GlobalTraceDataDefine
.
GlobalTrace
globalTrace
=
new
GlobalTraceDataDefine
.
GlobalTrace
();
globalTrace
.
setGlobalTraceId
(
globalTraceId
);
globalTrace
.
setId
(
segmentId
+
globalTraceId
);
globalTrace
.
setId
(
segmentId
+
Const
.
ID_SPLIT
+
globalTraceId
);
globalTrace
.
setSegmentId
(
segmentId
);
globalTrace
.
setTimeBucket
(
timeBucket
);
try
{
...
...
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/InstPerformanceSpanListener.java
浏览文件 @
03a5db8e
...
...
@@ -22,7 +22,7 @@ public class InstPerformanceSpanListener implements EntrySpanListener, FirstSpan
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
InstPerformanceSpanListener
.
class
);
private
int
applicationId
;
private
int
applicationI
nstanceId
;
private
int
i
nstanceId
;
private
long
cost
;
private
long
timeBucket
;
...
...
@@ -33,7 +33,7 @@ public class InstPerformanceSpanListener implements EntrySpanListener, FirstSpan
@Override
public
void
parseFirst
(
SpanObject
spanObject
,
int
applicationId
,
int
applicationInstanceId
,
String
segmentId
)
{
this
.
applicationId
=
applicationId
;
this
.
applicationI
nstanceId
=
applicationInstanceId
;
this
.
i
nstanceId
=
applicationInstanceId
;
this
.
cost
=
spanObject
.
getEndTime
()
-
spanObject
.
getStartTime
();
timeBucket
=
TimeBucketUtils
.
INSTANCE
.
getSecondTimeBucket
(
spanObject
.
getStartTime
());
}
...
...
@@ -42,13 +42,12 @@ public class InstPerformanceSpanListener implements EntrySpanListener, FirstSpan
StreamModuleContext
context
=
(
StreamModuleContext
)
CollectorContextHelper
.
INSTANCE
.
getContext
(
StreamModuleGroupDefine
.
GROUP_NAME
);
InstPerformanceDataDefine
.
InstPerformance
instPerformance
=
new
InstPerformanceDataDefine
.
InstPerformance
();
instPerformance
.
setId
(
timeBucket
+
Const
.
ID_SPLIT
+
applicationI
nstanceId
);
instPerformance
.
setId
(
timeBucket
+
Const
.
ID_SPLIT
+
i
nstanceId
);
instPerformance
.
setApplicationId
(
applicationId
);
instPerformance
.
setInstanceId
(
applicationI
nstanceId
);
instPerformance
.
setCall
Time
s
(
1
);
instPerformance
.
setInstanceId
(
i
nstanceId
);
instPerformance
.
setCalls
(
1
);
instPerformance
.
setCostTotal
(
cost
);
instPerformance
.
setTimeBucket
(
timeBucket
);
instPerformance
.
setS5TimeBucket
(
TimeBucketUtils
.
INSTANCE
.
getFiveSecondTimeBucket
(
timeBucket
));
try
{
logger
.
debug
(
"send to instance performance persistence worker, id: {}"
,
instPerformance
.
getId
());
...
...
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/dao/InstPerformanceEsDAO.java
浏览文件 @
03a5db8e
...
...
@@ -28,10 +28,9 @@ public class InstPerformanceEsDAO extends EsDAO implements IInstPerformanceDAO,
Map
<
String
,
Object
>
source
=
getResponse
.
getSource
();
data
.
setDataInteger
(
0
,
(
Integer
)
source
.
get
(
InstPerformanceTable
.
COLUMN_APPLICATION_ID
));
data
.
setDataInteger
(
1
,
(
Integer
)
source
.
get
(
InstPerformanceTable
.
COLUMN_INSTANCE_ID
));
data
.
setDataInteger
(
2
,
(
Integer
)
source
.
get
(
InstPerformanceTable
.
COLUMN_CALL
_TIME
S
));
data
.
setDataInteger
(
2
,
(
Integer
)
source
.
get
(
InstPerformanceTable
.
COLUMN_CALLS
));
data
.
setDataLong
(
0
,
((
Number
)
source
.
get
(
InstPerformanceTable
.
COLUMN_COST_TOTAL
)).
longValue
());
data
.
setDataLong
(
1
,
((
Number
)
source
.
get
(
InstPerformanceTable
.
COLUMN_TIME_BUCKET
)).
longValue
());
data
.
setDataLong
(
2
,
((
Number
)
source
.
get
(
InstPerformanceTable
.
COLUMN_5S_TIME_BUCKET
)).
longValue
());
return
data
;
}
else
{
return
null
;
...
...
@@ -42,10 +41,9 @@ public class InstPerformanceEsDAO extends EsDAO implements IInstPerformanceDAO,
Map
<
String
,
Object
>
source
=
new
HashMap
<>();
source
.
put
(
InstPerformanceTable
.
COLUMN_APPLICATION_ID
,
data
.
getDataInteger
(
0
));
source
.
put
(
InstPerformanceTable
.
COLUMN_INSTANCE_ID
,
data
.
getDataInteger
(
1
));
source
.
put
(
InstPerformanceTable
.
COLUMN_CALL
_TIME
S
,
data
.
getDataInteger
(
2
));
source
.
put
(
InstPerformanceTable
.
COLUMN_CALLS
,
data
.
getDataInteger
(
2
));
source
.
put
(
InstPerformanceTable
.
COLUMN_COST_TOTAL
,
data
.
getDataLong
(
0
));
source
.
put
(
InstPerformanceTable
.
COLUMN_TIME_BUCKET
,
data
.
getDataLong
(
1
));
source
.
put
(
InstPerformanceTable
.
COLUMN_5S_TIME_BUCKET
,
data
.
getDataLong
(
2
));
return
getClient
().
prepareIndex
(
InstPerformanceTable
.
TABLE
,
data
.
getDataString
(
0
)).
setSource
(
source
);
}
...
...
@@ -54,10 +52,9 @@ public class InstPerformanceEsDAO extends EsDAO implements IInstPerformanceDAO,
Map
<
String
,
Object
>
source
=
new
HashMap
<>();
source
.
put
(
InstPerformanceTable
.
COLUMN_APPLICATION_ID
,
data
.
getDataInteger
(
0
));
source
.
put
(
InstPerformanceTable
.
COLUMN_INSTANCE_ID
,
data
.
getDataInteger
(
1
));
source
.
put
(
InstPerformanceTable
.
COLUMN_CALL
_TIME
S
,
data
.
getDataInteger
(
2
));
source
.
put
(
InstPerformanceTable
.
COLUMN_CALLS
,
data
.
getDataInteger
(
2
));
source
.
put
(
InstPerformanceTable
.
COLUMN_COST_TOTAL
,
data
.
getDataLong
(
0
));
source
.
put
(
InstPerformanceTable
.
COLUMN_TIME_BUCKET
,
data
.
getDataLong
(
1
));
source
.
put
(
InstPerformanceTable
.
COLUMN_5S_TIME_BUCKET
,
data
.
getDataLong
(
2
));
return
getClient
().
prepareUpdate
(
InstPerformanceTable
.
TABLE
,
data
.
getDataString
(
0
)).
setDoc
(
source
);
}
...
...
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/define/InstPerformanceEsTableDefine.java
浏览文件 @
03a5db8e
...
...
@@ -28,9 +28,8 @@ public class InstPerformanceEsTableDefine extends ElasticSearchTableDefine {
@Override
public
void
initialize
()
{
addColumn
(
new
ElasticSearchColumnDefine
(
InstPerformanceTable
.
COLUMN_APPLICATION_ID
,
ElasticSearchColumnDefine
.
Type
.
Integer
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
InstPerformanceTable
.
COLUMN_INSTANCE_ID
,
ElasticSearchColumnDefine
.
Type
.
Integer
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
InstPerformanceTable
.
COLUMN_CALL
_TIME
S
,
ElasticSearchColumnDefine
.
Type
.
Integer
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
InstPerformanceTable
.
COLUMN_CALLS
,
ElasticSearchColumnDefine
.
Type
.
Integer
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
InstPerformanceTable
.
COLUMN_COST_TOTAL
,
ElasticSearchColumnDefine
.
Type
.
Long
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
InstPerformanceTable
.
COLUMN_TIME_BUCKET
,
ElasticSearchColumnDefine
.
Type
.
Long
.
name
()));
addColumn
(
new
ElasticSearchColumnDefine
(
InstPerformanceTable
.
COLUMN_5S_TIME_BUCKET
,
ElasticSearchColumnDefine
.
Type
.
Long
.
name
()));
}
}
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/define/InstPerformanceH2TableDefine.java
浏览文件 @
03a5db8e
...
...
@@ -17,9 +17,8 @@ public class InstPerformanceH2TableDefine extends H2TableDefine {
addColumn
(
new
H2ColumnDefine
(
InstPerformanceTable
.
COLUMN_ID
,
H2ColumnDefine
.
Type
.
Varchar
.
name
()));
addColumn
(
new
H2ColumnDefine
(
InstPerformanceTable
.
COLUMN_APPLICATION_ID
,
H2ColumnDefine
.
Type
.
Int
.
name
()));
addColumn
(
new
H2ColumnDefine
(
InstPerformanceTable
.
COLUMN_INSTANCE_ID
,
H2ColumnDefine
.
Type
.
Int
.
name
()));
addColumn
(
new
H2ColumnDefine
(
InstPerformanceTable
.
COLUMN_CALL
_TIME
S
,
H2ColumnDefine
.
Type
.
Int
.
name
()));
addColumn
(
new
H2ColumnDefine
(
InstPerformanceTable
.
COLUMN_CALLS
,
H2ColumnDefine
.
Type
.
Int
.
name
()));
addColumn
(
new
H2ColumnDefine
(
InstPerformanceTable
.
COLUMN_COST_TOTAL
,
H2ColumnDefine
.
Type
.
Bigint
.
name
()));
addColumn
(
new
H2ColumnDefine
(
InstPerformanceTable
.
COLUMN_TIME_BUCKET
,
H2ColumnDefine
.
Type
.
Bigint
.
name
()));
addColumn
(
new
H2ColumnDefine
(
InstPerformanceTable
.
COLUMN_5S_TIME_BUCKET
,
H2ColumnDefine
.
Type
.
Bigint
.
name
()));
}
}
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceSpanListener.java
浏览文件 @
03a5db8e
package
org.skywalking.apm.collector.agentstream.worker.noderef
;
import
java.util.
Array
List
;
import
java.util.
Linked
List
;
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
;
import
org.skywalking.apm.collector.agentstream.worker.segment.RefsListener
;
import
org.skywalking.apm.collector.core.framework.CollectorContextHelper
;
import
org.skywalking.apm.collector.core.util.CollectionUtils
;
import
org.skywalking.apm.collector.core.util.Const
;
import
org.skywalking.apm.collector.core.util.TimeBucketUtils
;
import
org.skywalking.apm.collector.storage.define.noderef.NodeReferenceDataDefine
;
...
...
@@ -23,106 +23,75 @@ import org.slf4j.LoggerFactory;
/**
* @author pengys5
*/
public
class
NodeReferenceSpanListener
implements
EntrySpanListener
,
ExitSpanListener
,
FirstSpanListener
,
RefsListener
{
public
class
NodeReferenceSpanListener
implements
EntrySpanListener
,
ExitSpanListener
,
RefsListener
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
NodeReferenceSpanListener
.
class
);
private
List
<
NodeReferenceDataDefine
.
NodeReferenceSum
>
nodeExitReferences
=
new
ArrayList
<>();
private
List
<
NodeReferenceDataDefine
.
NodeReferenceSum
>
nodeEntryReferences
=
new
ArrayList
<>();
private
List
<
NodeReferenceDataDefine
.
NodeReferenceSum
>
nodeReferences
=
new
ArrayList
<>();
private
long
timeBucket
;
private
boolean
hasReference
=
false
;
private
long
startTime
;
private
long
endTime
;
private
boolean
isError
;
private
List
<
NodeReferenceDataDefine
.
NodeReference
>
nodeReferences
=
new
LinkedList
<>();
private
List
<
NodeReferenceDataDefine
.
NodeReference
>
references
=
new
LinkedList
<>();
@Override
public
void
parseExit
(
SpanObject
spanObject
,
int
applicationId
,
int
applicationInstanceId
,
String
segmentId
)
{
NodeReferenceDataDefine
.
NodeReferenceSum
referenceSum
=
new
NodeReferenceDataDefine
.
NodeReferenceSum
();
referenceSum
.
setApplicationId
(
applicationId
);
referenceSum
.
setBehindApplicationId
(
spanObject
.
getPeerId
());
NodeReferenceDataDefine
.
NodeReference
nodeReference
=
new
NodeReferenceDataDefine
.
NodeReference
();
nodeReference
.
setFrontApplicationId
(
applicationId
);
nodeReference
.
setBehindApplicationId
(
spanObject
.
getPeerId
());
nodeReference
.
setTimeBucket
(
TimeBucketUtils
.
INSTANCE
.
getMinuteTimeBucket
(
spanObject
.
getStartTime
()));
String
id
=
String
.
valueOf
(
applicationId
);
StringBuilder
idBuilder
=
new
StringBuilder
();
idBuilder
.
append
(
nodeReference
.
getTimeBucket
()).
append
(
Const
.
ID_SPLIT
).
append
(
applicationId
);
if
(
spanObject
.
getPeerId
()
!=
0
)
{
referenceSum
.
setBehindPeer
(
Const
.
EMPTY_STRING
);
id
=
id
+
Const
.
ID_SPLIT
+
String
.
valueOf
(
spanObject
.
getPeerId
());
nodeReference
.
setBehindPeer
(
Const
.
EMPTY_STRING
);
id
Builder
.
append
(
Const
.
ID_SPLIT
).
append
(
spanObject
.
getPeerId
());
}
else
{
referenceSum
.
setBehindPeer
(
spanObject
.
getPeer
());
id
=
id
+
Const
.
ID_SPLIT
+
spanObject
.
getPeer
(
);
nodeReference
.
setBehindPeer
(
spanObject
.
getPeer
());
id
Builder
.
append
(
Const
.
ID_SPLIT
).
append
(
spanObject
.
getPeer
()
);
}
referenceSum
.
setId
(
id
);
node
ExitReferences
.
add
(
buildNodeRefSum
(
referenceSum
,
spanObject
.
getStartTime
(),
spanObject
.
getEndTime
(),
spanObject
.
getIsError
()));
nodeReference
.
setId
(
idBuilder
.
toString
()
);
node
References
.
add
(
buildNodeRefSum
(
nodeReference
,
spanObject
.
getStartTime
(),
spanObject
.
getEndTime
(),
spanObject
.
getIsError
()));
}
@Override
public
void
parseEntry
(
SpanObject
spanObject
,
int
applicationId
,
int
applicationInstanceId
,
String
segmentId
)
{
NodeReferenceDataDefine
.
NodeReferenceSum
referenceSum
=
new
NodeReferenceDataDefine
.
NodeReferenceSum
();
referenceSum
.
setApplicationId
(
Const
.
USER_ID
);
referenceSum
.
setBehindApplicationId
(
applicationId
);
referenceSum
.
setBehindPeer
(
Const
.
EMPTY_STRING
);
if
(
CollectionUtils
.
isNotEmpty
(
references
))
{
references
.
forEach
(
nodeReference
->
{
nodeReference
.
setTimeBucket
(
TimeBucketUtils
.
INSTANCE
.
getMinuteTimeBucket
(
spanObject
.
getStartTime
()));
String
idBuilder
=
String
.
valueOf
(
nodeReference
.
getTimeBucket
())
+
Const
.
ID_SPLIT
+
nodeReference
.
getFrontApplicationId
()
+
Const
.
ID_SPLIT
+
nodeReference
.
getBehindApplicationId
();
nodeReference
.
setId
(
idBuilder
);
nodeReferences
.
add
(
buildNodeRefSum
(
nodeReference
,
spanObject
.
getStartTime
(),
spanObject
.
getEndTime
(),
spanObject
.
getIsError
()));
});
}
else
{
NodeReferenceDataDefine
.
NodeReference
nodeReference
=
new
NodeReferenceDataDefine
.
NodeReference
();
nodeReference
.
setFrontApplicationId
(
Const
.
USER_ID
);
nodeReference
.
setBehindApplicationId
(
applicationId
);
nodeReference
.
setBehindPeer
(
Const
.
EMPTY_STRING
);
nodeReference
.
setTimeBucket
(
TimeBucketUtils
.
INSTANCE
.
getMinuteTimeBucket
(
spanObject
.
getStartTime
()));
String
id
=
String
.
valueOf
(
Const
.
USER_ID
)
+
Const
.
ID_SPLIT
+
String
.
valueOf
(
applicationId
);
referenceSum
.
setId
(
id
);
nodeEntryReferences
.
add
(
buildNodeRefSum
(
referenceSum
,
spanObject
.
getStartTime
(),
spanObject
.
getEndTime
(),
spanObject
.
getIsError
()));
}
String
idBuilder
=
String
.
valueOf
(
nodeReference
.
getTimeBucket
())
+
Const
.
ID_SPLIT
+
nodeReference
.
getFrontApplicationId
()
+
Const
.
ID_SPLIT
+
nodeReference
.
getBehindApplicationId
();
private
NodeReferenceDataDefine
.
NodeReferenceSum
buildNodeRefSum
(
NodeReferenceDataDefine
.
NodeReferenceSum
referenceSum
,
long
startTime
,
long
endTime
,
boolean
isError
)
{
long
cost
=
endTime
-
startTime
;
if
(
cost
<=
1000
&&
!
isError
)
{
referenceSum
.
setS1LTE
(
1
);
}
else
if
(
1000
<
cost
&&
cost
<=
3000
&&
!
isError
)
{
referenceSum
.
setS3LTE
(
1
);
}
else
if
(
3000
<
cost
&&
cost
<=
5000
&&
!
isError
)
{
referenceSum
.
setS5LTE
(
1
);
}
else
if
(
5000
<
cost
&&
!
isError
)
{
referenceSum
.
setS5GT
(
1
);
}
else
{
referenceSum
.
setError
(
1
);
nodeReference
.
setId
(
idBuilder
);
nodeReferences
.
add
(
buildNodeRefSum
(
nodeReference
,
spanObject
.
getStartTime
(),
spanObject
.
getEndTime
(),
spanObject
.
getIsError
()));
}
referenceSum
.
setSummary
(
1
);
return
referenceSum
;
}
@Override
public
void
parseFirst
(
SpanObject
spanObject
,
int
applicationId
,
int
applicationInstanceId
,
String
segmentId
)
{
timeBucket
=
TimeBucketUtils
.
INSTANCE
.
getMinuteTimeBucket
(
spanObject
.
getStartTime
());
startTime
=
spanObject
.
getStartTime
();
endTime
=
spanObject
.
getEndTime
();
isError
=
spanObject
.
getIsError
();
}
@Override
public
void
parseRef
(
TraceSegmentReference
reference
,
int
applicationId
,
int
applicationInstanceId
,
String
segmentId
)
{
int
parentApplicationId
=
InstanceCache
.
get
(
reference
.
getParentApplicationInstanceId
());
NodeReferenceDataDefine
.
NodeReference
Sum
referenceSum
=
new
NodeReferenceDataDefine
.
NodeReferenceSum
();
referenceSum
.
setApplicationId
(
parentApplicationId
);
NodeReferenceDataDefine
.
NodeReference
referenceSum
=
new
NodeReferenceDataDefine
.
NodeReference
();
referenceSum
.
set
Front
ApplicationId
(
parentApplicationId
);
referenceSum
.
setBehindApplicationId
(
applicationId
);
referenceSum
.
setBehindPeer
(
Const
.
EMPTY_STRING
);
String
id
=
String
.
valueOf
(
parentApplicationId
)
+
Const
.
ID_SPLIT
+
String
.
valueOf
(
applicationId
);
referenceSum
.
setId
(
id
);
hasReference
=
true
;
nodeReferences
.
add
(
referenceSum
);
references
.
add
(
referenceSum
);
}
@Override
public
void
build
()
{
logger
.
debug
(
"node reference summary listener build"
);
StreamModuleContext
context
=
(
StreamModuleContext
)
CollectorContextHelper
.
INSTANCE
.
getContext
(
StreamModuleGroupDefine
.
GROUP_NAME
);
if
(!
hasReference
)
{
nodeExitReferences
.
addAll
(
nodeEntryReferences
);
}
else
{
nodeReferences
.
forEach
(
referenceSum
->
{
nodeExitReferences
.
add
(
buildNodeRefSum
(
referenceSum
,
startTime
,
endTime
,
isError
));
});
}
for
(
NodeReferenceDataDefine
.
NodeReferenceSum
referenceSum
:
nodeExitReferences
)
{
referenceSum
.
setId
(
timeBucket
+
Const
.
ID_SPLIT
+
referenceSum
.
getId
());
referenceSum
.
setTimeBucket
(
timeBucket
);
for
(
NodeReferenceDataDefine
.
NodeReference
referenceSum
:
nodeReferences
)
{
try
{
logger
.
debug
(
"send to node reference summary aggregation worker, id: {}"
,
referenceSum
.
getId
());
context
.
getClusterWorkerContext
().
lookup
(
NodeReferenceAggregationWorker
.
WorkerRole
.
INSTANCE
).
tell
(
referenceSum
.
toData
());
...
...
@@ -131,4 +100,22 @@ public class NodeReferenceSpanListener implements EntrySpanListener, ExitSpanLis
}
}
}
private
NodeReferenceDataDefine
.
NodeReference
buildNodeRefSum
(
NodeReferenceDataDefine
.
NodeReference
reference
,
long
startTime
,
long
endTime
,
boolean
isError
)
{
long
cost
=
endTime
-
startTime
;
if
(
cost
<=
1000
&&
!
isError
)
{
reference
.
setS1LTE
(
1
);
}
else
if
(
1000
<
cost
&&
cost
<=
3000
&&
!
isError
)
{
reference
.
setS3LTE
(
1
);
}
else
if
(
3000
<
cost
&&
cost
<=
5000
&&
!
isError
)
{
reference
.
setS5LTE
(
1
);
}
else
if
(
5000
<
cost
&&
!
isError
)
{
reference
.
setS5GT
(
1
);
}
else
{
reference
.
setError
(
1
);
}
reference
.
setSummary
(
1
);
return
reference
;
}
}
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/register/instance/InstanceRegisterSerialWorker.java
浏览文件 @
03a5db8e
package
org.skywalking.apm.collector.agentstream.worker.register.instance
;
import
org.skywalking.apm.collector.agentstream.worker.register.IdAutoIncrement
;
import
org.skywalking.apm.collector.storage.define.register.ApplicationDataDefine
;
import
org.skywalking.apm.collector.agentstream.worker.register.instance.dao.IInstanceDAO
;
import
org.skywalking.apm.collector.storage.dao.DAOContainer
;
import
org.skywalking.apm.collector.storage.define.DataDefine
;
import
org.skywalking.apm.collector.storage.define.register.ApplicationDataDefine
;
import
org.skywalking.apm.collector.storage.define.register.InstanceDataDefine
;
import
org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorker
;
import
org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider
;
...
...
@@ -11,7 +11,6 @@ import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
import
org.skywalking.apm.collector.stream.worker.ProviderNotFoundException
;
import
org.skywalking.apm.collector.stream.worker.Role
;
import
org.skywalking.apm.collector.stream.worker.WorkerException
;
import
org.skywalking.apm.collector.storage.define.DataDefine
;
import
org.skywalking.apm.collector.stream.worker.selector.ForeverFirstSelector
;
import
org.skywalking.apm.collector.stream.worker.selector.WorkerSelector
;
import
org.slf4j.Logger
;
...
...
@@ -40,16 +39,25 @@ public class InstanceRegisterSerialWorker extends AbstractLocalAsyncWorker {
IInstanceDAO
dao
=
(
IInstanceDAO
)
DAOContainer
.
INSTANCE
.
get
(
IInstanceDAO
.
class
.
getName
());
int
instanceId
=
dao
.
getInstanceId
(
instance
.
getApplicationId
(),
instance
.
getAgentUUID
());
if
(
instanceId
==
0
)
{
int
min
=
dao
.
getMinInstanceId
();
if
(
min
==
0
)
{
// int min = dao.getMinInstanceId();
// if (min == 0) {
// instance.setId("1");
// instance.setInstanceId(1);
// } else {
// int max = dao.getMaxInstanceId();
// instanceId = IdAutoIncrement.INSTANCE.increment(min, max);
// instance.setId(String.valueOf(instanceId));
// instance.setInstanceId(instanceId);
// }
int
max
=
dao
.
getMaxInstanceId
();
if
(
max
==
0
)
{
instance
.
setId
(
"1"
);
instance
.
setInstanceId
(
1
);
}
else
{
int
max
=
dao
.
getMaxInstanceId
();
instanceId
=
IdAutoIncrement
.
INSTANCE
.
increment
(
min
,
max
);
instance
.
setId
(
String
.
valueOf
(
instanceId
));
instance
.
setInstanceId
(
instanceId
);
instance
.
setId
(
String
.
valueOf
(
max
+
1
));
instance
.
setInstanceId
(
max
+
1
);
}
dao
.
save
(
instance
);
}
}
...
...
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/register/servicename/ServiceNameRegisterSerialWorker.java
浏览文件 @
03a5db8e
...
...
@@ -2,6 +2,7 @@ package org.skywalking.apm.collector.agentstream.worker.register.servicename;
import
org.skywalking.apm.collector.agentstream.worker.register.IdAutoIncrement
;
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
;
import
org.skywalking.apm.collector.storage.define.DataDefine
;
import
org.skywalking.apm.collector.storage.define.register.ServiceNameDataDefine
;
...
...
@@ -42,8 +43,11 @@ public class ServiceNameRegisterSerialWorker extends AbstractLocalAsyncWorker {
if
(
serviceId
==
0
)
{
int
min
=
dao
.
getMinServiceId
();
if
(
min
==
0
)
{
serviceName
.
setServiceId
(
1
);
serviceName
.
setId
(
"1"
);
ServiceNameDataDefine
.
ServiceName
noneServiceName
=
new
ServiceNameDataDefine
.
ServiceName
(
"1"
,
Const
.
NONE_SERVICE_NAME
,
0
,
Const
.
NONE_SERVICE_ID
);
dao
.
save
(
noneServiceName
);
serviceName
.
setServiceId
(-
1
);
serviceName
.
setId
(
"-1"
);
}
else
{
int
max
=
dao
.
getMaxServiceId
();
serviceId
=
IdAutoIncrement
.
INSTANCE
.
increment
(
min
,
max
);
...
...
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/SegmentParse.java
浏览文件 @
03a5db8e
...
...
@@ -49,9 +49,15 @@ public class SegmentParse {
public
void
parse
(
List
<
UniqueId
>
traceIds
,
TraceSegmentObject
segmentObject
)
{
StringBuilder
segmentIdBuilder
=
new
StringBuilder
();
segmentObject
.
getTraceSegmentId
().
getIdPartsList
().
forEach
(
part
->
{
segmentIdBuilder
.
append
(
part
);
});
for
(
int
i
=
0
;
i
<
segmentObject
.
getTraceSegmentId
().
getIdPartsList
().
size
();
i
++)
{
if
(
i
==
0
)
{
segmentIdBuilder
.
append
(
segmentObject
.
getTraceSegmentId
().
getIdPartsList
().
get
(
i
));
}
else
{
segmentIdBuilder
.
append
(
"."
).
append
(
segmentObject
.
getTraceSegmentId
().
getIdPartsList
().
get
(
i
));
}
}
String
segmentId
=
segmentIdBuilder
.
toString
();
for
(
UniqueId
uniqueId
:
traceIds
)
{
...
...
@@ -88,7 +94,7 @@ public class SegmentParse {
buildSegment
(
segmentId
,
segmentObject
.
toByteArray
());
}
p
ublic
void
buildSegment
(
String
id
,
byte
[]
dataBinary
)
{
p
rivate
void
buildSegment
(
String
id
,
byte
[]
dataBinary
)
{
StreamModuleContext
context
=
(
StreamModuleContext
)
CollectorContextHelper
.
INSTANCE
.
getContext
(
StreamModuleGroupDefine
.
GROUP_NAME
);
SegmentDataDefine
.
Segment
segment
=
new
SegmentDataDefine
.
Segment
();
segment
.
setId
(
id
);
...
...
@@ -103,7 +109,7 @@ public class SegmentParse {
}
private
void
notifyListenerToBuild
()
{
spanListeners
.
forEach
(
listener
->
listener
.
build
()
);
spanListeners
.
forEach
(
SpanListener:
:
build
);
}
private
void
notifyExitListener
(
SpanObject
spanObject
,
int
applicationId
,
int
applicationInstanceId
,
...
...
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java
浏览文件 @
03a5db8e
...
...
@@ -2,14 +2,14 @@ package org.skywalking.apm.collector.agentstream.worker.segment.cost;
import
java.util.ArrayList
;
import
java.util.List
;
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.ExitSpanListener
;
import
org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener
;
import
org.skywalking.apm.collector.agentstream.worker.segment.LocalSpanListener
;
import
org.skywalking.apm.collector.storage.define.segment.SegmentCostDataDefine
;
import
org.skywalking.apm.collector.agentstream.worker.util.ExchangeMarkUtils
;
import
org.skywalking.apm.collector.core.util.TimeBucketUtils
;
import
org.skywalking.apm.collector.core.framework.CollectorContextHelper
;
import
org.skywalking.apm.collector.core.util.TimeBucketUtils
;
import
org.skywalking.apm.collector.storage.define.segment.SegmentCostDataDefine
;
import
org.skywalking.apm.collector.stream.StreamModuleContext
;
import
org.skywalking.apm.collector.stream.StreamModuleGroupDefine
;
import
org.skywalking.apm.collector.stream.worker.WorkerInvokeException
;
...
...
@@ -45,7 +45,7 @@ public class SegmentCostSpanListener implements EntrySpanListener, ExitSpanListe
if
(
spanObject
.
getOperationNameId
()
==
0
)
{
segmentCost
.
setServiceName
(
spanObject
.
getOperationName
());
}
else
{
segmentCost
.
setServiceName
(
ExchangeMarkUtils
.
INSTANCE
.
buildMarkedID
(
spanObject
.
getOperationNameId
()));
segmentCost
.
setServiceName
(
ServiceCache
.
getServiceName
(
spanObject
.
getOperationNameId
()));
}
segmentCosts
.
add
(
segmentCost
);
...
...
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java
浏览文件 @
03a5db8e
...
...
@@ -29,6 +29,7 @@ public class ServiceEntrySpanListener implements RefsListener, FirstSpanListener
private
int
applicationId
;
private
int
entryServiceId
;
private
String
entryServiceName
;
private
boolean
hasEntry
=
false
;
@Override
public
void
parseEntry
(
SpanObject
spanObject
,
int
applicationId
,
int
applicationInstanceId
,
String
segmentId
)
{
...
...
@@ -39,6 +40,7 @@ public class ServiceEntrySpanListener implements RefsListener, FirstSpanListener
}
else
{
this
.
entryServiceName
=
ServiceCache
.
getServiceName
(
this
.
entryServiceId
);
}
this
.
hasEntry
=
true
;
}
@Override
public
void
parseRef
(
TraceSegmentReference
reference
,
int
applicationId
,
int
applicationInstanceId
,
...
...
@@ -54,7 +56,7 @@ public class ServiceEntrySpanListener implements RefsListener, FirstSpanListener
@Override
public
void
build
()
{
logger
.
debug
(
"entry service listener build"
);
StreamModuleContext
context
=
(
StreamModuleContext
)
CollectorContextHelper
.
INSTANCE
.
getContext
(
StreamModuleGroupDefine
.
GROUP_NAME
);
if
(!
hasReference
)
{
if
(!
hasReference
&&
hasEntry
)
{
ServiceEntryDataDefine
.
ServiceEntry
serviceEntry
=
new
ServiceEntryDataDefine
.
ServiceEntry
();
serviceEntry
.
setId
(
applicationId
+
Const
.
ID_SPLIT
+
entryServiceName
);
serviceEntry
.
setApplicationId
(
applicationId
);
...
...
apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceSpanListener.java
浏览文件 @
03a5db8e
package
org.skywalking.apm.collector.agentstream.worker.serviceref
;
import
java.util.
Array
List
;
import
java.util.
Linked
List
;
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
;
import
org.skywalking.apm.collector.agentstream.worker.segment.RefsListener
;
import
org.skywalking.apm.collector.core.framework.CollectorContextHelper
;
...
...
@@ -15,7 +14,6 @@ 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
;
...
...
@@ -24,18 +22,18 @@ import org.slf4j.LoggerFactory;
/**
* @author pengys5
*/
public
class
ServiceReferenceSpanListener
implements
FirstSpanListener
,
EntrySpanListener
,
ExitSpanListener
,
RefsListener
{
public
class
ServiceReferenceSpanListener
implements
FirstSpanListener
,
EntrySpanListener
,
RefsListener
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ServiceReferenceSpanListener
.
class
);
private
List
<
ServiceReferenceDataDefine
.
ServiceReference
>
exitServiceRefs
=
new
ArrayList
<>();
private
List
<
TraceSegmentReference
>
referenceServices
=
new
ArrayList
<>();
private
List
<
TraceSegmentReference
>
referenceServices
=
new
LinkedList
<>();
private
int
serviceId
=
0
;
private
String
serviceName
=
""
;
private
long
startTime
=
0
;
private
long
endTime
=
0
;
private
boolean
isError
=
false
;
private
long
timeBucket
;
private
boolean
hasEntry
=
false
;
@Override
public
void
parseFirst
(
SpanObject
spanObject
,
int
applicationId
,
int
applicationInstanceId
,
String
segmentId
)
{
...
...
@@ -58,21 +56,7 @@ public class ServiceReferenceSpanListener implements FirstSpanListener, EntrySpa
startTime
=
spanObject
.
getStartTime
();
endTime
=
spanObject
.
getEndTime
();
isError
=
spanObject
.
getIsError
();
}
@Override
public
void
parseExit
(
SpanObject
spanObject
,
int
applicationId
,
int
applicationInstanceId
,
String
segmentId
)
{
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
);
}
this
.
hasEntry
=
true
;
}
private
void
calculateCost
(
ServiceReferenceDataDefine
.
ServiceReference
serviceReference
,
long
startTime
,
...
...
@@ -96,65 +80,41 @@ public class ServiceReferenceSpanListener implements FirstSpanListener, EntrySpa
@Override
public
void
build
()
{
logger
.
debug
(
"service reference listener build"
);
StreamModuleContext
context
=
(
StreamModuleContext
)
CollectorContextHelper
.
INSTANCE
.
getContext
(
StreamModuleGroupDefine
.
GROUP_NAME
);
if
(
referenceServices
.
size
()
>
0
)
{
referenceServices
.
forEach
(
reference
->
{
ServiceReferenceDataDefine
.
ServiceReference
serviceReference
=
new
ServiceReferenceDataDefine
.
ServiceReference
();
int
entryServiceId
=
reference
.
getEntryServiceId
();
String
entryServiceName
=
buildServiceName
(
reference
.
getEntryApplicationInstanceId
(),
reference
.
getEntryServiceId
(),
reference
.
getEntryServiceName
());
if
(
hasEntry
)
{
StreamModuleContext
context
=
(
StreamModuleContext
)
CollectorContextHelper
.
INSTANCE
.
getContext
(
StreamModuleGroupDefine
.
GROUP_NAME
);
int
frontServiceId
=
reference
.
getParentServiceId
();
String
frontServiceName
=
buildServiceName
(
reference
.
getParentApplicationInstanceId
(),
reference
.
getParentServiceId
(),
reference
.
getParentServiceName
());
int
behindServiceId
=
serviceId
;
String
behindServiceName
=
serviceName
;
calculateCost
(
serviceReference
,
startTime
,
endTime
,
isError
);
logger
.
debug
(
"has reference, entryServiceId: {}, entryServiceName: {}"
,
entryServiceId
,
entryServiceName
);
sendToAggregationWorker
(
context
,
serviceReference
,
entryServiceId
,
entryServiceName
,
frontServiceId
,
frontServiceName
,
behindServiceId
,
behindServiceName
);
});
}
else
{
ServiceReferenceDataDefine
.
ServiceReference
serviceReference
=
new
ServiceReferenceDataDefine
.
ServiceReference
();
int
entryServiceId
=
serviceId
;
String
entryServiceName
=
serviceName
;
int
frontServiceId
=
Const
.
NONE_SERVICE_ID
;
String
frontServiceName
=
Const
.
EMPTY_STRING
;
int
behindServiceId
=
serviceId
;
String
behindServiceName
=
serviceName
;
calculateCost
(
serviceReference
,
startTime
,
endTime
,
isError
);
sendToAggregationWorker
(
context
,
serviceReference
,
entryServiceId
,
entryServiceName
,
frontServiceId
,
frontServiceName
,
behindServiceId
,
behindServiceName
);
}
exitServiceRefs
.
forEach
(
serviceReference
->
{
if
(
referenceServices
.
size
()
>
0
)
{
referenceServices
.
forEach
(
reference
->
{
ServiceReferenceDataDefine
.
ServiceReference
serviceReference
=
new
ServiceReferenceDataDefine
.
ServiceReference
();
int
entryServiceId
=
reference
.
getEntryServiceId
();
String
entryServiceName
=
buildServiceName
(
reference
.
getEntryApplicationInstanceId
(),
reference
.
getEntryServiceId
(),
reference
.
getEntryServiceName
());
int
frontServiceId
=
reference
.
getParentServiceId
();
String
frontServiceName
=
buildServiceName
(
reference
.
getParentApplicationInstanceId
(),
reference
.
getParentServiceId
(),
reference
.
getParentServiceName
());
int
behindServiceId
=
serviceReference
.
getBehindServiceId
();
String
behindServiceName
=
serviceReference
.
getBehindServiceName
();
int
behindServiceId
=
serviceId
;
String
behindServiceName
=
serviceName
;
calculateCost
(
serviceReference
,
startTime
,
endTime
,
isError
);
logger
.
debug
(
"has reference, entryServiceId: {}, entryServiceName: {}"
,
entryServiceId
,
entryServiceName
);
sendToAggregationWorker
(
context
,
serviceReference
,
entryServiceId
,
entryServiceName
,
frontServiceId
,
frontServiceName
,
behindServiceId
,
behindServiceName
);
});
}
else
{
ServiceReferenceDataDefine
.
ServiceReference
serviceReference
=
new
ServiceReferenceDataDefine
.
ServiceReference
();
int
entryServiceId
=
serviceId
;
String
entryServiceName
=
serviceName
;
int
frontServiceId
=
serviceId
;
String
frontServiceName
=
serviceName
;
int
frontServiceId
=
Const
.
NONE_SERVICE_ID
;
String
frontServiceName
=
Const
.
EMPTY_STRING
;
int
behindServiceId
=
serviceReference
.
getBehindServiceId
();
String
behindServiceName
=
serviceReference
.
getBehindServiceName
();
int
behindServiceId
=
serviceId
;
String
behindServiceName
=
serviceName
;
calculateCost
(
serviceReference
,
startTime
,
endTime
,
isError
);
sendToAggregationWorker
(
context
,
serviceReference
,
entryServiceId
,
entryServiceName
,
frontServiceId
,
frontServiceName
,
behindServiceId
,
behindServiceName
);
}
}
);
}
}
private
void
sendToAggregationWorker
(
StreamModuleContext
context
,
...
...
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/ApplicationRegister.java
0 → 100644
浏览文件 @
03a5db8e
package
org.skywalking.apm.collector.agentstream.mock.grpc
;
import
io.grpc.ManagedChannel
;
import
org.skywalking.apm.network.proto.Application
;
import
org.skywalking.apm.network.proto.ApplicationMapping
;
import
org.skywalking.apm.network.proto.ApplicationRegisterServiceGrpc
;
/**
* @author pengys5
*/
public
class
ApplicationRegister
{
public
static
int
register
(
ManagedChannel
channel
,
String
applicationCode
)
{
ApplicationRegisterServiceGrpc
.
ApplicationRegisterServiceBlockingStub
stub
=
ApplicationRegisterServiceGrpc
.
newBlockingStub
(
channel
);
Application
application
=
Application
.
newBuilder
().
addApplicationCode
(
applicationCode
).
build
();
ApplicationMapping
mapping
=
stub
.
register
(
application
);
int
applicationId
=
mapping
.
getApplication
(
0
).
getValue
();
try
{
Thread
.
sleep
(
10
);
}
catch
(
InterruptedException
e
)
{
}
return
applicationId
;
}
}
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/GrpcSegmentPost.java
浏览文件 @
03a5db8e
...
...
@@ -8,21 +8,10 @@ import java.util.concurrent.TimeUnit;
import
java.util.concurrent.atomic.AtomicLong
;
import
org.junit.Test
;
import
org.skywalking.apm.collector.core.util.TimeBucketUtils
;
import
org.skywalking.apm.network.proto.Application
;
import
org.skywalking.apm.network.proto.ApplicationInstance
;
import
org.skywalking.apm.network.proto.ApplicationInstanceMapping
;
import
org.skywalking.apm.network.proto.ApplicationMapping
;
import
org.skywalking.apm.network.proto.ApplicationRegisterServiceGrpc
;
import
org.skywalking.apm.network.proto.Downstream
;
import
org.skywalking.apm.network.proto.InstanceDiscoveryServiceGrpc
;
import
org.skywalking.apm.network.proto.KeyWithStringValue
;
import
org.skywalking.apm.network.proto.LogMessage
;
import
org.skywalking.apm.network.proto.OSInfo
;
import
org.skywalking.apm.network.proto.RefType
;
import
org.skywalking.apm.network.proto.ServiceNameCollection
;
import
org.skywalking.apm.network.proto.ServiceNameDiscoveryServiceGrpc
;
import
org.skywalking.apm.network.proto.ServiceNameElement
;
import
org.skywalking.apm.network.proto.ServiceNameMappingCollection
;
import
org.skywalking.apm.network.proto.SpanLayer
;
import
org.skywalking.apm.network.proto.SpanObject
;
import
org.skywalking.apm.network.proto.SpanType
;
...
...
@@ -58,28 +47,28 @@ public class GrpcSegmentPost {
int
providerEntryServiceId
=
0
;
while
(
consumerApplicationId
==
0
)
{
consumerApplicationId
=
registerApplication
(
channel
,
"consumer"
);
consumerApplicationId
=
ApplicationRegister
.
register
(
channel
,
"consumer"
);
}
while
(
consumerExitApplicationId
==
0
)
{
consumerExitApplicationId
=
registerApplication
(
channel
,
"172.25.0.4:20880"
);
consumerExitApplicationId
=
ApplicationRegister
.
register
(
channel
,
"172.25.0.4:20880"
);
}
while
(
providerApplicationId
==
0
)
{
providerApplicationId
=
registerApplication
(
channel
,
"provider"
);
providerApplicationId
=
ApplicationRegister
.
register
(
channel
,
"provider"
);
}
while
(
consumerInstanceId
==
0
)
{
consumerInstanceId
=
registerInstanceId
(
channel
,
"ConsumerUUID"
,
consumerApplicationId
,
"consumer_host_name"
,
1
);
consumerInstanceId
=
InstanceRegister
.
register
(
channel
,
"ConsumerUUID"
,
consumerApplicationId
,
"consumer_host_name"
,
1
);
}
while
(
providerInstanceId
==
0
)
{
providerInstanceId
=
registerInstanceId
(
channel
,
"ProviderUUID"
,
providerApplicationId
,
"provider_host_name"
,
2
);
providerInstanceId
=
InstanceRegister
.
register
(
channel
,
"ProviderUUID"
,
providerApplicationId
,
"provider_host_name"
,
2
);
}
while
(
consumerEntryServiceId
==
0
)
{
consumerEntryServiceId
=
registerServiceId
(
channel
,
consumerApplicationId
,
"/dubbox-case/case/dubbox-rest"
);
consumerEntryServiceId
=
ServiceRegister
.
register
(
channel
,
consumerApplicationId
,
"/dubbox-case/case/dubbox-rest"
);
}
while
(
consumerExitServiceId
==
0
)
{
consumerExitServiceId
=
registerServiceId
(
channel
,
consumerApplicationId
,
"org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"
);
consumerExitServiceId
=
ServiceRegister
.
register
(
channel
,
consumerApplicationId
,
"org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"
);
}
while
(
providerEntryServiceId
==
0
)
{
providerEntryServiceId
=
registerServiceId
(
channel
,
providerApplicationId
,
"org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"
);
providerEntryServiceId
=
ServiceRegister
.
register
(
channel
,
providerApplicationId
,
"org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"
);
}
Ids
ids
=
new
Ids
();
...
...
@@ -121,64 +110,6 @@ public class GrpcSegmentPost {
}
}
private
int
registerApplication
(
ManagedChannel
channel
,
String
applicationCode
)
{
ApplicationRegisterServiceGrpc
.
ApplicationRegisterServiceBlockingStub
stub
=
ApplicationRegisterServiceGrpc
.
newBlockingStub
(
channel
);
Application
application
=
Application
.
newBuilder
().
addApplicationCode
(
applicationCode
).
build
();
ApplicationMapping
mapping
=
stub
.
register
(
application
);
int
applicationId
=
mapping
.
getApplication
(
0
).
getValue
();
try
{
Thread
.
sleep
(
10
);
}
catch
(
InterruptedException
e
)
{
}
return
applicationId
;
}
private
int
registerInstanceId
(
ManagedChannel
channel
,
String
agentUUId
,
Integer
applicationId
,
String
hostName
,
int
processNo
)
{
InstanceDiscoveryServiceGrpc
.
InstanceDiscoveryServiceBlockingStub
stub
=
InstanceDiscoveryServiceGrpc
.
newBlockingStub
(
channel
);
ApplicationInstance
.
Builder
instance
=
ApplicationInstance
.
newBuilder
();
instance
.
setApplicationId
(
applicationId
);
instance
.
setRegisterTime
(
System
.
currentTimeMillis
());
instance
.
setAgentUUID
(
agentUUId
);
OSInfo
.
Builder
osInfo
=
OSInfo
.
newBuilder
();
osInfo
.
setHostname
(
hostName
);
osInfo
.
setOsName
(
"Linux"
);
osInfo
.
setProcessNo
(
processNo
);
osInfo
.
addIpv4S
(
"10.0.0.1"
);
osInfo
.
addIpv4S
(
"10.0.0.2"
);
instance
.
setOsinfo
(
osInfo
.
build
());
ApplicationInstanceMapping
mapping
=
stub
.
register
(
instance
.
build
());
int
instanceId
=
mapping
.
getApplicationInstanceId
();
try
{
Thread
.
sleep
(
10
);
}
catch
(
InterruptedException
e
)
{
}
return
instanceId
;
}
private
int
registerServiceId
(
ManagedChannel
channel
,
int
applicationId
,
String
serviceName
)
{
ServiceNameDiscoveryServiceGrpc
.
ServiceNameDiscoveryServiceBlockingStub
stub
=
ServiceNameDiscoveryServiceGrpc
.
newBlockingStub
(
channel
);
ServiceNameCollection
.
Builder
collection
=
ServiceNameCollection
.
newBuilder
();
ServiceNameElement
.
Builder
element
=
ServiceNameElement
.
newBuilder
();
element
.
setApplicationId
(
applicationId
);
element
.
setServiceName
(
serviceName
);
collection
.
addElements
(
element
);
ServiceNameMappingCollection
mappingCollection
=
stub
.
discovery
(
collection
.
build
());
int
serviceId
=
mappingCollection
.
getElements
(
0
).
getServiceId
();
try
{
Thread
.
sleep
(
10
);
}
catch
(
InterruptedException
e
)
{
}
return
serviceId
;
}
class
BuildNewSegment
implements
Runnable
{
private
final
ManagedChannel
segmentChannel
;
private
final
Ids
ids
;
...
...
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/InstanceRegister.java
0 → 100644
浏览文件 @
03a5db8e
package
org.skywalking.apm.collector.agentstream.mock.grpc
;
import
io.grpc.ManagedChannel
;
import
org.skywalking.apm.network.proto.ApplicationInstance
;
import
org.skywalking.apm.network.proto.ApplicationInstanceMapping
;
import
org.skywalking.apm.network.proto.InstanceDiscoveryServiceGrpc
;
import
org.skywalking.apm.network.proto.OSInfo
;
/**
* @author pengys5
*/
public
class
InstanceRegister
{
public
static
int
register
(
ManagedChannel
channel
,
String
agentUUId
,
Integer
applicationId
,
String
hostName
,
int
processNo
)
{
InstanceDiscoveryServiceGrpc
.
InstanceDiscoveryServiceBlockingStub
stub
=
InstanceDiscoveryServiceGrpc
.
newBlockingStub
(
channel
);
ApplicationInstance
.
Builder
instance
=
ApplicationInstance
.
newBuilder
();
instance
.
setApplicationId
(
applicationId
);
instance
.
setRegisterTime
(
System
.
currentTimeMillis
());
instance
.
setAgentUUID
(
agentUUId
);
OSInfo
.
Builder
osInfo
=
OSInfo
.
newBuilder
();
osInfo
.
setHostname
(
hostName
);
osInfo
.
setOsName
(
"Linux"
);
osInfo
.
setProcessNo
(
processNo
);
osInfo
.
addIpv4S
(
"10.0.0.1"
);
osInfo
.
addIpv4S
(
"10.0.0.2"
);
instance
.
setOsinfo
(
osInfo
.
build
());
ApplicationInstanceMapping
mapping
=
stub
.
register
(
instance
.
build
());
int
instanceId
=
mapping
.
getApplicationInstanceId
();
try
{
Thread
.
sleep
(
10
);
}
catch
(
InterruptedException
e
)
{
}
return
instanceId
;
}
}
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/ServiceRegister.java
0 → 100644
浏览文件 @
03a5db8e
package
org.skywalking.apm.collector.agentstream.mock.grpc
;
import
io.grpc.ManagedChannel
;
import
org.skywalking.apm.network.proto.ServiceNameCollection
;
import
org.skywalking.apm.network.proto.ServiceNameDiscoveryServiceGrpc
;
import
org.skywalking.apm.network.proto.ServiceNameElement
;
import
org.skywalking.apm.network.proto.ServiceNameMappingCollection
;
/**
* @author pengys5
*/
public
class
ServiceRegister
{
public
static
int
register
(
ManagedChannel
channel
,
int
applicationId
,
String
serviceName
)
{
ServiceNameDiscoveryServiceGrpc
.
ServiceNameDiscoveryServiceBlockingStub
stub
=
ServiceNameDiscoveryServiceGrpc
.
newBlockingStub
(
channel
);
ServiceNameCollection
.
Builder
collection
=
ServiceNameCollection
.
newBuilder
();
ServiceNameElement
.
Builder
element
=
ServiceNameElement
.
newBuilder
();
element
.
setApplicationId
(
applicationId
);
element
.
setServiceName
(
serviceName
);
collection
.
addElements
(
element
);
ServiceNameMappingCollection
mappingCollection
=
stub
.
discovery
(
collection
.
build
());
int
serviceId
=
mappingCollection
.
getElements
(
0
).
getServiceId
();
try
{
Thread
.
sleep
(
10
);
}
catch
(
InterruptedException
e
)
{
}
return
serviceId
;
}
}
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleHasEntryHasExitNoRefSpan.java
0 → 100644
浏览文件 @
03a5db8e
package
org.skywalking.apm.collector.agentstream.mock.grpc
;
import
io.grpc.ManagedChannel
;
import
io.grpc.ManagedChannelBuilder
;
import
io.grpc.stub.StreamObserver
;
import
org.skywalking.apm.network.proto.Downstream
;
import
org.skywalking.apm.network.proto.SpanLayer
;
import
org.skywalking.apm.network.proto.SpanObject
;
import
org.skywalking.apm.network.proto.SpanType
;
import
org.skywalking.apm.network.proto.TraceSegmentObject
;
import
org.skywalking.apm.network.proto.TraceSegmentServiceGrpc
;
import
org.skywalking.apm.network.proto.UniqueId
;
import
org.skywalking.apm.network.proto.UpstreamSegment
;
import
org.skywalking.apm.network.trace.component.ComponentsDefine
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
/**
* @author pengys5
*/
public
class
SingleHasEntryHasExitNoRefSpan
{
public
static
void
main
(
String
[]
args
)
{
Post
post
=
new
Post
();
post
.
send
();
try
{
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
}
}
static
class
Post
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
Post
.
class
);
public
void
send
()
{
ManagedChannel
channel
=
ManagedChannelBuilder
.
forAddress
(
"localhost"
,
11800
).
maxInboundMessageSize
(
1024
*
1024
*
50
).
usePlaintext
(
true
).
build
();
int
applicationId
=
0
;
int
instanceId
=
0
;
int
entryServiceId
=
0
;
while
(
applicationId
==
0
)
{
applicationId
=
ApplicationRegister
.
register
(
channel
,
"consumer"
);
}
while
(
instanceId
==
0
)
{
instanceId
=
InstanceRegister
.
register
(
channel
,
"ConsumerUUID"
,
applicationId
,
"consumer_host_name"
,
1
);
}
while
(
entryServiceId
==
0
)
{
entryServiceId
=
ServiceRegister
.
register
(
channel
,
applicationId
,
"/dubbox-case/case/dubbox-rest"
);
}
TraceSegmentServiceGrpc
.
TraceSegmentServiceStub
stub
=
TraceSegmentServiceGrpc
.
newStub
(
channel
);
StreamObserver
<
UpstreamSegment
>
streamObserver
=
stub
.
collect
(
new
StreamObserver
<
Downstream
>()
{
@Override
public
void
onNext
(
Downstream
downstream
)
{
}
@Override
public
void
onError
(
Throwable
throwable
)
{
logger
.
error
(
throwable
.
getMessage
(),
throwable
);
}
@Override
public
void
onCompleted
()
{
}
});
long
now
=
System
.
currentTimeMillis
();
int
id
=
1
;
UniqueId
.
Builder
builder
=
UniqueId
.
newBuilder
();
builder
.
addIdParts
(
id
);
builder
.
addIdParts
(
id
);
builder
.
addIdParts
(
id
);
UniqueId
segmentId
=
builder
.
build
();
UpstreamSegment
.
Builder
upstream
=
UpstreamSegment
.
newBuilder
();
upstream
.
addGlobalTraceIds
(
segmentId
);
TraceSegmentObject
.
Builder
segmentBuilder
=
TraceSegmentObject
.
newBuilder
();
segmentBuilder
.
setApplicationId
(
applicationId
);
segmentBuilder
.
setApplicationInstanceId
(
instanceId
);
segmentBuilder
.
setTraceSegmentId
(
segmentId
);
SpanObject
.
Builder
entrySpan
=
SpanObject
.
newBuilder
();
entrySpan
.
setSpanId
(
0
);
entrySpan
.
setSpanType
(
SpanType
.
Entry
);
entrySpan
.
setSpanLayer
(
SpanLayer
.
Http
);
entrySpan
.
setParentSpanId
(-
1
);
entrySpan
.
setStartTime
(
now
);
entrySpan
.
setEndTime
(
now
+
3000
);
entrySpan
.
setComponentId
(
ComponentsDefine
.
TOMCAT
.
getId
());
entrySpan
.
setOperationNameId
(
entryServiceId
);
entrySpan
.
setIsError
(
false
);
segmentBuilder
.
addSpans
(
entrySpan
);
SpanObject
.
Builder
exitSpan
=
SpanObject
.
newBuilder
();
exitSpan
.
setSpanId
(
1
);
exitSpan
.
setSpanType
(
SpanType
.
Exit
);
exitSpan
.
setSpanLayer
(
SpanLayer
.
Database
);
exitSpan
.
setParentSpanId
(
0
);
exitSpan
.
setStartTime
(
now
);
exitSpan
.
setEndTime
(
now
+
3000
);
exitSpan
.
setComponentId
(
ComponentsDefine
.
MONGODB
.
getId
());
exitSpan
.
setOperationNameId
(
entryServiceId
);
exitSpan
.
setIsError
(
false
);
exitSpan
.
setPeer
(
"localhost:8888"
);
segmentBuilder
.
addSpans
(
exitSpan
);
upstream
.
setSegment
(
segmentBuilder
.
build
().
toByteString
());
streamObserver
.
onNext
(
upstream
.
build
());
streamObserver
.
onCompleted
();
}
}
}
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleHasEntryNoExitHasRefSpan.java
0 → 100644
浏览文件 @
03a5db8e
package
org.skywalking.apm.collector.agentstream.mock.grpc
;
import
io.grpc.ManagedChannel
;
import
io.grpc.ManagedChannelBuilder
;
import
io.grpc.stub.StreamObserver
;
import
org.skywalking.apm.network.proto.Downstream
;
import
org.skywalking.apm.network.proto.RefType
;
import
org.skywalking.apm.network.proto.SpanLayer
;
import
org.skywalking.apm.network.proto.SpanObject
;
import
org.skywalking.apm.network.proto.SpanType
;
import
org.skywalking.apm.network.proto.TraceSegmentObject
;
import
org.skywalking.apm.network.proto.TraceSegmentReference
;
import
org.skywalking.apm.network.proto.TraceSegmentServiceGrpc
;
import
org.skywalking.apm.network.proto.UniqueId
;
import
org.skywalking.apm.network.proto.UpstreamSegment
;
import
org.skywalking.apm.network.trace.component.ComponentsDefine
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
/**
* @author pengys5
*/
public
class
SingleHasEntryNoExitHasRefSpan
{
public
static
void
main
(
String
[]
args
)
{
Post
post
=
new
Post
();
post
.
send
();
try
{
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
}
}
static
class
Post
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
Post
.
class
);
public
void
send
()
{
ManagedChannel
channel
=
ManagedChannelBuilder
.
forAddress
(
"localhost"
,
11800
).
maxInboundMessageSize
(
1024
*
1024
*
50
).
usePlaintext
(
true
).
build
();
int
consumerApplicationId
=
0
;
int
providerApplicationId
=
0
;
int
consumerInstanceId
=
0
;
int
providerInstanceId
=
0
;
int
consumerEntryServiceId
=
0
;
int
consumerExitServiceId
=
0
;
int
consumerExitApplicationId
=
0
;
int
providerEntryServiceId
=
0
;
while
(
consumerApplicationId
==
0
)
{
consumerApplicationId
=
ApplicationRegister
.
register
(
channel
,
"consumer"
);
}
while
(
consumerExitApplicationId
==
0
)
{
consumerExitApplicationId
=
ApplicationRegister
.
register
(
channel
,
"172.25.0.4:20880"
);
}
while
(
providerApplicationId
==
0
)
{
providerApplicationId
=
ApplicationRegister
.
register
(
channel
,
"provider"
);
}
while
(
consumerInstanceId
==
0
)
{
consumerInstanceId
=
InstanceRegister
.
register
(
channel
,
"ConsumerUUID"
,
consumerApplicationId
,
"consumer_host_name"
,
1
);
}
while
(
providerInstanceId
==
0
)
{
providerInstanceId
=
InstanceRegister
.
register
(
channel
,
"ProviderUUID"
,
providerApplicationId
,
"provider_host_name"
,
2
);
}
while
(
consumerEntryServiceId
==
0
)
{
consumerEntryServiceId
=
ServiceRegister
.
register
(
channel
,
consumerApplicationId
,
"/dubbox-case/case/dubbox-rest"
);
}
while
(
consumerExitServiceId
==
0
)
{
consumerExitServiceId
=
ServiceRegister
.
register
(
channel
,
consumerApplicationId
,
"org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"
);
}
while
(
providerEntryServiceId
==
0
)
{
providerEntryServiceId
=
ServiceRegister
.
register
(
channel
,
providerApplicationId
,
"org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"
);
}
TraceSegmentServiceGrpc
.
TraceSegmentServiceStub
stub
=
TraceSegmentServiceGrpc
.
newStub
(
channel
);
StreamObserver
<
UpstreamSegment
>
streamObserver
=
stub
.
collect
(
new
StreamObserver
<
Downstream
>()
{
@Override
public
void
onNext
(
Downstream
downstream
)
{
}
@Override
public
void
onError
(
Throwable
throwable
)
{
logger
.
error
(
throwable
.
getMessage
(),
throwable
);
}
@Override
public
void
onCompleted
()
{
}
});
long
now
=
System
.
currentTimeMillis
();
int
id
=
1
;
UniqueId
.
Builder
builder
=
UniqueId
.
newBuilder
();
builder
.
addIdParts
(
id
);
builder
.
addIdParts
(
id
);
builder
.
addIdParts
(
id
);
UniqueId
segmentId
=
builder
.
build
();
UpstreamSegment
.
Builder
upstream
=
UpstreamSegment
.
newBuilder
();
upstream
.
addGlobalTraceIds
(
segmentId
);
TraceSegmentObject
.
Builder
segmentBuilder
=
TraceSegmentObject
.
newBuilder
();
segmentBuilder
.
setApplicationId
(
consumerApplicationId
);
segmentBuilder
.
setApplicationInstanceId
(
consumerInstanceId
);
segmentBuilder
.
setTraceSegmentId
(
segmentId
);
TraceSegmentReference
.
Builder
referenceBuilder
=
TraceSegmentReference
.
newBuilder
();
referenceBuilder
.
setEntryApplicationInstanceId
(
providerInstanceId
);
referenceBuilder
.
setEntryServiceName
(
"/rest/test"
);
referenceBuilder
.
setParentApplicationInstanceId
(
providerInstanceId
);
referenceBuilder
.
setParentServiceName
(
"/rest/test"
);
referenceBuilder
.
setRefType
(
RefType
.
CrossProcess
);
referenceBuilder
.
setNetworkAddress
(
"localhost:8080"
);
segmentBuilder
.
addRefs
(
referenceBuilder
);
SpanObject
.
Builder
entrySpan
=
SpanObject
.
newBuilder
();
entrySpan
.
setSpanId
(
0
);
entrySpan
.
setSpanType
(
SpanType
.
Entry
);
entrySpan
.
setSpanLayer
(
SpanLayer
.
Http
);
entrySpan
.
setParentSpanId
(-
1
);
entrySpan
.
setStartTime
(
now
);
entrySpan
.
setEndTime
(
now
+
3000
);
entrySpan
.
setComponentId
(
ComponentsDefine
.
TOMCAT
.
getId
());
entrySpan
.
setOperationNameId
(
consumerEntryServiceId
);
entrySpan
.
setIsError
(
false
);
segmentBuilder
.
addSpans
(
entrySpan
);
upstream
.
setSegment
(
segmentBuilder
.
build
().
toByteString
());
streamObserver
.
onNext
(
upstream
.
build
());
streamObserver
.
onCompleted
();
}
}
}
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleHasEntryNoExitNoRefSpan.java
0 → 100644
浏览文件 @
03a5db8e
package
org.skywalking.apm.collector.agentstream.mock.grpc
;
import
io.grpc.ManagedChannel
;
import
io.grpc.ManagedChannelBuilder
;
import
io.grpc.stub.StreamObserver
;
import
org.skywalking.apm.network.proto.Downstream
;
import
org.skywalking.apm.network.proto.SpanLayer
;
import
org.skywalking.apm.network.proto.SpanObject
;
import
org.skywalking.apm.network.proto.SpanType
;
import
org.skywalking.apm.network.proto.TraceSegmentObject
;
import
org.skywalking.apm.network.proto.TraceSegmentServiceGrpc
;
import
org.skywalking.apm.network.proto.UniqueId
;
import
org.skywalking.apm.network.proto.UpstreamSegment
;
import
org.skywalking.apm.network.trace.component.ComponentsDefine
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
/**
* @author pengys5
*/
public
class
SingleHasEntryNoExitNoRefSpan
{
public
static
void
main
(
String
[]
args
)
{
Post
post
=
new
Post
();
post
.
send
();
try
{
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
}
}
static
class
Post
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
Post
.
class
);
public
void
send
()
{
ManagedChannel
channel
=
ManagedChannelBuilder
.
forAddress
(
"localhost"
,
11800
).
maxInboundMessageSize
(
1024
*
1024
*
50
).
usePlaintext
(
true
).
build
();
int
applicationId
=
0
;
int
instanceId
=
0
;
int
entryServiceId
=
0
;
while
(
applicationId
==
0
)
{
applicationId
=
ApplicationRegister
.
register
(
channel
,
"consumer"
);
}
while
(
instanceId
==
0
)
{
instanceId
=
InstanceRegister
.
register
(
channel
,
"ConsumerUUID"
,
applicationId
,
"consumer_host_name"
,
1
);
}
while
(
entryServiceId
==
0
)
{
entryServiceId
=
ServiceRegister
.
register
(
channel
,
applicationId
,
"/dubbox-case/case/dubbox-rest"
);
}
TraceSegmentServiceGrpc
.
TraceSegmentServiceStub
stub
=
TraceSegmentServiceGrpc
.
newStub
(
channel
);
StreamObserver
<
UpstreamSegment
>
streamObserver
=
stub
.
collect
(
new
StreamObserver
<
Downstream
>()
{
@Override
public
void
onNext
(
Downstream
downstream
)
{
}
@Override
public
void
onError
(
Throwable
throwable
)
{
logger
.
error
(
throwable
.
getMessage
(),
throwable
);
}
@Override
public
void
onCompleted
()
{
}
});
long
now
=
System
.
currentTimeMillis
();
int
id
=
1
;
UniqueId
.
Builder
builder
=
UniqueId
.
newBuilder
();
builder
.
addIdParts
(
id
);
builder
.
addIdParts
(
id
);
builder
.
addIdParts
(
id
);
UniqueId
segmentId
=
builder
.
build
();
UpstreamSegment
.
Builder
upstream
=
UpstreamSegment
.
newBuilder
();
upstream
.
addGlobalTraceIds
(
segmentId
);
TraceSegmentObject
.
Builder
segmentBuilder
=
TraceSegmentObject
.
newBuilder
();
segmentBuilder
.
setApplicationId
(
applicationId
);
segmentBuilder
.
setApplicationInstanceId
(
instanceId
);
segmentBuilder
.
setTraceSegmentId
(
segmentId
);
SpanObject
.
Builder
entrySpan
=
SpanObject
.
newBuilder
();
entrySpan
.
setSpanId
(
0
);
entrySpan
.
setSpanType
(
SpanType
.
Entry
);
entrySpan
.
setSpanLayer
(
SpanLayer
.
Http
);
entrySpan
.
setParentSpanId
(-
1
);
entrySpan
.
setStartTime
(
now
);
entrySpan
.
setEndTime
(
now
+
3000
);
entrySpan
.
setComponentId
(
ComponentsDefine
.
TOMCAT
.
getId
());
entrySpan
.
setOperationNameId
(
entryServiceId
);
entrySpan
.
setIsError
(
false
);
segmentBuilder
.
addSpans
(
entrySpan
);
upstream
.
setSegment
(
segmentBuilder
.
build
().
toByteString
());
streamObserver
.
onNext
(
upstream
.
build
());
streamObserver
.
onCompleted
();
}
}
}
apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleNoEntryHasExitNoRefSpan.java
0 → 100644
浏览文件 @
03a5db8e
package
org.skywalking.apm.collector.agentstream.mock.grpc
;
import
io.grpc.ManagedChannel
;
import
io.grpc.ManagedChannelBuilder
;
import
io.grpc.stub.StreamObserver
;
import
org.skywalking.apm.network.proto.Downstream
;
import
org.skywalking.apm.network.proto.SpanLayer
;
import
org.skywalking.apm.network.proto.SpanObject
;
import
org.skywalking.apm.network.proto.SpanType
;
import
org.skywalking.apm.network.proto.TraceSegmentObject
;
import
org.skywalking.apm.network.proto.TraceSegmentServiceGrpc
;
import
org.skywalking.apm.network.proto.UniqueId
;
import
org.skywalking.apm.network.proto.UpstreamSegment
;
import
org.skywalking.apm.network.trace.component.ComponentsDefine
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
/**
* @author pengys5
*/
public
class
SingleNoEntryHasExitNoRefSpan
{
public
static
void
main
(
String
[]
args
)
{
Post
post
=
new
Post
();
post
.
send
();
try
{
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
}
}
static
class
Post
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
Post
.
class
);
public
void
send
()
{
ManagedChannel
channel
=
ManagedChannelBuilder
.
forAddress
(
"localhost"
,
11800
).
maxInboundMessageSize
(
1024
*
1024
*
50
).
usePlaintext
(
true
).
build
();
int
applicationId
=
0
;
int
instanceId
=
0
;
int
entryServiceId
=
0
;
while
(
applicationId
==
0
)
{
applicationId
=
ApplicationRegister
.
register
(
channel
,
"consumer"
);
}
while
(
instanceId
==
0
)
{
instanceId
=
InstanceRegister
.
register
(
channel
,
"ConsumerUUID"
,
applicationId
,
"consumer_host_name"
,
1
);
}
while
(
entryServiceId
==
0
)
{
entryServiceId
=
ServiceRegister
.
register
(
channel
,
applicationId
,
"/dubbox-case/case/dubbox-rest"
);
}
TraceSegmentServiceGrpc
.
TraceSegmentServiceStub
stub
=
TraceSegmentServiceGrpc
.
newStub
(
channel
);
StreamObserver
<
UpstreamSegment
>
streamObserver
=
stub
.
collect
(
new
StreamObserver
<
Downstream
>()
{
@Override
public
void
onNext
(
Downstream
downstream
)
{
}
@Override
public
void
onError
(
Throwable
throwable
)
{
logger
.
error
(
throwable
.
getMessage
(),
throwable
);
}
@Override
public
void
onCompleted
()
{
}
});
long
now
=
System
.
currentTimeMillis
();
int
id
=
1
;
UniqueId
.
Builder
builder
=
UniqueId
.
newBuilder
();
builder
.
addIdParts
(
id
);
builder
.
addIdParts
(
id
);
builder
.
addIdParts
(
id
);
UniqueId
segmentId
=
builder
.
build
();
UpstreamSegment
.
Builder
upstream
=
UpstreamSegment
.
newBuilder
();
upstream
.
addGlobalTraceIds
(
segmentId
);
TraceSegmentObject
.
Builder
segmentBuilder
=
TraceSegmentObject
.
newBuilder
();
segmentBuilder
.
setApplicationId
(
applicationId
);
segmentBuilder
.
setApplicationInstanceId
(
instanceId
);
segmentBuilder
.
setTraceSegmentId
(
segmentId
);
SpanObject
.
Builder
exitSpan
=
SpanObject
.
newBuilder
();
exitSpan
.
setSpanId
(
0
);
exitSpan
.
setSpanType
(
SpanType
.
Exit
);
exitSpan
.
setSpanLayer
(
SpanLayer
.
Database
);
exitSpan
.
setParentSpanId
(-
1
);
exitSpan
.
setStartTime
(
now
);
exitSpan
.
setEndTime
(
now
+
3000
);
exitSpan
.
setComponentId
(
ComponentsDefine
.
MONGODB
.
getId
());
exitSpan
.
setOperationNameId
(
entryServiceId
);
exitSpan
.
setIsError
(
false
);
exitSpan
.
setPeer
(
"localhost:8888"
);
segmentBuilder
.
addSpans
(
exitSpan
);
upstream
.
setSegment
(
segmentBuilder
.
build
().
toByteString
());
streamObserver
.
onNext
(
upstream
.
build
());
streamObserver
.
onCompleted
();
}
}
}
apm-collector/apm-collector-boot/src/main/resources/application.yml
浏览文件 @
03a5db8e
...
...
@@ -25,6 +25,4 @@ storage:
elasticsearch
:
cluster_name
:
CollectorDBCluster
cluster_transport_sniffer
:
true
cluster_nodes
:
10.0.0.19:9300,10.0.0.6:9300
cluster_nodes
:
localhost:9300
\ No newline at end of file
apm-collector/apm-collector-boot/src/main/resources/logback.xml
浏览文件 @
03a5db8e
...
...
@@ -10,7 +10,7 @@
<logger
name=
"org.eclipse.jetty"
level=
"INFO"
/>
<logger
name=
"org.apache.zookeeper"
level=
"INFO"
/>
<root
level=
"
debug
"
>
<root
level=
"
info
"
>
<appender-ref
ref=
"STDOUT"
/>
</root>
</configuration>
\ No newline at end of file
apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/CollectionUtils.java
浏览文件 @
03a5db8e
...
...
@@ -19,4 +19,8 @@ public class CollectionUtils {
public
static
boolean
isNotEmpty
(
List
list
)
{
return
!
isEmpty
(
list
);
}
public
static
<
T
>
boolean
isNotEmpty
(
T
[]
array
)
{
return
array
!=
null
&&
array
.
length
>
0
;
}
}
apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/Const.java
浏览文件 @
03a5db8e
...
...
@@ -7,6 +7,7 @@ public class Const {
public
static
final
String
ID_SPLIT
=
"_"
;
public
static
final
int
USER_ID
=
1
;
public
static
final
int
NONE_SERVICE_ID
=
1
;
public
static
final
String
NONE_SERVICE_NAME
=
"None"
;
public
static
final
String
USER_CODE
=
"User"
;
public
static
final
String
SEGMENT_SPAN_SPLIT
=
"S"
;
public
static
final
String
UNKNOWN
=
"Unknown"
;
...
...
apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/TimeBucketUtils.java
浏览文件 @
03a5db8e
...
...
@@ -67,15 +67,18 @@ public enum TimeBucketUtils {
}
}
public
long
getFiveSecondTimeBucket
(
long
secondTimeBucket
)
{
long
mantissa
=
secondTimeBucket
%
10
;
if
(
mantissa
<
5
)
{
return
(
secondTimeBucket
/
10
)
*
10
;
}
else
if
(
mantissa
==
5
)
{
return
secondTimeBucket
;
}
else
{
return
((
secondTimeBucket
/
10
)
+
1
)
*
10
;
public
long
[]
getFiveSecondTimeBuckets
(
long
secondTimeBucket
)
{
long
timeStamp
=
changeTimeBucket2TimeStamp
(
TimeBucketType
.
SECOND
.
name
(),
secondTimeBucket
);
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTimeInMillis
(
timeStamp
);
long
[]
timeBuckets
=
new
long
[
5
];
timeBuckets
[
0
]
=
secondTimeBucket
;
for
(
int
i
=
0
;
i
<
4
;
i
++)
{
calendar
.
add
(
Calendar
.
SECOND
,
-
1
);
timeBuckets
[
i
+
1
]
=
getSecondTimeBucket
(
calendar
.
getTimeInMillis
());
}
return
timeBuckets
;
}
public
long
changeToUTCTimeBucket
(
long
timeBucket
)
{
...
...
@@ -88,6 +91,17 @@ public enum TimeBucketUtils {
}
}
public
long
addSecondForSecondTimeBucket
(
String
timeBucketType
,
long
timeBucket
,
int
second
)
{
if
(!
TimeBucketType
.
SECOND
.
name
().
equals
(
timeBucketType
))
{
throw
new
UnexpectedException
(
"time bucket type must be second "
);
}
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTimeInMillis
(
changeTimeBucket2TimeStamp
(
timeBucketType
,
timeBucket
));
calendar
.
add
(
Calendar
.
SECOND
,
second
);
return
getSecondTimeBucket
(
calendar
.
getTimeInMillis
());
}
public
enum
TimeBucketType
{
SECOND
,
MINUTE
,
HOUR
,
DAY
}
...
...
apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/utils/TimeBucketUtilsTestCase.java
浏览文件 @
03a5db8e
...
...
@@ -11,14 +11,12 @@ public class TimeBucketUtilsTestCase {
@Test
public
void
testGetFiveSecondTimeBucket
()
{
long
fiveSecondTimeBucket
=
TimeBucketUtils
.
INSTANCE
.
getFiveSecondTimeBucket
(
20170804224812L
);
Assert
.
assertEquals
(
20170804224810L
,
fiveSecondTimeBucket
);
fiveSecondTimeBucket
=
TimeBucketUtils
.
INSTANCE
.
getFiveSecondTimeBucket
(
20170804224818L
);
Assert
.
assertEquals
(
20170804224820L
,
fiveSecondTimeBucket
);
fiveSecondTimeBucket
=
TimeBucketUtils
.
INSTANCE
.
getFiveSecondTimeBucket
(
20170804224815L
);
Assert
.
assertEquals
(
20170804224815L
,
fiveSecondTimeBucket
);
long
[]
timeBuckets
=
TimeBucketUtils
.
INSTANCE
.
getFiveSecondTimeBuckets
(
20170804224810L
);
Assert
.
assertEquals
(
20170804224810L
,
timeBuckets
[
0
]);
Assert
.
assertEquals
(
20170804224809L
,
timeBuckets
[
1
]);
Assert
.
assertEquals
(
20170804224808L
,
timeBuckets
[
2
]);
Assert
.
assertEquals
(
20170804224807L
,
timeBuckets
[
3
]);
Assert
.
assertEquals
(
20170804224806L
,
timeBuckets
[
4
]);
}
@Test
...
...
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/CommonTable.java
浏览文件 @
03a5db8e
...
...
@@ -8,5 +8,4 @@ public class CommonTable {
public
static
final
String
COLUMN_ID
=
"id"
;
public
static
final
String
COLUMN_AGG
=
"agg"
;
public
static
final
String
COLUMN_TIME_BUCKET
=
"time_bucket"
;
public
static
final
String
COLUMN_5S_TIME_BUCKET
=
"s5_time_bucket"
;
}
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/instance/InstPerformanceDataDefine.java
浏览文件 @
03a5db8e
...
...
@@ -16,17 +16,16 @@ import org.skywalking.apm.collector.storage.define.DataDefine;
public
class
InstPerformanceDataDefine
extends
DataDefine
{
@Override
protected
int
initialCapacity
()
{
return
7
;
return
6
;
}
@Override
protected
void
attributeDefine
()
{
addAttribute
(
0
,
new
Attribute
(
InstPerformanceTable
.
COLUMN_ID
,
AttributeType
.
STRING
,
new
NonOperation
()));
addAttribute
(
1
,
new
Attribute
(
InstPerformanceTable
.
COLUMN_APPLICATION_ID
,
AttributeType
.
INTEGER
,
new
CoverOperation
()));
addAttribute
(
2
,
new
Attribute
(
InstPerformanceTable
.
COLUMN_INSTANCE_ID
,
AttributeType
.
INTEGER
,
new
CoverOperation
()));
addAttribute
(
3
,
new
Attribute
(
InstPerformanceTable
.
COLUMN_CALL
_TIME
S
,
AttributeType
.
INTEGER
,
new
AddOperation
()));
addAttribute
(
3
,
new
Attribute
(
InstPerformanceTable
.
COLUMN_CALLS
,
AttributeType
.
INTEGER
,
new
AddOperation
()));
addAttribute
(
4
,
new
Attribute
(
InstPerformanceTable
.
COLUMN_COST_TOTAL
,
AttributeType
.
LONG
,
new
AddOperation
()));
addAttribute
(
5
,
new
Attribute
(
InstPerformanceTable
.
COLUMN_TIME_BUCKET
,
AttributeType
.
LONG
,
new
CoverOperation
()));
addAttribute
(
6
,
new
Attribute
(
InstPerformanceTable
.
COLUMN_5S_TIME_BUCKET
,
AttributeType
.
LONG
,
new
CoverOperation
()));
}
@Override
public
Object
deserialize
(
RemoteData
remoteData
)
{
...
...
@@ -41,21 +40,18 @@ public class InstPerformanceDataDefine extends DataDefine {
private
String
id
;
private
int
applicationId
;
private
int
instanceId
;
private
int
call
Time
s
;
private
int
calls
;
private
long
costTotal
;
private
long
timeBucket
;
private
long
s5TimeBucket
;
public
InstPerformance
(
String
id
,
int
applicationId
,
int
instanceId
,
int
callTimes
,
long
costTotal
,
long
timeBucket
,
long
s5TimeBucket
)
{
public
InstPerformance
(
String
id
,
int
applicationId
,
int
instanceId
,
int
calls
,
long
costTotal
,
long
timeBucket
)
{
this
.
id
=
id
;
this
.
applicationId
=
applicationId
;
this
.
instanceId
=
instanceId
;
this
.
call
Times
=
callTime
s
;
this
.
call
s
=
call
s
;
this
.
costTotal
=
costTotal
;
this
.
timeBucket
=
timeBucket
;
this
.
s5TimeBucket
=
s5TimeBucket
;
}
public
InstPerformance
()
{
...
...
@@ -67,10 +63,9 @@ public class InstPerformanceDataDefine extends DataDefine {
data
.
setDataString
(
0
,
this
.
id
);
data
.
setDataInteger
(
0
,
this
.
applicationId
);
data
.
setDataInteger
(
1
,
this
.
instanceId
);
data
.
setDataInteger
(
2
,
this
.
call
Time
s
);
data
.
setDataInteger
(
2
,
this
.
calls
);
data
.
setDataLong
(
0
,
this
.
costTotal
);
data
.
setDataLong
(
1
,
this
.
timeBucket
);
data
.
setDataLong
(
2
,
this
.
s5TimeBucket
);
return
data
;
}
...
...
@@ -78,10 +73,9 @@ public class InstPerformanceDataDefine extends DataDefine {
this
.
id
=
data
.
getDataString
(
0
);
this
.
applicationId
=
data
.
getDataInteger
(
0
);
this
.
instanceId
=
data
.
getDataInteger
(
1
);
this
.
call
Time
s
=
data
.
getDataInteger
(
2
);
this
.
calls
=
data
.
getDataInteger
(
2
);
this
.
costTotal
=
data
.
getDataLong
(
0
);
this
.
timeBucket
=
data
.
getDataLong
(
1
);
this
.
s5TimeBucket
=
data
.
getDataLong
(
2
);
return
this
;
}
...
...
@@ -101,12 +95,12 @@ public class InstPerformanceDataDefine extends DataDefine {
this
.
instanceId
=
instanceId
;
}
public
int
getCall
Time
s
()
{
return
call
Time
s
;
public
int
getCalls
()
{
return
calls
;
}
public
void
setCall
Times
(
int
callTime
s
)
{
this
.
call
Times
=
callTime
s
;
public
void
setCall
s
(
int
call
s
)
{
this
.
call
s
=
call
s
;
}
public
long
getCostTotal
()
{
...
...
@@ -132,13 +126,5 @@ public class InstPerformanceDataDefine extends DataDefine {
public
void
setApplicationId
(
int
applicationId
)
{
this
.
applicationId
=
applicationId
;
}
public
long
getS5TimeBucket
()
{
return
s5TimeBucket
;
}
public
void
setS5TimeBucket
(
long
s5TimeBucket
)
{
this
.
s5TimeBucket
=
s5TimeBucket
;
}
}
}
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/instance/InstPerformanceTable.java
浏览文件 @
03a5db8e
...
...
@@ -9,6 +9,6 @@ public class InstPerformanceTable extends CommonTable {
public
static
final
String
TABLE
=
"instance_performance"
;
public
static
final
String
COLUMN_APPLICATION_ID
=
"application_id"
;
public
static
final
String
COLUMN_INSTANCE_ID
=
"instance_id"
;
public
static
final
String
COLUMN_CALL
_TIMES
=
"call_time
s"
;
public
static
final
String
COLUMN_CALL
S
=
"call
s"
;
public
static
final
String
COLUMN_COST_TOTAL
=
"cost_total"
;
}
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/CpuMetricDataDefine.java
浏览文件 @
03a5db8e
...
...
@@ -3,12 +3,13 @@ package org.skywalking.apm.collector.storage.define.jvm;
import
org.skywalking.apm.collector.core.framework.UnexpectedException
;
import
org.skywalking.apm.collector.core.stream.Data
;
import
org.skywalking.apm.collector.core.stream.Transform
;
import
org.skywalking.apm.collector.core.stream.operate.AddOperation
;
import
org.skywalking.apm.collector.core.stream.operate.CoverOperation
;
import
org.skywalking.apm.collector.core.stream.operate.NonOperation
;
import
org.skywalking.apm.collector.remote.grpc.proto.RemoteData
;
import
org.skywalking.apm.collector.storage.define.Attribute
;
import
org.skywalking.apm.collector.storage.define.AttributeType
;
import
org.skywalking.apm.collector.storage.define.DataDefine
;
import
org.skywalking.apm.collector.core.stream.operate.CoverOperation
;
import
org.skywalking.apm.collector.core.stream.operate.NonOperation
;
/**
* @author pengys5
...
...
@@ -21,8 +22,8 @@ public class CpuMetricDataDefine extends DataDefine {
@Override
protected
void
attributeDefine
()
{
addAttribute
(
0
,
new
Attribute
(
CpuMetricTable
.
COLUMN_ID
,
AttributeType
.
STRING
,
new
NonOperation
()));
addAttribute
(
1
,
new
Attribute
(
CpuMetricTable
.
COLUMN_
APPLICATION_
INSTANCE_ID
,
AttributeType
.
INTEGER
,
new
CoverOperation
()));
addAttribute
(
2
,
new
Attribute
(
CpuMetricTable
.
COLUMN_USAGE_PERCENT
,
AttributeType
.
DOUBLE
,
new
Cover
Operation
()));
addAttribute
(
1
,
new
Attribute
(
CpuMetricTable
.
COLUMN_INSTANCE_ID
,
AttributeType
.
INTEGER
,
new
CoverOperation
()));
addAttribute
(
2
,
new
Attribute
(
CpuMetricTable
.
COLUMN_USAGE_PERCENT
,
AttributeType
.
DOUBLE
,
new
Add
Operation
()));
addAttribute
(
3
,
new
Attribute
(
CpuMetricTable
.
COLUMN_TIME_BUCKET
,
AttributeType
.
LONG
,
new
CoverOperation
()));
}
...
...
@@ -36,13 +37,13 @@ public class CpuMetricDataDefine extends DataDefine {
public
static
class
CpuMetric
implements
Transform
<
CpuMetric
>
{
private
String
id
;
private
int
applicationI
nstanceId
;
private
int
i
nstanceId
;
private
double
usagePercent
;
private
long
timeBucket
;
public
CpuMetric
(
String
id
,
int
applicationI
nstanceId
,
double
usagePercent
,
long
timeBucket
)
{
public
CpuMetric
(
String
id
,
int
i
nstanceId
,
double
usagePercent
,
long
timeBucket
)
{
this
.
id
=
id
;
this
.
applicationInstanceId
=
applicationI
nstanceId
;
this
.
instanceId
=
i
nstanceId
;
this
.
usagePercent
=
usagePercent
;
this
.
timeBucket
=
timeBucket
;
}
...
...
@@ -54,7 +55,7 @@ public class CpuMetricDataDefine extends DataDefine {
CpuMetricDataDefine
define
=
new
CpuMetricDataDefine
();
Data
data
=
define
.
build
(
id
);
data
.
setDataString
(
0
,
this
.
id
);
data
.
setDataInteger
(
0
,
this
.
applicationI
nstanceId
);
data
.
setDataInteger
(
0
,
this
.
i
nstanceId
);
data
.
setDataDouble
(
0
,
this
.
usagePercent
);
data
.
setDataLong
(
0
,
this
.
timeBucket
);
return
data
;
...
...
@@ -62,7 +63,7 @@ public class CpuMetricDataDefine extends DataDefine {
@Override
public
CpuMetric
toSelf
(
Data
data
)
{
this
.
id
=
data
.
getDataString
(
0
);
this
.
applicationI
nstanceId
=
data
.
getDataInteger
(
0
);
this
.
i
nstanceId
=
data
.
getDataInteger
(
0
);
this
.
usagePercent
=
data
.
getDataDouble
(
0
);
this
.
timeBucket
=
data
.
getDataLong
(
0
);
return
this
;
...
...
@@ -72,8 +73,8 @@ public class CpuMetricDataDefine extends DataDefine {
this
.
id
=
id
;
}
public
void
set
ApplicationInstanceId
(
int
applicationI
nstanceId
)
{
this
.
applicationInstanceId
=
applicationI
nstanceId
;
public
void
set
InstanceId
(
int
i
nstanceId
)
{
this
.
instanceId
=
i
nstanceId
;
}
public
void
setUsagePercent
(
double
usagePercent
)
{
...
...
@@ -88,8 +89,8 @@ public class CpuMetricDataDefine extends DataDefine {
return
id
;
}
public
int
get
Application
InstanceId
()
{
return
applicationI
nstanceId
;
public
int
getInstanceId
()
{
return
i
nstanceId
;
}
public
double
getUsagePercent
()
{
...
...
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/CpuMetricTable.java
浏览文件 @
03a5db8e
...
...
@@ -7,6 +7,6 @@ import org.skywalking.apm.collector.storage.define.CommonTable;
*/
public
class
CpuMetricTable
extends
CommonTable
{
public
static
final
String
TABLE
=
"cpu_metric"
;
public
static
final
String
COLUMN_
APPLICATION_INSTANCE_ID
=
"application_
instance_id"
;
public
static
final
String
COLUMN_
INSTANCE_ID
=
"
instance_id"
;
public
static
final
String
COLUMN_USAGE_PERCENT
=
"usage_percent"
;
}
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/GCMetricDataDefine.java
浏览文件 @
03a5db8e
...
...
@@ -16,17 +16,16 @@ import org.skywalking.apm.collector.storage.define.DataDefine;
public
class
GCMetricDataDefine
extends
DataDefine
{
@Override
protected
int
initialCapacity
()
{
return
7
;
return
6
;
}
@Override
protected
void
attributeDefine
()
{
addAttribute
(
0
,
new
Attribute
(
GCMetricTable
.
COLUMN_ID
,
AttributeType
.
STRING
,
new
NonOperation
()));
addAttribute
(
1
,
new
Attribute
(
GCMetricTable
.
COLUMN_
APPLICATION_
INSTANCE_ID
,
AttributeType
.
INTEGER
,
new
CoverOperation
()));
addAttribute
(
1
,
new
Attribute
(
GCMetricTable
.
COLUMN_INSTANCE_ID
,
AttributeType
.
INTEGER
,
new
CoverOperation
()));
addAttribute
(
2
,
new
Attribute
(
GCMetricTable
.
COLUMN_PHRASE
,
AttributeType
.
INTEGER
,
new
CoverOperation
()));
addAttribute
(
3
,
new
Attribute
(
GCMetricTable
.
COLUMN_COUNT
,
AttributeType
.
LONG
,
new
CoverOperation
()));
addAttribute
(
4
,
new
Attribute
(
GCMetricTable
.
COLUMN_TIME
,
AttributeType
.
LONG
,
new
CoverOperation
()));
addAttribute
(
5
,
new
Attribute
(
GCMetricTable
.
COLUMN_TIME_BUCKET
,
AttributeType
.
LONG
,
new
CoverOperation
()));
addAttribute
(
6
,
new
Attribute
(
GCMetricTable
.
COLUMN_5S_TIME_BUCKET
,
AttributeType
.
LONG
,
new
CoverOperation
()));
}
@Override
public
Object
deserialize
(
RemoteData
remoteData
)
{
...
...
@@ -39,22 +38,19 @@ public class GCMetricDataDefine extends DataDefine {
public
static
class
GCMetric
implements
Transform
<
GCMetric
>
{
private
String
id
;
private
int
applicationI
nstanceId
;
private
int
i
nstanceId
;
private
int
phrase
;
private
long
count
;
private
long
time
;
private
long
timeBucket
;
private
long
s5TimeBucket
;
public
GCMetric
(
String
id
,
int
applicationInstanceId
,
int
phrase
,
long
count
,
long
time
,
long
timeBucket
,
long
s5TimeBucket
)
{
public
GCMetric
(
String
id
,
int
instanceId
,
int
phrase
,
long
count
,
long
time
,
long
timeBucket
)
{
this
.
id
=
id
;
this
.
applicationInstanceId
=
applicationI
nstanceId
;
this
.
instanceId
=
i
nstanceId
;
this
.
phrase
=
phrase
;
this
.
count
=
count
;
this
.
time
=
time
;
this
.
timeBucket
=
timeBucket
;
this
.
s5TimeBucket
=
s5TimeBucket
;
}
public
GCMetric
()
{
...
...
@@ -64,23 +60,21 @@ public class GCMetricDataDefine extends DataDefine {
GCMetricDataDefine
define
=
new
GCMetricDataDefine
();
Data
data
=
define
.
build
(
id
);
data
.
setDataString
(
0
,
this
.
id
);
data
.
setDataInteger
(
0
,
this
.
applicationI
nstanceId
);
data
.
setDataInteger
(
0
,
this
.
i
nstanceId
);
data
.
setDataInteger
(
1
,
this
.
phrase
);
data
.
setDataLong
(
0
,
this
.
count
);
data
.
setDataLong
(
1
,
this
.
time
);
data
.
setDataLong
(
2
,
this
.
timeBucket
);
data
.
setDataLong
(
3
,
this
.
s5TimeBucket
);
return
data
;
}
@Override
public
GCMetric
toSelf
(
Data
data
)
{
this
.
id
=
data
.
getDataString
(
0
);
this
.
applicationI
nstanceId
=
data
.
getDataInteger
(
0
);
this
.
i
nstanceId
=
data
.
getDataInteger
(
0
);
this
.
phrase
=
data
.
getDataInteger
(
1
);
this
.
count
=
data
.
getDataLong
(
0
);
this
.
time
=
data
.
getDataLong
(
1
);
this
.
timeBucket
=
data
.
getDataLong
(
2
);
this
.
s5TimeBucket
=
data
.
getDataLong
(
3
);
return
this
;
}
...
...
@@ -88,8 +82,8 @@ public class GCMetricDataDefine extends DataDefine {
this
.
id
=
id
;
}
public
void
set
ApplicationInstanceId
(
int
applicationI
nstanceId
)
{
this
.
applicationInstanceId
=
applicationI
nstanceId
;
public
void
set
InstanceId
(
int
i
nstanceId
)
{
this
.
instanceId
=
i
nstanceId
;
}
public
void
setTimeBucket
(
long
timeBucket
)
{
...
...
@@ -100,8 +94,8 @@ public class GCMetricDataDefine extends DataDefine {
return
id
;
}
public
int
get
Application
InstanceId
()
{
return
applicationI
nstanceId
;
public
int
getInstanceId
()
{
return
i
nstanceId
;
}
public
long
getTimeBucket
()
{
...
...
@@ -131,13 +125,5 @@ public class GCMetricDataDefine extends DataDefine {
public
void
setTime
(
long
time
)
{
this
.
time
=
time
;
}
public
long
getS5TimeBucket
()
{
return
s5TimeBucket
;
}
public
void
setS5TimeBucket
(
long
s5TimeBucket
)
{
this
.
s5TimeBucket
=
s5TimeBucket
;
}
}
}
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/GCMetricTable.java
浏览文件 @
03a5db8e
...
...
@@ -7,7 +7,7 @@ import org.skywalking.apm.collector.storage.define.CommonTable;
*/
public
class
GCMetricTable
extends
CommonTable
{
public
static
final
String
TABLE
=
"gc_metric"
;
public
static
final
String
COLUMN_
APPLICATION_INSTANCE_ID
=
"application_
instance_id"
;
public
static
final
String
COLUMN_
INSTANCE_ID
=
"
instance_id"
;
public
static
final
String
COLUMN_PHRASE
=
"phrase"
;
public
static
final
String
COLUMN_COUNT
=
"count"
;
public
static
final
String
COLUMN_TIME
=
"time"
;
...
...
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/MemoryPoolMetricDataDefine.java
浏览文件 @
03a5db8e
...
...
@@ -21,7 +21,7 @@ public class MemoryPoolMetricDataDefine extends DataDefine {
@Override
protected
void
attributeDefine
()
{
addAttribute
(
0
,
new
Attribute
(
MemoryPoolMetricTable
.
COLUMN_ID
,
AttributeType
.
STRING
,
new
NonOperation
()));
addAttribute
(
1
,
new
Attribute
(
MemoryPoolMetricTable
.
COLUMN_
APPLICATION_
INSTANCE_ID
,
AttributeType
.
INTEGER
,
new
CoverOperation
()));
addAttribute
(
1
,
new
Attribute
(
MemoryPoolMetricTable
.
COLUMN_INSTANCE_ID
,
AttributeType
.
INTEGER
,
new
CoverOperation
()));
addAttribute
(
2
,
new
Attribute
(
MemoryPoolMetricTable
.
COLUMN_POOL_TYPE
,
AttributeType
.
INTEGER
,
new
CoverOperation
()));
addAttribute
(
3
,
new
Attribute
(
MemoryPoolMetricTable
.
COLUMN_IS_HEAP
,
AttributeType
.
BOOLEAN
,
new
CoverOperation
()));
addAttribute
(
4
,
new
Attribute
(
MemoryPoolMetricTable
.
COLUMN_INIT
,
AttributeType
.
LONG
,
new
CoverOperation
()));
...
...
@@ -41,7 +41,7 @@ public class MemoryPoolMetricDataDefine extends DataDefine {
public
static
class
MemoryPoolMetric
implements
Transform
<
MemoryPoolMetric
>
{
private
String
id
;
private
int
applicationI
nstanceId
;
private
int
i
nstanceId
;
private
int
poolType
;
private
boolean
isHeap
;
private
long
init
;
...
...
@@ -50,10 +50,10 @@ public class MemoryPoolMetricDataDefine extends DataDefine {
private
long
committed
;
private
long
timeBucket
;
public
MemoryPoolMetric
(
String
id
,
int
applicationI
nstanceId
,
int
poolType
,
boolean
isHeap
,
long
init
,
long
max
,
public
MemoryPoolMetric
(
String
id
,
int
i
nstanceId
,
int
poolType
,
boolean
isHeap
,
long
init
,
long
max
,
long
used
,
long
committed
,
long
timeBucket
)
{
this
.
id
=
id
;
this
.
applicationInstanceId
=
applicationI
nstanceId
;
this
.
instanceId
=
i
nstanceId
;
this
.
poolType
=
poolType
;
this
.
isHeap
=
isHeap
;
this
.
init
=
init
;
...
...
@@ -70,7 +70,7 @@ public class MemoryPoolMetricDataDefine extends DataDefine {
MemoryPoolMetricDataDefine
define
=
new
MemoryPoolMetricDataDefine
();
Data
data
=
define
.
build
(
id
);
data
.
setDataString
(
0
,
this
.
id
);
data
.
setDataInteger
(
0
,
this
.
applicationI
nstanceId
);
data
.
setDataInteger
(
0
,
this
.
i
nstanceId
);
data
.
setDataInteger
(
1
,
this
.
poolType
);
data
.
setDataBoolean
(
0
,
this
.
isHeap
);
data
.
setDataLong
(
0
,
this
.
init
);
...
...
@@ -83,7 +83,7 @@ public class MemoryPoolMetricDataDefine extends DataDefine {
@Override
public
MemoryPoolMetric
toSelf
(
Data
data
)
{
this
.
id
=
data
.
getDataString
(
0
);
this
.
applicationI
nstanceId
=
data
.
getDataInteger
(
0
);
this
.
i
nstanceId
=
data
.
getDataInteger
(
0
);
this
.
poolType
=
data
.
getDataInteger
(
1
);
this
.
isHeap
=
data
.
getDataBoolean
(
0
);
this
.
init
=
data
.
getDataLong
(
0
);
...
...
@@ -98,8 +98,8 @@ public class MemoryPoolMetricDataDefine extends DataDefine {
this
.
id
=
id
;
}
public
void
set
ApplicationInstanceId
(
int
applicationI
nstanceId
)
{
this
.
applicationInstanceId
=
applicationI
nstanceId
;
public
void
set
InstanceId
(
int
i
nstanceId
)
{
this
.
instanceId
=
i
nstanceId
;
}
public
void
setPoolType
(
int
poolType
)
{
...
...
@@ -134,8 +134,8 @@ public class MemoryPoolMetricDataDefine extends DataDefine {
return
id
;
}
public
int
get
Application
InstanceId
()
{
return
applicationI
nstanceId
;
public
int
getInstanceId
()
{
return
i
nstanceId
;
}
public
long
getTimeBucket
()
{
...
...
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/MemoryPoolMetricTable.java
浏览文件 @
03a5db8e
...
...
@@ -7,7 +7,7 @@ import org.skywalking.apm.collector.storage.define.CommonTable;
*/
public
class
MemoryPoolMetricTable
extends
CommonTable
{
public
static
final
String
TABLE
=
"memory_pool_metric"
;
public
static
final
String
COLUMN_
APPLICATION_INSTANCE_ID
=
"application_
instance_id"
;
public
static
final
String
COLUMN_
INSTANCE_ID
=
"
instance_id"
;
public
static
final
String
COLUMN_POOL_TYPE
=
"pool_type"
;
public
static
final
String
COLUMN_IS_HEAP
=
"is_heap"
;
public
static
final
String
COLUMN_INIT
=
"init"
;
...
...
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/noderef/NodeReferenceDataDefine.java
浏览文件 @
03a5db8e
...
...
@@ -44,29 +44,29 @@ public class NodeReferenceDataDefine extends DataDefine {
int
summary
=
remoteData
.
getDataIntegers
(
6
);
int
error
=
remoteData
.
getDataIntegers
(
7
);
long
timeBucket
=
remoteData
.
getDataLongs
(
0
);
return
new
NodeReference
Sum
(
id
,
applicationId
,
behindApplicationId
,
behindPeer
,
s1LTE
,
s3LTE
,
s5LTE
,
s5GT
,
summary
,
error
,
timeBucket
);
return
new
NodeReference
(
id
,
applicationId
,
behindApplicationId
,
behindPeer
,
s1LTE
,
s3LTE
,
s5LTE
,
s5GT
,
summary
,
error
,
timeBucket
);
}
@Override
public
RemoteData
serialize
(
Object
object
)
{
NodeReference
Sum
nodeReferenceSum
=
(
NodeReferenceSum
)
object
;
NodeReference
nodeReference
=
(
NodeReference
)
object
;
RemoteData
.
Builder
builder
=
RemoteData
.
newBuilder
();
builder
.
addDataStrings
(
nodeReference
Sum
.
getId
());
builder
.
addDataIntegers
(
nodeReference
Sum
.
ge
tApplicationId
());
builder
.
addDataIntegers
(
nodeReference
Sum
.
getBehindApplicationId
());
builder
.
addDataStrings
(
nodeReference
Sum
.
getBehindPeer
());
builder
.
addDataIntegers
(
nodeReference
Sum
.
getS1LTE
());
builder
.
addDataIntegers
(
nodeReference
Sum
.
getS3LTE
());
builder
.
addDataIntegers
(
nodeReference
Sum
.
getS5LTE
());
builder
.
addDataIntegers
(
nodeReference
Sum
.
getS5GT
());
builder
.
addDataIntegers
(
nodeReference
Sum
.
getSummary
());
builder
.
addDataIntegers
(
nodeReference
Sum
.
getError
());
builder
.
addDataLongs
(
nodeReference
Sum
.
getTimeBucket
());
builder
.
addDataStrings
(
nodeReference
.
getId
());
builder
.
addDataIntegers
(
nodeReference
.
getFron
tApplicationId
());
builder
.
addDataIntegers
(
nodeReference
.
getBehindApplicationId
());
builder
.
addDataStrings
(
nodeReference
.
getBehindPeer
());
builder
.
addDataIntegers
(
nodeReference
.
getS1LTE
());
builder
.
addDataIntegers
(
nodeReference
.
getS3LTE
());
builder
.
addDataIntegers
(
nodeReference
.
getS5LTE
());
builder
.
addDataIntegers
(
nodeReference
.
getS5GT
());
builder
.
addDataIntegers
(
nodeReference
.
getSummary
());
builder
.
addDataIntegers
(
nodeReference
.
getError
());
builder
.
addDataLongs
(
nodeReference
.
getTimeBucket
());
return
builder
.
build
();
}
public
static
class
NodeReference
Sum
implements
Transform
{
public
static
class
NodeReference
implements
Transform
{
private
String
id
;
private
int
a
pplicationId
;
private
int
frontA
pplicationId
;
private
int
behindApplicationId
;
private
String
behindPeer
;
private
int
s1LTE
=
0
;
...
...
@@ -77,11 +77,11 @@ public class NodeReferenceDataDefine extends DataDefine {
private
int
error
=
0
;
private
long
timeBucket
;
public
NodeReference
Sum
(
String
id
,
int
a
pplicationId
,
int
behindApplicationId
,
String
behindPeer
,
int
s1LTE
,
public
NodeReference
(
String
id
,
int
frontA
pplicationId
,
int
behindApplicationId
,
String
behindPeer
,
int
s1LTE
,
int
s3LTE
,
int
s5LTE
,
int
s5GT
,
int
summary
,
int
error
,
long
timeBucket
)
{
this
.
id
=
id
;
this
.
applicationId
=
a
pplicationId
;
this
.
frontApplicationId
=
frontA
pplicationId
;
this
.
behindApplicationId
=
behindApplicationId
;
this
.
behindPeer
=
behindPeer
;
this
.
s1LTE
=
s1LTE
;
...
...
@@ -93,14 +93,14 @@ public class NodeReferenceDataDefine extends DataDefine {
this
.
timeBucket
=
timeBucket
;
}
public
NodeReference
Sum
()
{
public
NodeReference
()
{
}
@Override
public
Data
toData
()
{
NodeReferenceDataDefine
define
=
new
NodeReferenceDataDefine
();
Data
data
=
define
.
build
(
id
);
data
.
setDataString
(
0
,
this
.
id
);
data
.
setDataInteger
(
0
,
this
.
a
pplicationId
);
data
.
setDataInteger
(
0
,
this
.
frontA
pplicationId
);
data
.
setDataInteger
(
1
,
this
.
behindApplicationId
);
data
.
setDataString
(
1
,
this
.
behindPeer
);
data
.
setDataInteger
(
2
,
this
.
s1LTE
);
...
...
@@ -125,12 +125,12 @@ public class NodeReferenceDataDefine extends DataDefine {
this
.
id
=
id
;
}
public
int
getApplicationId
()
{
return
a
pplicationId
;
public
int
get
Front
ApplicationId
()
{
return
frontA
pplicationId
;
}
public
void
set
ApplicationId
(
int
a
pplicationId
)
{
this
.
applicationId
=
a
pplicationId
;
public
void
set
FrontApplicationId
(
int
frontA
pplicationId
)
{
this
.
frontApplicationId
=
frontA
pplicationId
;
}
public
int
getBehindApplicationId
()
{
...
...
apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/service/ServiceEntryDataDefine.java
浏览文件 @
03a5db8e
...
...
@@ -21,7 +21,7 @@ public class ServiceEntryDataDefine extends DataDefine {
@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
Non
Operation
()));
addAttribute
(
2
,
new
Attribute
(
ServiceEntryTable
.
COLUMN_ENTRY_SERVICE_ID
,
AttributeType
.
INTEGER
,
new
Cover
Operation
()));
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
()));
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/cache/ServiceNameCache.java
浏览文件 @
03a5db8e
...
...
@@ -12,7 +12,7 @@ import org.skywalking.apm.collector.ui.dao.IServiceNameDAO;
public
class
ServiceNameCache
{
//TODO size configuration
private
static
Cache
<
Integer
,
String
>
CACHE
=
CacheBuilder
.
newBuilder
().
maximumSize
(
1000
).
build
();
private
static
Cache
<
Integer
,
String
>
CACHE
=
CacheBuilder
.
newBuilder
().
maximumSize
(
1000
0
).
build
();
public
static
String
get
(
int
serviceId
)
{
try
{
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/CpuMetricEsDAO.java
浏览文件 @
03a5db8e
...
...
@@ -6,6 +6,7 @@ import org.elasticsearch.action.get.MultiGetItemResponse;
import
org.elasticsearch.action.get.MultiGetRequestBuilder
;
import
org.elasticsearch.action.get.MultiGetResponse
;
import
org.skywalking.apm.collector.core.util.Const
;
import
org.skywalking.apm.collector.core.util.TimeBucketUtils
;
import
org.skywalking.apm.collector.storage.define.jvm.CpuMetricTable
;
import
org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO
;
...
...
@@ -27,19 +28,20 @@ public class CpuMetricEsDAO extends EsDAO implements ICpuMetricDAO {
@Override
public
JsonArray
getMetric
(
int
instanceId
,
long
startTimeBucket
,
long
endTimeBucket
)
{
MultiGetRequestBuilder
prepareMultiGet
=
getClient
().
prepareMultiGet
();
int
i
=
0
;
long
timeBucket
=
startTimeBucket
;
do
{
String
id
=
(
startTimeBucket
+
i
)
+
Const
.
ID_SPLIT
+
instanceId
;
timeBucket
=
TimeBucketUtils
.
INSTANCE
.
addSecondForSecondTimeBucket
(
TimeBucketUtils
.
TimeBucketType
.
SECOND
.
name
(),
timeBucket
,
1
);
String
id
=
timeBucket
+
Const
.
ID_SPLIT
+
instanceId
;
prepareMultiGet
.
add
(
CpuMetricTable
.
TABLE
,
CpuMetricTable
.
TABLE_TYPE
,
id
);
i
++;
}
while
(
startTimeBucket
+
i
<=
endTimeBucket
);
while
(
timeBucket
<=
endTimeBucket
);
JsonArray
metrics
=
new
JsonArray
();
MultiGetResponse
multiGetResponse
=
prepareMultiGet
.
get
();
for
(
MultiGetItemResponse
response
:
multiGetResponse
.
getResponses
())
{
if
(
response
.
getResponse
().
isExists
())
{
metrics
.
add
(((
Number
)
response
.
getResponse
().
getSource
().
get
(
CpuMetricTable
.
COLUMN_USAGE_PERCENT
)).
intValue
());
double
cpuUsed
=
((
Number
)
response
.
getResponse
().
getSource
().
get
(
CpuMetricTable
.
COLUMN_USAGE_PERCENT
)).
doubleValue
();
metrics
.
add
((
int
)(
cpuUsed
*
100
));
}
else
{
metrics
.
add
(
0
);
}
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GCMetricEsDAO.java
浏览文件 @
03a5db8e
...
...
@@ -10,12 +10,12 @@ 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.MatchQueryBuilder
;
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.Const
;
import
org.skywalking.apm.collector.core.util.TimeBucketUtils
;
import
org.skywalking.apm.collector.storage.define.jvm.GCMetricTable
;
import
org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO
;
import
org.skywalking.apm.network.proto.GCPhrase
;
...
...
@@ -29,18 +29,15 @@ public class GCMetricEsDAO extends EsDAO implements IGCMetricDAO {
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
GCMetricEsDAO
.
class
);
@Override
public
GCCount
getGCCount
(
long
s5TimeBucket
,
int
instanceId
)
{
logger
.
debug
(
"get gc count,
s5TimeBucket: {}, instanceId: {}"
,
s5TimeBucket
,
instanceId
);
@Override
public
GCCount
getGCCount
(
long
[]
timeBuckets
,
int
instanceId
)
{
logger
.
debug
(
"get gc count,
timeBuckets: {}, instanceId: {}"
,
timeBuckets
,
instanceId
);
SearchRequestBuilder
searchRequestBuilder
=
getClient
().
prepareSearch
(
GCMetricTable
.
TABLE
);
searchRequestBuilder
.
setTypes
(
GCMetricTable
.
TABLE_TYPE
);
searchRequestBuilder
.
setSearchType
(
SearchType
.
DFS_QUERY_THEN_FETCH
);
BoolQueryBuilder
boolQuery
=
QueryBuilders
.
boolQuery
();
MatchQueryBuilder
matchApplicationId
=
QueryBuilders
.
matchQuery
(
GCMetricTable
.
COLUMN_APPLICATION_INSTANCE_ID
,
instanceId
);
MatchQueryBuilder
matchTimeBucket
=
QueryBuilders
.
matchQuery
(
GCMetricTable
.
COLUMN_5S_TIME_BUCKET
,
s5TimeBucket
);
boolQuery
.
must
().
add
(
matchApplicationId
);
boolQuery
.
must
().
add
(
matchTimeBucket
);
boolQuery
.
must
().
add
(
QueryBuilders
.
termQuery
(
GCMetricTable
.
COLUMN_INSTANCE_ID
,
instanceId
));
boolQuery
.
must
().
add
(
QueryBuilders
.
termsQuery
(
GCMetricTable
.
COLUMN_TIME_BUCKET
,
timeBuckets
));
searchRequestBuilder
.
setQuery
(
boolQuery
);
searchRequestBuilder
.
setSize
(
0
);
...
...
@@ -89,13 +86,13 @@ public class GCMetricEsDAO extends EsDAO implements IGCMetricDAO {
JsonObject
response
=
new
JsonObject
();
MultiGetRequestBuilder
youngPrepareMultiGet
=
getClient
().
prepareMultiGet
();
int
i
=
0
;
long
timeBucket
=
startTimeBucket
;
do
{
String
youngId
=
(
startTimeBucket
+
i
)
+
Const
.
ID_SPLIT
+
instanceId
+
Const
.
ID_SPLIT
+
GCPhrase
.
NEW_VALUE
;
timeBucket
=
TimeBucketUtils
.
INSTANCE
.
addSecondForSecondTimeBucket
(
TimeBucketUtils
.
TimeBucketType
.
SECOND
.
name
(),
timeBucket
,
1
);
String
youngId
=
timeBucket
+
Const
.
ID_SPLIT
+
instanceId
+
Const
.
ID_SPLIT
+
GCPhrase
.
NEW_VALUE
;
youngPrepareMultiGet
.
add
(
GCMetricTable
.
TABLE
,
GCMetricTable
.
TABLE_TYPE
,
youngId
);
i
++;
}
while
(
startTimeBucket
+
i
<=
endTimeBucket
);
while
(
timeBucket
<=
endTimeBucket
);
JsonArray
youngArray
=
new
JsonArray
();
MultiGetResponse
multiGetResponse
=
youngPrepareMultiGet
.
get
();
...
...
@@ -109,13 +106,13 @@ public class GCMetricEsDAO extends EsDAO implements IGCMetricDAO {
response
.
add
(
"ygc"
,
youngArray
);
MultiGetRequestBuilder
oldPrepareMultiGet
=
getClient
().
prepareMultiGet
();
i
=
0
;
timeBucket
=
startTimeBucket
;
do
{
String
oldId
=
(
startTimeBucket
+
i
)
+
Const
.
ID_SPLIT
+
instanceId
+
Const
.
ID_SPLIT
+
GCPhrase
.
OLD_VALUE
;
timeBucket
=
TimeBucketUtils
.
INSTANCE
.
addSecondForSecondTimeBucket
(
TimeBucketUtils
.
TimeBucketType
.
SECOND
.
name
(),
timeBucket
,
1
);
String
oldId
=
timeBucket
+
Const
.
ID_SPLIT
+
instanceId
+
Const
.
ID_SPLIT
+
GCPhrase
.
OLD_VALUE
;
oldPrepareMultiGet
.
add
(
GCMetricTable
.
TABLE
,
GCMetricTable
.
TABLE_TYPE
,
oldId
);
i
++;
}
while
(
startTimeBucket
+
i
<=
endTimeBucket
);
while
(
timeBucket
<=
endTimeBucket
);
JsonArray
oldArray
=
new
JsonArray
();
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GCMetricH2DAO.java
浏览文件 @
03a5db8e
...
...
@@ -8,7 +8,7 @@ import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
*/
public
class
GCMetricH2DAO
extends
H2DAO
implements
IGCMetricDAO
{
@Override
public
GCCount
getGCCount
(
long
timestamp
,
int
instanceId
)
{
@Override
public
GCCount
getGCCount
(
long
[]
timeBuckets
,
int
instanceId
)
{
return
null
;
}
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IGCMetricDAO.java
浏览文件 @
03a5db8e
...
...
@@ -7,7 +7,7 @@ import com.google.gson.JsonObject;
*/
public
interface
IGCMetricDAO
{
GCCount
getGCCount
(
long
timestamp
,
int
instanceId
);
GCCount
getGCCount
(
long
[]
timeBuckets
,
int
instanceId
);
JsonObject
getMetric
(
int
instanceId
,
long
timeBucket
);
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IInstPerformanceDAO.java
浏览文件 @
03a5db8e
package
org.skywalking.apm.collector.ui.dao
;
import
com.google.gson.JsonArray
;
import
java.util.List
;
/**
* @author pengys5
*/
public
interface
IInstPerformanceDAO
{
List
<
InstPerformance
>
getMultiple
(
long
timeBucket
,
int
application
Id
);
InstPerformance
get
(
long
[]
timeBuckets
,
int
instance
Id
);
int
getTpsMetric
(
int
instanceId
,
long
timeBucket
);
...
...
@@ -19,12 +18,12 @@ public interface IInstPerformanceDAO {
class
InstPerformance
{
private
final
int
instanceId
;
private
final
int
call
Time
s
;
private
final
int
calls
;
private
final
long
costTotal
;
public
InstPerformance
(
int
instanceId
,
int
call
Time
s
,
long
costTotal
)
{
public
InstPerformance
(
int
instanceId
,
int
calls
,
long
costTotal
)
{
this
.
instanceId
=
instanceId
;
this
.
call
Times
=
callTime
s
;
this
.
call
s
=
call
s
;
this
.
costTotal
=
costTotal
;
}
...
...
@@ -32,8 +31,8 @@ public interface IInstPerformanceDAO {
return
instanceId
;
}
public
int
getCall
Time
s
()
{
return
call
Time
s
;
public
int
getCalls
()
{
return
calls
;
}
public
long
getCostTotal
()
{
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IInstanceDAO.java
浏览文件 @
03a5db8e
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
;
/**
...
...
@@ -15,6 +16,8 @@ public interface IInstanceDAO {
InstanceDataDefine
.
Instance
getInstance
(
int
instanceId
);
List
<
InstanceDataDefine
.
Instance
>
getInstances
(
int
applicationId
,
long
timeBucket
);
class
Application
{
private
final
int
applicationId
;
private
final
long
count
;
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ISegmentCostDAO.java
浏览文件 @
03a5db8e
package
org.skywalking.apm.collector.ui.dao
;
import
com.google.gson.JsonObject
;
import
java.util.List
;
/**
* @author pengys5
*/
public
interface
ISegmentCostDAO
{
JsonObject
loadTop
(
long
startTime
,
long
endTime
,
long
minCost
,
long
maxCost
,
String
operationName
,
String
globalTraceId
,
int
limit
,
int
from
,
Sort
sort
);
List
<
String
>
segmentIds
,
int
limit
,
int
from
,
Sort
sort
);
public
enum
Sort
{
Cost
,
Time
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceReferenceDAO.java
浏览文件 @
03a5db8e
...
...
@@ -7,4 +7,6 @@ import com.google.gson.JsonArray;
*/
public
interface
IServiceReferenceDAO
{
JsonArray
load
(
int
entryServiceId
,
long
startTime
,
long
endTime
);
JsonArray
load
(
String
entryServiceName
,
int
entryApplicationId
,
long
startTime
,
long
endTime
);
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstPerformanceEsDAO.java
浏览文件 @
03a5db8e
package
org.skywalking.apm.collector.ui.dao
;
import
com.google.gson.JsonArray
;
import
java.util.LinkedList
;
import
java.util.List
;
import
org.elasticsearch.action.get.GetResponse
;
import
org.elasticsearch.action.get.MultiGetItemResponse
;
import
org.elasticsearch.action.get.MultiGetRequestBuilder
;
...
...
@@ -11,12 +9,11 @@ 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.MatchQueryBuilder
;
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.Const
;
import
org.skywalking.apm.collector.core.util.TimeBucketUtils
;
import
org.skywalking.apm.collector.storage.define.instance.InstPerformanceTable
;
import
org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO
;
...
...
@@ -25,46 +22,25 @@ import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
*/
public
class
InstPerformanceEsDAO
extends
EsDAO
implements
IInstPerformanceDAO
{
@Override
public
List
<
InstPerformance
>
getMultiple
(
long
timeBucket
,
int
application
Id
)
{
@Override
public
InstPerformance
get
(
long
[]
timeBuckets
,
int
instance
Id
)
{
SearchRequestBuilder
searchRequestBuilder
=
getClient
().
prepareSearch
(
InstPerformanceTable
.
TABLE
);
searchRequestBuilder
.
setTypes
(
InstPerformanceTable
.
TABLE_TYPE
);
searchRequestBuilder
.
setSearchType
(
SearchType
.
DFS_QUERY_THEN_FETCH
);
BoolQueryBuilder
boolQuery
=
QueryBuilders
.
boolQuery
();
MatchQueryBuilder
matchApplicationId
=
QueryBuilders
.
matchQuery
(
InstPerformanceTable
.
COLUMN_APPLICATION_ID
,
applicationId
);
MatchQueryBuilder
matchTimeBucket
=
QueryBuilders
.
matchQuery
(
InstPerformanceTable
.
COLUMN_5S_TIME_BUCKET
,
timeBucket
);
boolQuery
.
must
().
add
(
matchApplicationId
);
boolQuery
.
must
().
add
(
matchTimeBucket
);
boolQuery
.
must
().
add
(
QueryBuilders
.
termQuery
(
InstPerformanceTable
.
COLUMN_INSTANCE_ID
,
instanceId
));
boolQuery
.
must
().
add
(
QueryBuilders
.
termsQuery
(
InstPerformanceTable
.
COLUMN_TIME_BUCKET
,
timeBuckets
));
searchRequestBuilder
.
setQuery
(
boolQuery
);
searchRequestBuilder
.
setSize
(
0
);
searchRequestBuilder
.
addAggregation
(
AggregationBuilders
.
terms
(
InstPerformanceTable
.
COLUMN_INSTANCE_ID
).
field
(
InstPerformanceTable
.
COLUMN_INSTANCE_ID
)
.
subAggregation
(
AggregationBuilders
.
terms
(
InstPerformanceTable
.
COLUMN_5S_TIME_BUCKET
).
field
(
InstPerformanceTable
.
COLUMN_5S_TIME_BUCKET
)
.
subAggregation
(
AggregationBuilders
.
sum
(
InstPerformanceTable
.
COLUMN_CALL_TIMES
).
field
(
InstPerformanceTable
.
COLUMN_CALL_TIMES
))
.
subAggregation
(
AggregationBuilders
.
sum
(
InstPerformanceTable
.
COLUMN_COST_TOTAL
).
field
(
InstPerformanceTable
.
COLUMN_COST_TOTAL
))));
searchRequestBuilder
.
addAggregation
(
AggregationBuilders
.
sum
(
InstPerformanceTable
.
COLUMN_CALLS
).
field
(
InstPerformanceTable
.
COLUMN_CALLS
));
searchRequestBuilder
.
addAggregation
(
AggregationBuilders
.
sum
(
InstPerformanceTable
.
COLUMN_COST_TOTAL
).
field
(
InstPerformanceTable
.
COLUMN_COST_TOTAL
));
SearchResponse
searchResponse
=
searchRequestBuilder
.
execute
().
actionGet
();
Terms
instanceTerms
=
searchResponse
.
getAggregations
().
get
(
InstPerformanceTable
.
COLUMN_INSTANCE_ID
);
List
<
InstPerformance
>
instPerformances
=
new
LinkedList
<>();
for
(
Terms
.
Bucket
instanceBucket
:
instanceTerms
.
getBuckets
())
{
int
instanceId
=
instanceBucket
.
getKeyAsNumber
().
intValue
();
Terms
timeBucketTerms
=
instanceBucket
.
getAggregations
().
get
(
InstPerformanceTable
.
COLUMN_5S_TIME_BUCKET
);
for
(
Terms
.
Bucket
timeBucketBucket
:
timeBucketTerms
.
getBuckets
())
{
long
count
=
timeBucketBucket
.
getDocCount
();
Sum
sumCallTimes
=
timeBucketBucket
.
getAggregations
().
get
(
InstPerformanceTable
.
COLUMN_CALL_TIMES
);
Sum
sumCostTotal
=
timeBucketBucket
.
getAggregations
().
get
(
InstPerformanceTable
.
COLUMN_COST_TOTAL
);
int
avgCallTimes
=
(
int
)(
sumCallTimes
.
getValue
()
/
count
);
int
avgCost
=
(
int
)(
sumCostTotal
.
getValue
()
/
count
);
instPerformances
.
add
(
new
InstPerformance
(
instanceId
,
avgCallTimes
,
avgCost
));
}
}
return
instPerformances
;
Sum
sumCalls
=
searchResponse
.
getAggregations
().
get
(
InstPerformanceTable
.
COLUMN_CALLS
);
Sum
sumCostTotal
=
searchResponse
.
getAggregations
().
get
(
InstPerformanceTable
.
COLUMN_CALLS
);
return
new
InstPerformance
(
instanceId
,
(
int
)
sumCalls
.
getValue
(),
(
long
)
sumCostTotal
.
getValue
());
}
@Override
public
int
getTpsMetric
(
int
instanceId
,
long
timeBucket
)
{
...
...
@@ -72,7 +48,7 @@ public class InstPerformanceEsDAO extends EsDAO implements IInstPerformanceDAO {
GetResponse
getResponse
=
getClient
().
prepareGet
(
InstPerformanceTable
.
TABLE
,
id
).
get
();
if
(
getResponse
.
isExists
())
{
return
((
Number
)
getResponse
.
getSource
().
get
(
InstPerformanceTable
.
COLUMN_CALL
_TIME
S
)).
intValue
();
return
((
Number
)
getResponse
.
getSource
().
get
(
InstPerformanceTable
.
COLUMN_CALLS
)).
intValue
();
}
return
0
;
}
...
...
@@ -80,19 +56,19 @@ public class InstPerformanceEsDAO extends EsDAO implements IInstPerformanceDAO {
@Override
public
JsonArray
getTpsMetric
(
int
instanceId
,
long
startTimeBucket
,
long
endTimeBucket
)
{
MultiGetRequestBuilder
prepareMultiGet
=
getClient
().
prepareMultiGet
();
int
i
=
0
;
long
timeBucket
=
startTimeBucket
;
do
{
String
id
=
(
startTimeBucket
+
i
)
+
Const
.
ID_SPLIT
+
instanceId
;
String
id
=
timeBucket
+
Const
.
ID_SPLIT
+
instanceId
;
prepareMultiGet
.
add
(
InstPerformanceTable
.
TABLE
,
InstPerformanceTable
.
TABLE_TYPE
,
id
);
i
++
;
timeBucket
=
TimeBucketUtils
.
INSTANCE
.
addSecondForSecondTimeBucket
(
TimeBucketUtils
.
TimeBucketType
.
SECOND
.
name
(),
timeBucket
,
1
)
;
}
while
(
startTimeBucket
+
i
<=
endTimeBucket
);
while
(
timeBucket
<=
endTimeBucket
);
JsonArray
metrics
=
new
JsonArray
();
MultiGetResponse
multiGetResponse
=
prepareMultiGet
.
get
();
for
(
MultiGetItemResponse
response
:
multiGetResponse
.
getResponses
())
{
if
(
response
.
getResponse
().
isExists
())
{
metrics
.
add
(((
Number
)
response
.
getResponse
().
getSource
().
get
(
InstPerformanceTable
.
COLUMN_CALL
_TIME
S
)).
intValue
());
metrics
.
add
(((
Number
)
response
.
getResponse
().
getSource
().
get
(
InstPerformanceTable
.
COLUMN_CALLS
)).
intValue
());
}
else
{
metrics
.
add
(
0
);
}
...
...
@@ -105,7 +81,7 @@ public class InstPerformanceEsDAO extends EsDAO implements IInstPerformanceDAO {
GetResponse
getResponse
=
getClient
().
prepareGet
(
InstPerformanceTable
.
TABLE
,
id
).
get
();
if
(
getResponse
.
isExists
())
{
int
callTimes
=
((
Number
)
getResponse
.
getSource
().
get
(
InstPerformanceTable
.
COLUMN_CALL
_TIME
S
)).
intValue
();
int
callTimes
=
((
Number
)
getResponse
.
getSource
().
get
(
InstPerformanceTable
.
COLUMN_CALLS
)).
intValue
();
int
costTotal
=
((
Number
)
getResponse
.
getSource
().
get
(
InstPerformanceTable
.
COLUMN_COST_TOTAL
)).
intValue
();
return
costTotal
/
callTimes
;
}
...
...
@@ -116,18 +92,20 @@ public class InstPerformanceEsDAO extends EsDAO implements IInstPerformanceDAO {
MultiGetRequestBuilder
prepareMultiGet
=
getClient
().
prepareMultiGet
();
int
i
=
0
;
long
timeBucket
;
do
{
String
id
=
(
startTimeBucket
+
i
)
+
Const
.
ID_SPLIT
+
instanceId
;
timeBucket
=
TimeBucketUtils
.
INSTANCE
.
addSecondForSecondTimeBucket
(
TimeBucketUtils
.
TimeBucketType
.
SECOND
.
name
(),
startTimeBucket
,
i
);
String
id
=
timeBucket
+
Const
.
ID_SPLIT
+
instanceId
;
prepareMultiGet
.
add
(
InstPerformanceTable
.
TABLE
,
InstPerformanceTable
.
TABLE_TYPE
,
id
);
i
++;
}
while
(
startTimeBucket
+
i
<=
endTimeBucket
);
while
(
timeBucket
<=
endTimeBucket
);
JsonArray
metrics
=
new
JsonArray
();
MultiGetResponse
multiGetResponse
=
prepareMultiGet
.
get
();
for
(
MultiGetItemResponse
response
:
multiGetResponse
.
getResponses
())
{
if
(
response
.
getResponse
().
isExists
())
{
int
callTimes
=
((
Number
)
response
.
getResponse
().
getSource
().
get
(
InstPerformanceTable
.
COLUMN_CALL
_TIME
S
)).
intValue
();
int
callTimes
=
((
Number
)
response
.
getResponse
().
getSource
().
get
(
InstPerformanceTable
.
COLUMN_CALLS
)).
intValue
();
int
costTotal
=
((
Number
)
response
.
getResponse
().
getSource
().
get
(
InstPerformanceTable
.
COLUMN_COST_TOTAL
)).
intValue
();
metrics
.
add
(
costTotal
/
callTimes
);
}
else
{
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstPerformanceH2DAO.java
浏览文件 @
03a5db8e
package
org.skywalking.apm.collector.ui.dao
;
import
com.google.gson.JsonArray
;
import
java.util.List
;
import
org.skywalking.apm.collector.storage.h2.dao.H2DAO
;
/**
...
...
@@ -9,7 +8,7 @@ import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
*/
public
class
InstPerformanceH2DAO
extends
H2DAO
implements
IInstPerformanceDAO
{
@Override
public
List
<
InstPerformance
>
getMultiple
(
long
timestamp
,
int
application
Id
)
{
@Override
public
InstPerformance
get
(
long
[]
timeBuckets
,
int
instance
Id
)
{
return
null
;
}
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceEsDAO.java
浏览文件 @
03a5db8e
...
...
@@ -2,6 +2,8 @@ package org.skywalking.apm.collector.ui.dao;
import
com.google.gson.JsonArray
;
import
com.google.gson.JsonObject
;
import
java.util.LinkedList
;
import
java.util.List
;
import
org.elasticsearch.action.get.GetRequestBuilder
;
import
org.elasticsearch.action.get.GetResponse
;
import
org.elasticsearch.action.search.SearchRequestBuilder
;
...
...
@@ -9,7 +11,6 @@ import org.elasticsearch.action.search.SearchResponse;
import
org.elasticsearch.action.search.SearchType
;
import
org.elasticsearch.index.query.AbstractQueryBuilder
;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.index.query.MatchQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
import
org.elasticsearch.index.query.RangeQueryBuilder
;
import
org.elasticsearch.search.SearchHit
;
...
...
@@ -18,6 +19,7 @@ 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.core.util.TimeBucketUtils
;
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
;
...
...
@@ -34,17 +36,18 @@ public class InstanceEsDAO extends EsDAO implements IInstanceDAO {
@Override
public
Long
lastHeartBeatTime
()
{
long
fiveMinuteBefore
=
System
.
currentTimeMillis
()
-
5
*
60
*
1000
;
fiveMinuteBefore
=
TimeBucketUtils
.
INSTANCE
.
getSecondTimeBucket
(
fiveMinuteBefore
);
RangeQueryBuilder
rangeQueryBuilder
=
QueryBuilders
.
rangeQuery
(
InstanceTable
.
COLUMN_HEARTBEAT_TIME
).
gt
(
fiveMinuteBefore
);
return
heartBeatTime
(
rangeQueryBuilder
);
}
@Override
public
Long
instanceLastHeartBeatTime
(
long
applicationInstanceId
)
{
long
fiveMinuteBefore
=
System
.
currentTimeMillis
()
-
5
*
60
*
1000
;
fiveMinuteBefore
=
TimeBucketUtils
.
INSTANCE
.
getSecondTimeBucket
(
fiveMinuteBefore
);
BoolQueryBuilder
boolQueryBuilder
=
new
BoolQueryBuilder
();
RangeQueryBuilder
rangeQueryBuilder
=
QueryBuilders
.
rangeQuery
(
InstanceTable
.
COLUMN_HEARTBEAT_TIME
).
gt
(
fiveMinuteBefore
);
MatchQueryBuilder
matchQueryBuilder
=
QueryBuilders
.
matchQuery
(
InstanceTable
.
COLUMN_INSTANCE_ID
,
applicationInstanceId
);
boolQueryBuilder
.
must
(
rangeQueryBuilder
);
boolQueryBuilder
.
must
(
matchQueryBuilder
);
boolQueryBuilder
.
must
(
QueryBuilders
.
rangeQuery
(
InstanceTable
.
COLUMN_HEARTBEAT_TIME
).
gt
(
fiveMinuteBefore
));
boolQueryBuilder
.
must
(
QueryBuilders
.
termQuery
(
InstanceTable
.
COLUMN_INSTANCE_ID
,
applicationInstanceId
));
return
heartBeatTime
(
boolQueryBuilder
);
}
...
...
@@ -114,4 +117,30 @@ public class InstanceEsDAO extends EsDAO implements IInstanceDAO {
}
return
null
;
}
@Override
public
List
<
InstanceDataDefine
.
Instance
>
getInstances
(
int
applicationId
,
long
timeBucket
)
{
logger
.
debug
(
"get instances info, application id: {}, timeBucket: {}"
,
applicationId
,
timeBucket
);
SearchRequestBuilder
searchRequestBuilder
=
getClient
().
prepareSearch
(
InstanceTable
.
TABLE
);
searchRequestBuilder
.
setTypes
(
InstanceTable
.
TABLE_TYPE
);
searchRequestBuilder
.
setSearchType
(
SearchType
.
DFS_QUERY_THEN_FETCH
);
searchRequestBuilder
.
setSize
(
1000
);
BoolQueryBuilder
boolQuery
=
QueryBuilders
.
boolQuery
();
boolQuery
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
InstanceTable
.
COLUMN_HEARTBEAT_TIME
).
gte
(
timeBucket
));
boolQuery
.
must
().
add
(
QueryBuilders
.
termQuery
(
InstanceTable
.
COLUMN_APPLICATION_ID
,
applicationId
));
searchRequestBuilder
.
setQuery
(
boolQuery
);
SearchResponse
searchResponse
=
searchRequestBuilder
.
execute
().
actionGet
();
SearchHit
[]
searchHits
=
searchResponse
.
getHits
().
getHits
();
List
<
InstanceDataDefine
.
Instance
>
instanceList
=
new
LinkedList
<>();
for
(
SearchHit
searchHit
:
searchHits
)
{
InstanceDataDefine
.
Instance
instance
=
new
InstanceDataDefine
.
Instance
();
instance
.
setApplicationId
(((
Number
)
searchHit
.
getSource
().
get
(
InstanceTable
.
COLUMN_APPLICATION_ID
)).
intValue
());
instance
.
setHeartBeatTime
(((
Number
)
searchHit
.
getSource
().
get
(
InstanceTable
.
COLUMN_HEARTBEAT_TIME
)).
longValue
());
instance
.
setInstanceId
(((
Number
)
searchHit
.
getSource
().
get
(
InstanceTable
.
COLUMN_INSTANCE_ID
)).
intValue
());
instanceList
.
add
(
instance
);
}
return
instanceList
;
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceH2DAO.java
浏览文件 @
03a5db8e
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
;
...
...
@@ -23,4 +24,8 @@ public class InstanceH2DAO extends H2DAO implements IInstanceDAO {
@Override
public
InstanceDataDefine
.
Instance
getInstance
(
int
instanceId
)
{
return
null
;
}
@Override
public
List
<
InstanceDataDefine
.
Instance
>
getInstances
(
int
applicationId
,
long
timeBucket
)
{
return
null
;
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/MemoryMetricEsDAO.java
浏览文件 @
03a5db8e
...
...
@@ -7,6 +7,7 @@ import org.elasticsearch.action.get.MultiGetItemResponse;
import
org.elasticsearch.action.get.MultiGetRequestBuilder
;
import
org.elasticsearch.action.get.MultiGetResponse
;
import
org.skywalking.apm.collector.core.util.Const
;
import
org.skywalking.apm.collector.core.util.TimeBucketUtils
;
import
org.skywalking.apm.collector.storage.define.jvm.MemoryMetricTable
;
import
org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO
;
...
...
@@ -36,22 +37,25 @@ public class MemoryMetricEsDAO extends EsDAO implements IMemoryMetricDAO {
MultiGetRequestBuilder
prepareMultiGet
=
getClient
().
prepareMultiGet
();
int
i
=
0
;
long
timeBucket
=
startTimeBucket
;
do
{
String
id
=
(
startTimeBucket
+
i
)
+
Const
.
ID_SPLIT
+
instanceId
+
Const
.
ID_SPLIT
+
isHeap
;
timeBucket
=
TimeBucketUtils
.
INSTANCE
.
addSecondForSecondTimeBucket
(
TimeBucketUtils
.
TimeBucketType
.
SECOND
.
name
(),
timeBucket
,
1
);
String
id
=
timeBucket
+
Const
.
ID_SPLIT
+
instanceId
+
Const
.
ID_SPLIT
+
isHeap
;
prepareMultiGet
.
add
(
MemoryMetricTable
.
TABLE
,
MemoryMetricTable
.
TABLE_TYPE
,
id
);
i
++;
}
while
(
startTimeBucket
+
i
<=
endTimeBucket
);
while
(
timeBucket
<=
endTimeBucket
);
JsonObject
metric
=
new
JsonObject
();
JsonArray
usedMetric
=
new
JsonArray
();
MultiGetResponse
multiGetResponse
=
prepareMultiGet
.
get
();
for
(
MultiGetItemResponse
response
:
multiGetResponse
.
getResponses
())
{
if
(
response
.
getResponse
().
isExists
())
{
metric
.
addProperty
(
"max"
,
((
Number
)
response
.
getResponse
().
getSource
().
get
(
MemoryMetricTable
.
COLUMN_MAX
)).
int
Value
());
metric
.
addProperty
(
"init"
,
((
Number
)
response
.
getResponse
().
getSource
().
get
(
MemoryMetricTable
.
COLUMN_INIT
)).
int
Value
());
usedMetric
.
add
(((
Number
)
response
.
getResponse
().
getSource
().
get
(
MemoryMetricTable
.
COLUMN_USED
)).
int
Value
());
metric
.
addProperty
(
"max"
,
((
Number
)
response
.
getResponse
().
getSource
().
get
(
MemoryMetricTable
.
COLUMN_MAX
)).
long
Value
());
metric
.
addProperty
(
"init"
,
((
Number
)
response
.
getResponse
().
getSource
().
get
(
MemoryMetricTable
.
COLUMN_INIT
)).
long
Value
());
usedMetric
.
add
(((
Number
)
response
.
getResponse
().
getSource
().
get
(
MemoryMetricTable
.
COLUMN_USED
)).
long
Value
());
}
else
{
metric
.
addProperty
(
"max"
,
0
);
metric
.
addProperty
(
"init"
,
0
);
usedMetric
.
add
(
0
);
}
}
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/MemoryPoolMetricEsDAO.java
浏览文件 @
03a5db8e
...
...
@@ -7,6 +7,7 @@ import org.elasticsearch.action.get.MultiGetItemResponse;
import
org.elasticsearch.action.get.MultiGetRequestBuilder
;
import
org.elasticsearch.action.get.MultiGetResponse
;
import
org.skywalking.apm.collector.core.util.Const
;
import
org.skywalking.apm.collector.core.util.TimeBucketUtils
;
import
org.skywalking.apm.collector.storage.define.jvm.MemoryPoolMetricTable
;
import
org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO
;
...
...
@@ -36,23 +37,25 @@ public class MemoryPoolMetricEsDAO extends EsDAO implements IMemoryPoolMetricDAO
int
poolType
)
{
MultiGetRequestBuilder
prepareMultiGet
=
getClient
().
prepareMultiGet
();
int
i
=
0
;
long
timeBucket
=
startTimeBucket
;
do
{
String
id
=
(
startTimeBucket
+
i
)
+
Const
.
ID_SPLIT
+
instanceId
+
Const
.
ID_SPLIT
+
isHeap
+
Const
.
ID_SPLIT
+
poolType
;
timeBucket
=
TimeBucketUtils
.
INSTANCE
.
addSecondForSecondTimeBucket
(
TimeBucketUtils
.
TimeBucketType
.
SECOND
.
name
(),
timeBucket
,
1
);
String
id
=
timeBucket
+
Const
.
ID_SPLIT
+
instanceId
+
Const
.
ID_SPLIT
+
isHeap
+
Const
.
ID_SPLIT
+
poolType
;
prepareMultiGet
.
add
(
MemoryPoolMetricTable
.
TABLE
,
MemoryPoolMetricTable
.
TABLE_TYPE
,
id
);
i
++;
}
while
(
startTimeBucket
+
i
<=
endTimeBucket
);
while
(
timeBucket
<=
endTimeBucket
);
JsonObject
metric
=
new
JsonObject
();
JsonArray
usedMetric
=
new
JsonArray
();
MultiGetResponse
multiGetResponse
=
prepareMultiGet
.
get
();
for
(
MultiGetItemResponse
response
:
multiGetResponse
.
getResponses
())
{
if
(
response
.
getResponse
().
isExists
())
{
metric
.
addProperty
(
"max"
,
((
Number
)
response
.
getResponse
().
getSource
().
get
(
MemoryPoolMetricTable
.
COLUMN_MAX
)).
int
Value
());
metric
.
addProperty
(
"init"
,
((
Number
)
response
.
getResponse
().
getSource
().
get
(
MemoryPoolMetricTable
.
COLUMN_INIT
)).
int
Value
());
usedMetric
.
add
(((
Number
)
response
.
getResponse
().
getSource
().
get
(
MemoryPoolMetricTable
.
COLUMN_USED
)).
int
Value
());
metric
.
addProperty
(
"max"
,
((
Number
)
response
.
getResponse
().
getSource
().
get
(
MemoryPoolMetricTable
.
COLUMN_MAX
)).
long
Value
());
metric
.
addProperty
(
"init"
,
((
Number
)
response
.
getResponse
().
getSource
().
get
(
MemoryPoolMetricTable
.
COLUMN_INIT
)).
long
Value
());
usedMetric
.
add
(((
Number
)
response
.
getResponse
().
getSource
().
get
(
MemoryPoolMetricTable
.
COLUMN_USED
)).
long
Value
());
}
else
{
metric
.
addProperty
(
"max"
,
0
);
metric
.
addProperty
(
"init"
,
0
);
usedMetric
.
add
(
0
);
}
}
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentCostEsDAO.java
浏览文件 @
03a5db8e
...
...
@@ -25,7 +25,7 @@ import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
public
class
SegmentCostEsDAO
extends
EsDAO
implements
ISegmentCostDAO
{
@Override
public
JsonObject
loadTop
(
long
startTime
,
long
endTime
,
long
minCost
,
long
maxCost
,
String
operationName
,
String
globalTraceId
,
int
limit
,
int
from
,
Sort
sort
)
{
List
<
String
>
segmentIds
,
int
limit
,
int
from
,
Sort
sort
)
{
SearchRequestBuilder
searchRequestBuilder
=
getClient
().
prepareSearch
(
SegmentCostTable
.
TABLE
);
searchRequestBuilder
.
setTypes
(
SegmentCostTable
.
TABLE_TYPE
);
searchRequestBuilder
.
setSearchType
(
SearchType
.
DFS_QUERY_THEN_FETCH
);
...
...
@@ -44,9 +44,12 @@ public class SegmentCostEsDAO extends EsDAO implements ISegmentCostDAO {
}
boolQueryBuilder
.
must
().
add
(
rangeQueryBuilder
);
}
if
(
!
StringUtils
.
is
Empty
(
operationName
))
{
if
(
StringUtils
.
isNot
Empty
(
operationName
))
{
mustQueryList
.
add
(
QueryBuilders
.
matchQuery
(
SegmentCostTable
.
COLUMN_SERVICE_NAME
,
operationName
));
}
if
(
CollectionUtils
.
isNotEmpty
(
segmentIds
))
{
boolQueryBuilder
.
must
().
add
(
QueryBuilders
.
termsQuery
(
SegmentCostTable
.
COLUMN_SEGMENT_ID
,
segmentIds
.
toArray
(
new
String
[
0
])));
}
if
(
Sort
.
Cost
.
equals
(
sort
))
{
searchRequestBuilder
.
addSort
(
SegmentCostTable
.
COLUMN_COST
,
SortOrder
.
DESC
);
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentCostH2DAO.java
浏览文件 @
03a5db8e
package
org.skywalking.apm.collector.ui.dao
;
import
com.google.gson.JsonObject
;
import
java.util.List
;
import
org.skywalking.apm.collector.storage.h2.dao.H2DAO
;
/**
...
...
@@ -8,7 +9,7 @@ import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
*/
public
class
SegmentCostH2DAO
extends
H2DAO
implements
ISegmentCostDAO
{
@Override
public
JsonObject
loadTop
(
long
startTime
,
long
endTime
,
long
minCost
,
long
maxCost
,
String
operationName
,
String
globalTraceId
,
int
limit
,
int
from
,
Sort
sort
)
{
List
<
String
>
segmentIds
,
int
limit
,
int
from
,
Sort
sort
)
{
return
null
;
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceNameEsDAO.java
浏览文件 @
03a5db8e
...
...
@@ -22,7 +22,9 @@ public class ServiceNameEsDAO extends EsDAO implements IServiceNameDAO {
GetResponse
getResponse
=
getRequestBuilder
.
get
();
if
(
getResponse
.
isExists
())
{
return
(
String
)
getResponse
.
getSource
().
get
(
ServiceNameTable
.
COLUMN_SERVICE_NAME
);
String
serviceName
=
(
String
)
getResponse
.
getSource
().
get
(
ServiceNameTable
.
COLUMN_SERVICE_NAME
);
int
applicationId
=
((
Number
)
getResponse
.
getSource
().
get
(
ServiceNameTable
.
COLUMN_APPLICATION_ID
)).
intValue
();
return
applicationId
+
Const
.
ID_SPLIT
+
serviceName
;
}
return
Const
.
UNKNOWN
;
}
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java
浏览文件 @
03a5db8e
...
...
@@ -2,6 +2,8 @@ package org.skywalking.apm.collector.ui.dao;
import
com.google.gson.JsonArray
;
import
com.google.gson.JsonObject
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
org.elasticsearch.action.search.SearchRequestBuilder
;
import
org.elasticsearch.action.search.SearchResponse
;
import
org.elasticsearch.action.search.SearchType
;
...
...
@@ -27,21 +29,60 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ServiceReferenceEsDAO
.
class
);
@Override
public
JsonArray
load
(
String
entryServiceName
,
int
entryApplicationId
,
long
startTime
,
long
endTime
)
{
SearchRequestBuilder
searchRequestBuilder
=
getClient
().
prepareSearch
(
ServiceReferenceTable
.
TABLE
);
searchRequestBuilder
.
setTypes
(
ServiceReferenceTable
.
TABLE_TYPE
);
searchRequestBuilder
.
setSearchType
(
SearchType
.
DFS_QUERY_THEN_FETCH
);
BoolQueryBuilder
boolQuery
=
QueryBuilders
.
boolQuery
();
boolQuery
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
ServiceReferenceTable
.
COLUMN_TIME_BUCKET
).
gte
(
startTime
).
lte
(
endTime
));
boolQuery
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
ServiceReferenceTable
.
COLUMN_TIME_BUCKET
).
gte
(
startTime
).
lte
(
endTime
));
int
entryServiceId
=
ServiceIdCache
.
get
(
entryApplicationId
,
entryServiceName
);
BoolQueryBuilder
entryBoolQuery
=
QueryBuilders
.
boolQuery
();
if
(
entryServiceId
!=
0
)
{
entryBoolQuery
.
should
().
add
(
QueryBuilders
.
matchQuery
(
ServiceReferenceTable
.
COLUMN_ENTRY_SERVICE_ID
,
entryServiceId
));
}
entryBoolQuery
.
should
().
add
(
QueryBuilders
.
matchQuery
(
ServiceReferenceTable
.
COLUMN_ENTRY_SERVICE_NAME
,
entryApplicationId
+
Const
.
ID_SPLIT
+
entryServiceName
));
boolQuery
.
must
(
entryBoolQuery
);
searchRequestBuilder
.
setQuery
(
boolQuery
);
searchRequestBuilder
.
setSize
(
0
);
return
load
(
searchRequestBuilder
);
}
@Override
public
JsonArray
load
(
int
entryServiceId
,
long
startTime
,
long
endTime
)
{
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
));
boolQuery
.
must
().
add
(
QueryBuilders
.
rangeQuery
(
ServiceReferenceTable
.
COLUMN_TIME_BUCKET
).
gte
(
startTime
).
lte
(
endTime
));
String
entryServiceName
=
ServiceNameCache
.
get
(
entryServiceId
);
BoolQueryBuilder
entryBoolQuery
=
QueryBuilders
.
boolQuery
();
entryBoolQuery
.
should
().
add
(
QueryBuilders
.
matchQuery
(
ServiceReferenceTable
.
COLUMN_ENTRY_SERVICE_ID
,
entryServiceId
));
entryBoolQuery
.
should
().
add
(
QueryBuilders
.
matchQuery
(
ServiceReferenceTable
.
COLUMN_ENTRY_SERVICE_NAME
,
entryServiceName
));
boolQuery
.
must
(
entryBoolQuery
);
searchRequestBuilder
.
setQuery
(
boolQuery
);
searchRequestBuilder
.
setSize
(
0
);
return
load
(
searchRequestBuilder
);
}
private
JsonArray
load
(
SearchRequestBuilder
searchRequestBuilder
)
{
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
.
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
)))
.
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
))
...
...
@@ -53,7 +94,13 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
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
.
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
)))
.
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
))
...
...
@@ -87,6 +134,8 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
private
void
parseSubAggregate
(
JsonArray
serviceReferenceArray
,
Terms
.
Bucket
frontServiceBucket
,
int
frontServiceId
)
{
Map
<
String
,
JsonObject
>
serviceReferenceMap
=
new
LinkedHashMap
<>();
Terms
behindServiceIdTerms
=
frontServiceBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_ID
);
for
(
Terms
.
Bucket
behindServiceIdBucket
:
behindServiceIdTerms
.
getBuckets
())
{
int
behindServiceId
=
behindServiceIdBucket
.
getKeyAsNumber
().
intValue
();
...
...
@@ -100,7 +149,13 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
Sum
costSum
=
behindServiceIdBucket
.
getAggregations
().
get
(
ServiceReferenceTable
.
COLUMN_COST_SUMMARY
);
String
frontServiceName
=
ServiceNameCache
.
getForUI
(
frontServiceId
);
if
(
StringUtils
.
isNotEmpty
(
frontServiceName
))
{
frontServiceName
=
frontServiceName
.
split
(
Const
.
ID_SPLIT
)[
1
];
}
String
behindServiceName
=
ServiceNameCache
.
getForUI
(
behindServiceId
);
if
(
StringUtils
.
isNotEmpty
(
frontServiceName
))
{
behindServiceName
=
behindServiceName
.
split
(
Const
.
ID_SPLIT
)[
1
];
}
JsonObject
serviceReference
=
new
JsonObject
();
serviceReference
.
addProperty
(
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_FRONT_SERVICE_ID
),
frontServiceId
);
...
...
@@ -114,7 +169,7 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
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
);
merge
(
serviceReferenceMap
,
serviceReference
);
}
}
...
...
@@ -147,8 +202,33 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO
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
);
merge
(
serviceReferenceMap
,
serviceReference
);
}
}
serviceReferenceMap
.
values
().
forEach
(
serviceReferenceArray:
:
add
);
}
private
void
merge
(
Map
<
String
,
JsonObject
>
serviceReferenceMap
,
JsonObject
serviceReference
)
{
String
id
=
serviceReference
.
get
(
ServiceReferenceTable
.
COLUMN_FRONT_SERVICE_ID
)
+
Const
.
ID_SPLIT
+
serviceReference
.
get
(
ServiceReferenceTable
.
COLUMN_BEHIND_SERVICE_ID
);
if
(
serviceReferenceMap
.
containsKey
(
id
))
{
JsonObject
reference
=
serviceReferenceMap
.
get
(
id
);
add
(
reference
,
serviceReference
,
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_S1_LTE
));
add
(
reference
,
serviceReference
,
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_S3_LTE
));
add
(
reference
,
serviceReference
,
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_S5_LTE
));
add
(
reference
,
serviceReference
,
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_S5_GT
));
add
(
reference
,
serviceReference
,
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_ERROR
));
add
(
reference
,
serviceReference
,
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_SUMMARY
));
add
(
reference
,
serviceReference
,
ColumnNameUtils
.
INSTANCE
.
rename
(
ServiceReferenceTable
.
COLUMN_COST_SUMMARY
));
}
else
{
serviceReferenceMap
.
put
(
id
,
serviceReference
);
}
}
private
void
add
(
JsonObject
oldReference
,
JsonObject
newReference
,
String
key
)
{
long
oldValue
=
oldReference
.
get
(
key
).
getAsLong
();
long
newValue
=
newReference
.
get
(
key
).
getAsLong
();
oldReference
.
addProperty
(
key
,
oldValue
+
newValue
);
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceH2DAO.java
浏览文件 @
03a5db8e
...
...
@@ -11,4 +11,8 @@ public class ServiceReferenceH2DAO extends H2DAO implements IServiceReferenceDAO
@Override
public
JsonArray
load
(
int
entryServiceId
,
long
startTime
,
long
endTime
)
{
return
null
;
}
@Override
public
JsonArray
load
(
String
entryServiceName
,
int
entryApplicationId
,
long
startTime
,
long
endTime
)
{
return
null
;
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleDefine.java
浏览文件 @
03a5db8e
...
...
@@ -21,7 +21,8 @@ import org.skywalking.apm.collector.ui.jetty.handler.instancemetric.InstanceMetr
import
org.skywalking.apm.collector.ui.jetty.handler.instancemetric.InstanceMetricGetRangeTimeBucketHandler
;
import
org.skywalking.apm.collector.ui.jetty.handler.instancemetric.InstanceOsInfoGetHandler
;
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.servicetree.ServiceTreeGetByIdHandler
;
import
org.skywalking.apm.collector.ui.jetty.handler.servicetree.ServiceTreeGetByNameHandler
;
import
org.skywalking.apm.collector.ui.jetty.handler.time.AllInstanceLastTimeGetHandler
;
import
org.skywalking.apm.collector.ui.jetty.handler.time.OneInstanceLastTimeGetHandler
;
...
...
@@ -71,7 +72,8 @@ public class UIJettyModuleDefine extends UIModuleDefine {
handlers
.
add
(
new
InstanceMetricGetOneTimeBucketHandler
());
handlers
.
add
(
new
InstanceMetricGetRangeTimeBucketHandler
());
handlers
.
add
(
new
EntryServiceGetHandler
());
handlers
.
add
(
new
ServiceTreeGetHandler
());
handlers
.
add
(
new
ServiceTreeGetByIdHandler
());
handlers
.
add
(
new
ServiceTreeGetByNameHandler
());
return
handlers
;
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetHandler.java
→
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGet
ById
Handler.java
浏览文件 @
03a5db8e
...
...
@@ -11,12 +11,12 @@ import org.slf4j.LoggerFactory;
/**
* @author pengys5
*/
public
class
ServiceTreeGetHandler
extends
JettyHandler
{
public
class
ServiceTreeGet
ById
Handler
extends
JettyHandler
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ServiceTreeGetHandler
.
class
);
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ServiceTreeGet
ById
Handler
.
class
);
@Override
public
String
pathSpec
()
{
return
"/service/tree"
;
return
"/service/tree
/entryServiceId
"
;
}
private
ServiceTreeService
service
=
new
ServiceTreeService
();
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetByNameHandler.java
0 → 100644
浏览文件 @
03a5db8e
package
org.skywalking.apm.collector.ui.jetty.handler.servicetree
;
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.ServiceTreeService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
/**
* @author pengys5
*/
public
class
ServiceTreeGetByNameHandler
extends
JettyHandler
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ServiceTreeGetByNameHandler
.
class
);
@Override
public
String
pathSpec
()
{
return
"/service/tree/entryServiceName"
;
}
private
ServiceTreeService
service
=
new
ServiceTreeService
();
@Override
protected
JsonElement
doGet
(
HttpServletRequest
req
)
throws
ArgumentsParseException
{
if
(!
req
.
getParameterMap
().
containsKey
(
"entryServiceName"
)
||
!
req
.
getParameterMap
().
containsKey
(
"entryApplicationId"
)
||
!
req
.
getParameterMap
().
containsKey
(
"startTime"
)
||
!
req
.
getParameterMap
().
containsKey
(
"endTime"
))
{
throw
new
ArgumentsParseException
(
"must contains parameters: entryServiceName, entryApplicationId, startTime, endTime"
);
}
String
entryServiceName
=
req
.
getParameter
(
"entryServiceName"
);
String
entryApplicationIdStr
=
req
.
getParameter
(
"entryApplicationId"
);
String
startTimeStr
=
req
.
getParameter
(
"startTime"
);
String
endTimeStr
=
req
.
getParameter
(
"endTime"
);
logger
.
debug
(
"service entry get entryServiceName: {}, startTime: {}, endTime: {}"
,
entryServiceName
,
startTimeStr
,
endTimeStr
);
int
entryApplicationId
;
try
{
entryApplicationId
=
Integer
.
parseInt
(
entryApplicationIdStr
);
}
catch
(
NumberFormatException
e
)
{
throw
new
ArgumentsParseException
(
"entry 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"
);
}
return
service
.
loadServiceTree
(
entryServiceName
,
entryApplicationId
,
startTime
,
endTime
);
}
@Override
protected
JsonElement
doPost
(
HttpServletRequest
req
)
throws
ArgumentsParseException
{
throw
new
UnsupportedOperationException
();
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/AllInstanceLastTimeGetHandler.java
浏览文件 @
03a5db8e
...
...
@@ -28,12 +28,18 @@ public class AllInstanceLastTimeGetHandler extends JettyHandler {
Long
timeBucket
=
service
.
allInstanceLastTime
();
logger
.
debug
(
"all instance last time: {}"
,
timeBucket
);
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTimeInMillis
(
TimeBucketUtils
.
INSTANCE
.
changeTimeBucket2TimeStamp
(
TimeBucketUtils
.
TimeBucketType
.
SECOND
.
name
(),
timeBucket
));
calendar
.
add
(
Calendar
.
SECOND
,
-
5
);
long
instanceTimeBucket
;
if
(
timeBucket
==
0
)
{
instanceTimeBucket
=
0
;
}
else
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTimeInMillis
(
TimeBucketUtils
.
INSTANCE
.
changeTimeBucket2TimeStamp
(
TimeBucketUtils
.
TimeBucketType
.
SECOND
.
name
(),
timeBucket
));
calendar
.
add
(
Calendar
.
SECOND
,
-
5
);
instanceTimeBucket
=
calendar
.
getTimeInMillis
();
}
JsonObject
timeJson
=
new
JsonObject
();
timeJson
.
addProperty
(
"timeBucket"
,
TimeBucketUtils
.
INSTANCE
.
getSecondTimeBucket
(
calendar
.
getTimeInMillis
()
));
timeJson
.
addProperty
(
"timeBucket"
,
TimeBucketUtils
.
INSTANCE
.
getSecondTimeBucket
(
instanceTimeBucket
));
return
timeJson
;
}
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java
浏览文件 @
03a5db8e
...
...
@@ -5,9 +5,11 @@ import com.google.gson.JsonObject;
import
java.util.List
;
import
org.skywalking.apm.collector.core.util.TimeBucketUtils
;
import
org.skywalking.apm.collector.storage.dao.DAOContainer
;
import
org.skywalking.apm.collector.storage.define.register.InstanceDataDefine
;
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
;
...
...
@@ -21,23 +23,29 @@ public class InstanceHealthService {
public
JsonObject
getInstances
(
long
timeBucket
,
int
applicationId
)
{
JsonObject
response
=
new
JsonObject
();
long
s5TimeBucket
=
TimeBucketUtils
.
INSTANCE
.
getFiveSecondTimeBucket
(
timeBucket
);
long
[]
timeBuckets
=
TimeBucketUtils
.
INSTANCE
.
getFiveSecondTimeBuckets
(
timeBucket
);
long
halfHourBeforeTimeBucket
=
TimeBucketUtils
.
INSTANCE
.
addSecondForSecondTimeBucket
(
TimeBucketUtils
.
TimeBucketType
.
SECOND
.
name
(),
timeBucket
,
-
60
*
30
);
IInstanceDAO
instanceDAO
=
(
IInstanceDAO
)
DAOContainer
.
INSTANCE
.
get
(
IInstanceDAO
.
class
.
getName
());
List
<
InstanceDataDefine
.
Instance
>
instanceList
=
instanceDAO
.
getInstances
(
applicationId
,
halfHourBeforeTimeBucket
);
IInstPerformanceDAO
instPerformanceDAO
=
(
IInstPerformanceDAO
)
DAOContainer
.
INSTANCE
.
get
(
IInstPerformanceDAO
.
class
.
getName
());
List
<
IInstPerformanceDAO
.
InstPerformance
>
performances
=
instPerformanceDAO
.
getMultiple
(
s5TimeBucket
,
applicationId
);
instanceList
.
forEach
(
instance
->
{
JsonArray
instances
=
new
JsonArray
();
response
.
addProperty
(
"applicationCode"
,
ApplicationCache
.
getForUI
(
applicationId
));
response
.
addProperty
(
"applicationId"
,
applicationId
);
response
.
add
(
"instances"
,
instances
);
JsonArray
instances
=
new
JsonArray
();
response
.
addProperty
(
"applicationCode"
,
ApplicationCache
.
getForUI
(
applicationId
));
response
.
addProperty
(
"applicationId"
,
applicationId
);
response
.
add
(
"instances"
,
instances
);
IInstPerformanceDAO
instPerformanceDAO
=
(
IInstPerformanceDAO
)
DAOContainer
.
INSTANCE
.
get
(
IInstPerformanceDAO
.
class
.
getName
());
IInstPerformanceDAO
.
InstPerformance
performance
=
instPerformanceDAO
.
get
(
timeBuckets
,
instance
.
getInstanceId
());
IGCMetricDAO
gcMetricDAO
=
(
IGCMetricDAO
)
DAOContainer
.
INSTANCE
.
get
(
IGCMetricDAO
.
class
.
getName
());
performances
.
forEach
(
instance
->
{
IGCMetricDAO
gcMetricDAO
=
(
IGCMetricDAO
)
DAOContainer
.
INSTANCE
.
get
(
IGCMetricDAO
.
class
.
getName
());
JsonObject
instanceJson
=
new
JsonObject
();
instanceJson
.
addProperty
(
"id"
,
instance
.
getInstanceId
());
instanceJson
.
addProperty
(
"tps"
,
instance
.
getCallTime
s
());
instanceJson
.
addProperty
(
"tps"
,
performance
.
getCall
s
());
int
avg
=
(
int
)(
instance
.
getCostTotal
()
/
instance
.
getCallTimes
());
int
avg
=
0
;
if
(
performance
.
getCalls
()
!=
0
)
{
avg
=
(
int
)(
performance
.
getCostTotal
()
/
performance
.
getCalls
());
}
instanceJson
.
addProperty
(
"avg"
,
avg
);
if
(
avg
>
5000
)
{
...
...
@@ -50,14 +58,22 @@ public class InstanceHealthService {
instanceJson
.
addProperty
(
"healthLevel"
,
3
);
}
instanceJson
.
addProperty
(
"status"
,
0
);
long
heartBeatTime
=
TimeBucketUtils
.
INSTANCE
.
changeTimeBucket2TimeStamp
(
TimeBucketUtils
.
TimeBucketType
.
SECOND
.
name
(),
instance
.
getHeartBeatTime
());
long
currentTime
=
TimeBucketUtils
.
INSTANCE
.
changeTimeBucket2TimeStamp
(
TimeBucketUtils
.
TimeBucketType
.
SECOND
.
name
(),
timeBucket
);
IGCMetricDAO
.
GCCount
gcCount
=
gcMetricDAO
.
getGCCount
(
s5TimeBucket
,
instance
.
getInstanceId
());
if
(
currentTime
-
heartBeatTime
<
1000
*
60
*
2
)
{
instanceJson
.
addProperty
(
"status"
,
0
);
}
else
{
instanceJson
.
addProperty
(
"status"
,
1
);
}
IGCMetricDAO
.
GCCount
gcCount
=
gcMetricDAO
.
getGCCount
(
timeBuckets
,
instance
.
getInstanceId
());
instanceJson
.
addProperty
(
"ygc"
,
gcCount
.
getYoung
());
instanceJson
.
addProperty
(
"ogc"
,
gcCount
.
getOld
());
instances
.
add
(
instanceJson
);
});
return
response
;
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SegmentTopService.java
浏览文件 @
03a5db8e
package
org.skywalking.apm.collector.ui.service
;
import
com.google.gson.JsonObject
;
import
java.util.LinkedList
;
import
java.util.List
;
import
org.skywalking.apm.collector.core.util.StringUtils
;
import
org.skywalking.apm.collector.storage.dao.DAOContainer
;
import
org.skywalking.apm.collector.ui.dao.IGlobalTraceDAO
;
import
org.skywalking.apm.collector.ui.dao.ISegmentCostDAO
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -16,7 +20,13 @@ public class SegmentTopService {
public
JsonObject
loadTop
(
long
startTime
,
long
endTime
,
long
minCost
,
long
maxCost
,
String
operationName
,
String
globalTraceId
,
int
limit
,
int
from
,
ISegmentCostDAO
.
Sort
sort
)
{
logger
.
debug
(
"startTime: {}, endTime: {}, minCost: {}, maxCost: {}, operationName: {}, globalTraceId: {}, limit: {}, from: {}"
,
startTime
,
endTime
,
minCost
,
maxCost
,
operationName
,
globalTraceId
,
limit
,
from
);
List
<
String
>
segmentIds
=
new
LinkedList
<>();
if
(
StringUtils
.
isNotEmpty
(
globalTraceId
))
{
IGlobalTraceDAO
globalTraceDAO
=
(
IGlobalTraceDAO
)
DAOContainer
.
INSTANCE
.
get
(
IGlobalTraceDAO
.
class
.
getName
());
segmentIds
=
globalTraceDAO
.
getSegmentIds
(
globalTraceId
);
}
ISegmentCostDAO
segmentCostDAO
=
(
ISegmentCostDAO
)
DAOContainer
.
INSTANCE
.
get
(
ISegmentCostDAO
.
class
.
getName
());
return
segmentCostDAO
.
loadTop
(
startTime
,
endTime
,
minCost
,
maxCost
,
operationName
,
globalTraceId
,
limit
,
from
,
sort
);
return
segmentCostDAO
.
loadTop
(
startTime
,
endTime
,
minCost
,
maxCost
,
operationName
,
segmentIds
,
limit
,
from
,
sort
);
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java
浏览文件 @
03a5db8e
...
...
@@ -21,4 +21,9 @@ public class ServiceTreeService {
IServiceReferenceDAO
serviceReferenceDAO
=
(
IServiceReferenceDAO
)
DAOContainer
.
INSTANCE
.
get
(
IServiceReferenceDAO
.
class
.
getName
());
return
serviceReferenceDAO
.
load
(
entryServiceId
,
startTime
,
endTime
);
}
public
JsonArray
loadServiceTree
(
String
entryServiceName
,
int
entryApplicationId
,
long
startTime
,
long
endTime
)
{
IServiceReferenceDAO
serviceReferenceDAO
=
(
IServiceReferenceDAO
)
DAOContainer
.
INSTANCE
.
get
(
IServiceReferenceDAO
.
class
.
getName
());
return
serviceReferenceDAO
.
load
(
entryServiceName
,
entryApplicationId
,
startTime
,
endTime
);
}
}
\ No newline at end of file
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SpanService.java
浏览文件 @
03a5db8e
...
...
@@ -3,13 +3,17 @@ package org.skywalking.apm.collector.ui.service;
import
com.google.gson.JsonArray
;
import
com.google.gson.JsonObject
;
import
java.util.List
;
import
org.skywalking.apm.collector.core.util.Const
;
import
org.skywalking.apm.collector.core.util.StringUtils
;
import
org.skywalking.apm.collector.storage.dao.DAOContainer
;
import
org.skywalking.apm.collector.ui.cache.ApplicationCache
;
import
org.skywalking.apm.collector.ui.cache.ServiceNameCache
;
import
org.skywalking.apm.collector.ui.dao.ISegmentDAO
;
import
org.skywalking.apm.network.proto.KeyWithStringValue
;
import
org.skywalking.apm.network.proto.LogMessage
;
import
org.skywalking.apm.network.proto.SpanObject
;
import
org.skywalking.apm.network.proto.TraceSegmentObject
;
import
org.skywalking.apm.network.trace.component.ComponentsDefine
;
/**
* @author pengys5
...
...
@@ -26,7 +30,10 @@ public class SpanService {
if
(
spanId
==
spanObject
.
getSpanId
())
{
String
operationName
=
spanObject
.
getOperationName
();
if
(
spanObject
.
getOperationNameId
()
!=
0
)
{
operationName
=
ServiceNameCache
.
get
(
spanObject
.
getOperationNameId
());
String
serviceName
=
ServiceNameCache
.
get
(
spanObject
.
getOperationNameId
());
if
(
StringUtils
.
isNotEmpty
(
serviceName
))
{
operationName
=
serviceName
.
split
(
Const
.
ID_SPLIT
)[
1
];
}
}
spanJson
.
addProperty
(
"operationName"
,
operationName
);
spanJson
.
addProperty
(
"startTime"
,
spanObject
.
getStartTime
());
...
...
@@ -51,12 +58,42 @@ public class SpanService {
spanJson
.
add
(
"logMessage"
,
logsArray
);
JsonArray
tagsArray
=
new
JsonArray
();
JsonObject
spanTypeJson
=
new
JsonObject
();
spanTypeJson
.
addProperty
(
"key"
,
"span type"
);
spanTypeJson
.
addProperty
(
"value"
,
spanObject
.
getSpanType
().
name
());
tagsArray
.
add
(
spanTypeJson
);
JsonObject
componentJson
=
new
JsonObject
();
componentJson
.
addProperty
(
"key"
,
"component"
);
if
(
spanObject
.
getComponentId
()
==
0
)
{
componentJson
.
addProperty
(
"value"
,
spanObject
.
getComponent
());
}
else
{
componentJson
.
addProperty
(
"value"
,
ComponentsDefine
.
getInstance
().
getComponentName
(
spanObject
.
getComponentId
()));
}
tagsArray
.
add
(
componentJson
);
JsonObject
peerJson
=
new
JsonObject
();
peerJson
.
addProperty
(
"key"
,
"peer"
);
if
(
spanObject
.
getPeerId
()
==
0
)
{
peerJson
.
addProperty
(
"value"
,
spanObject
.
getPeer
());
}
else
{
peerJson
.
addProperty
(
"value"
,
ApplicationCache
.
getForUI
(
spanObject
.
getPeerId
()));
}
tagsArray
.
add
(
peerJson
);
for
(
KeyWithStringValue
tagValue
:
spanObject
.
getTagsList
())
{
JsonObject
tagJson
=
new
JsonObject
();
tagJson
.
addProperty
(
"key"
,
tagValue
.
getKey
());
tagJson
.
addProperty
(
"value"
,
tagValue
.
getValue
());
tagsArray
.
add
(
tagJson
);
}
JsonObject
isErrorJson
=
new
JsonObject
();
isErrorJson
.
addProperty
(
"key"
,
"is error"
);
isErrorJson
.
addProperty
(
"value"
,
spanObject
.
getIsError
());
tagsArray
.
add
(
isErrorJson
);
spanJson
.
add
(
"tags"
,
tagsArray
);
}
}
...
...
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TraceDagDataBuilder.java
浏览文件 @
03a5db8e
...
...
@@ -3,6 +3,7 @@ package org.skywalking.apm.collector.ui.service;
import
com.google.gson.JsonArray
;
import
com.google.gson.JsonObject
;
import
java.util.HashMap
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
org.skywalking.apm.collector.core.util.Const
;
import
org.skywalking.apm.collector.storage.define.noderef.NodeReferenceTable
;
...
...
@@ -26,13 +27,14 @@ public class TraceDagDataBuilder {
changeNodeComp2Map
(
nodeCompArray
);
changeMapping2Map
(
nodesMappingArray
);
for
(
int
i
=
0
;
i
<
resSumArray
.
size
();
i
++)
{
JsonObject
nodeRefJsonObj
=
resSumArray
.
get
(
i
).
getAsJsonObject
();
Map
<
String
,
JsonObject
>
mergedResSumMap
=
merge
(
resSumArray
);
mergedResSumMap
.
values
().
forEach
(
nodeRefJsonObj
->
{
String
front
=
nodeRefJsonObj
.
get
(
"front"
).
getAsString
();
String
behind
=
nodeRefJsonObj
.
get
(
"behind"
).
getAsString
();
if
(
hasMapping
(
behind
))
{
continue
;
return
;
}
JsonObject
lineJsonObj
=
new
JsonObject
();
...
...
@@ -42,7 +44,7 @@ public class TraceDagDataBuilder {
lineArray
.
add
(
lineJsonObj
);
logger
.
debug
(
"line: {}"
,
lineJsonObj
);
}
}
);
JsonObject
dagJsonObj
=
new
JsonObject
();
dagJsonObj
.
add
(
"nodes"
,
pointArray
);
...
...
@@ -93,4 +95,28 @@ public class TraceDagDataBuilder {
private
boolean
hasMapping
(
String
peers
)
{
return
mappingMap
.
containsKey
(
peers
);
}
private
Map
<
String
,
JsonObject
>
merge
(
JsonArray
nodeReference
)
{
Map
<
String
,
JsonObject
>
mergedRef
=
new
LinkedHashMap
<>();
for
(
int
i
=
0
;
i
<
nodeReference
.
size
();
i
++)
{
JsonObject
nodeRefJsonObj
=
nodeReference
.
get
(
i
).
getAsJsonObject
();
String
front
=
nodeRefJsonObj
.
get
(
"front"
).
getAsString
();
String
behind
=
nodeRefJsonObj
.
get
(
"behind"
).
getAsString
();
String
id
=
front
+
Const
.
ID_SPLIT
+
behind
;
if
(
mergedRef
.
containsKey
(
id
))
{
JsonObject
oldValue
=
mergedRef
.
get
(
id
);
oldValue
.
addProperty
(
NodeReferenceTable
.
COLUMN_S1_LTE
,
oldValue
.
get
(
NodeReferenceTable
.
COLUMN_S1_LTE
).
getAsLong
()
+
nodeRefJsonObj
.
get
(
NodeReferenceTable
.
COLUMN_S1_LTE
).
getAsLong
());
oldValue
.
addProperty
(
NodeReferenceTable
.
COLUMN_S3_LTE
,
oldValue
.
get
(
NodeReferenceTable
.
COLUMN_S3_LTE
).
getAsLong
()
+
nodeRefJsonObj
.
get
(
NodeReferenceTable
.
COLUMN_S3_LTE
).
getAsLong
());
oldValue
.
addProperty
(
NodeReferenceTable
.
COLUMN_S5_LTE
,
oldValue
.
get
(
NodeReferenceTable
.
COLUMN_S5_LTE
).
getAsLong
()
+
nodeRefJsonObj
.
get
(
NodeReferenceTable
.
COLUMN_S5_LTE
).
getAsLong
());
oldValue
.
addProperty
(
NodeReferenceTable
.
COLUMN_S5_GT
,
oldValue
.
get
(
NodeReferenceTable
.
COLUMN_S5_GT
).
getAsLong
()
+
nodeRefJsonObj
.
get
(
NodeReferenceTable
.
COLUMN_S5_GT
).
getAsLong
());
oldValue
.
addProperty
(
NodeReferenceTable
.
COLUMN_ERROR
,
oldValue
.
get
(
NodeReferenceTable
.
COLUMN_ERROR
).
getAsLong
()
+
nodeRefJsonObj
.
get
(
NodeReferenceTable
.
COLUMN_ERROR
).
getAsLong
());
oldValue
.
addProperty
(
NodeReferenceTable
.
COLUMN_SUMMARY
,
oldValue
.
get
(
NodeReferenceTable
.
COLUMN_SUMMARY
).
getAsLong
()
+
nodeRefJsonObj
.
get
(
NodeReferenceTable
.
COLUMN_SUMMARY
).
getAsLong
());
}
else
{
mergedRef
.
put
(
id
,
nodeReference
.
get
(
i
).
getAsJsonObject
());
}
}
return
mergedRef
;
}
}
apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TraceStackService.java
浏览文件 @
03a5db8e
...
...
@@ -7,6 +7,7 @@ import java.util.List;
import
org.skywalking.apm.collector.core.util.CollectionUtils
;
import
org.skywalking.apm.collector.core.util.Const
;
import
org.skywalking.apm.collector.core.util.ObjectUtils
;
import
org.skywalking.apm.collector.core.util.StringUtils
;
import
org.skywalking.apm.collector.storage.dao.DAOContainer
;
import
org.skywalking.apm.collector.ui.cache.ApplicationCache
;
import
org.skywalking.apm.collector.ui.cache.ServiceNameCache
;
...
...
@@ -98,7 +99,12 @@ public class TraceStackService {
String
operationName
=
spanObject
.
getOperationName
();
if
(
spanObject
.
getOperationNameId
()
!=
0
)
{
operationName
=
ServiceNameCache
.
get
(
spanObject
.
getOperationNameId
());
String
serviceName
=
ServiceNameCache
.
get
(
spanObject
.
getOperationNameId
());
if
(
StringUtils
.
isNotEmpty
(
serviceName
))
{
operationName
=
serviceName
.
split
(
Const
.
ID_SPLIT
)[
1
];
}
else
{
operationName
=
Const
.
EMPTY_STRING
;
}
}
String
applicationCode
=
ApplicationCache
.
get
(
segment
.
getApplicationId
());
...
...
@@ -113,7 +119,13 @@ public class TraceStackService {
UniqueId
uniqueId
=
reference
.
getParentTraceSegmentId
();
StringBuilder
segmentIdBuilder
=
new
StringBuilder
();
uniqueId
.
getIdPartsList
().
forEach
(
part
->
segmentIdBuilder
.
append
(
String
.
valueOf
(
part
)));
for
(
int
i
=
0
;
i
<
uniqueId
.
getIdPartsList
().
size
();
i
++)
{
if
(
i
==
0
)
{
segmentIdBuilder
.
append
(
String
.
valueOf
(
uniqueId
.
getIdPartsList
().
get
(
i
)));
}
else
{
segmentIdBuilder
.
append
(
"."
).
append
(
String
.
valueOf
(
uniqueId
.
getIdPartsList
().
get
(
i
)));
}
}
String
parentSegmentId
=
segmentIdBuilder
.
toString
();
segmentParentSpanId
=
parentSegmentId
+
Const
.
SEGMENT_SPAN_SPLIT
+
String
.
valueOf
(
parentSpanId
);
...
...
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/dictionary/OperationNameDictionary.java
浏览文件 @
03a5db8e
...
...
@@ -35,7 +35,7 @@ public enum OperationNameDictionary {
OperationNameKey
key
=
new
OperationNameKey
(
applicationId
,
operationName
);
Integer
operationId
=
operationNameDictionary
.
get
(
key
);
if
(
operationId
!=
null
)
{
return
new
Found
(
applic
ationId
);
return
new
Found
(
oper
ationId
);
}
else
{
if
(
registerWhenNotFound
&&
operationNameDictionary
.
size
()
+
unRegisterOperationNames
.
size
()
<
OPERATION_NAME_BUFFER_SIZE
)
{
...
...
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/cpu/CPUMetricAccessor.java
浏览文件 @
03a5db8e
...
...
@@ -27,6 +27,6 @@ public abstract class CPUMetricAccessor {
long
now
=
System
.
nanoTime
();
CPU
.
Builder
cpuBuilder
=
CPU
.
newBuilder
();
return
cpuBuilder
.
setUsagePercent
(
cpuCost
*
1.0d
/
(
now
-
lastSampleTimeNs
)
*
cpuCoreNum
).
build
();
return
cpuBuilder
.
setUsagePercent
(
cpuCost
*
1.0d
/
(
(
now
-
lastSampleTimeNs
)
*
cpuCoreNum
)
).
build
();
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录