Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
山不在高_有仙则灵
SkyWalking
提交
fa99652d
S
SkyWalking
项目概览
山不在高_有仙则灵
/
SkyWalking
与 Fork 源项目一致
Fork自
apache / SkyWalking
通知
12
Star
0
Fork
2
代码
文件
提交
分支
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,发现更多精彩内容 >>
提交
fa99652d
编写于
2月 25, 2018
作者:
A
ascrutae
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[Agent] Support hystrix plugin
上级
239579fd
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
400 addition
and
2 deletion
+400
-2
apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefine.java
...pm/collector/storage/table/register/ServerTypeDefine.java
+2
-1
apm-protocol/apm-network/src/main/java/org/apache/skywalking/apm/network/trace/component/ComponentsDefine.java
...walking/apm/network/trace/component/ComponentsDefine.java
+4
-1
apm-sniffer/apm-sdk-plugin/hystrix-1.x-plugin/pom.xml
apm-sniffer/apm-sdk-plugin/hystrix-1.x-plugin/pom.xml
+24
-0
apm-sniffer/apm-sdk-plugin/hystrix-1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/hystrix/v1/EnhanceRequireObjectCache.java
...king/apm/plugin/hystrix/v1/EnhanceRequireObjectCache.java
+42
-0
apm-sniffer/apm-sdk-plugin/hystrix-1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/hystrix/v1/HystrixCommandConstructorInterceptor.java
...ugin/hystrix/v1/HystrixCommandConstructorInterceptor.java
+57
-0
apm-sniffer/apm-sdk-plugin/hystrix-1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/hystrix/v1/HystrixPluginsInterceptor.java
...king/apm/plugin/hystrix/v1/HystrixPluginsInterceptor.java
+44
-0
apm-sniffer/apm-sdk-plugin/hystrix-1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/hystrix/v1/SWExecutionHookWrapper.java
...walking/apm/plugin/hystrix/v1/SWExecutionHookWrapper.java
+101
-0
apm-sniffer/apm-sdk-plugin/hystrix-1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/hystrix/v1/define/HystrixCommandInstrumentation.java
...ugin/hystrix/v1/define/HystrixCommandInstrumentation.java
+58
-0
apm-sniffer/apm-sdk-plugin/hystrix-1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/hystrix/v1/define/HystrixPluginsInstrumentation.java
...ugin/hystrix/v1/define/HystrixPluginsInstrumentation.java
+65
-0
apm-sniffer/apm-sdk-plugin/hystrix-1.x-plugin/src/main/resources/skywalking-plugin.def
...strix-1.x-plugin/src/main/resources/skywalking-plugin.def
+2
-0
apm-sniffer/apm-sdk-plugin/pom.xml
apm-sniffer/apm-sdk-plugin/pom.xml
+1
-0
未找到文件。
apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ServerTypeDefine.java
浏览文件 @
fa99652d
...
...
@@ -32,7 +32,7 @@ public class ServerTypeDefine {
private
ServerType
[]
serverTypes
;
private
ServerTypeDefine
()
{
this
.
serverTypes
=
new
ServerType
[
29
];
this
.
serverTypes
=
new
ServerType
[
30
];
this
.
serverTypeNames
=
new
String
[
11
];
addServerType
(
new
ServerType
(
ComponentsDefine
.
TOMCAT
.
getId
(),
Const
.
NONE
,
Const
.
EMPTY_STRING
));
addServerType
(
new
ServerType
(
ComponentsDefine
.
HTTPCLIENT
.
getId
(),
Const
.
NONE
,
Const
.
EMPTY_STRING
));
...
...
@@ -62,6 +62,7 @@ public class ServerTypeDefine {
addServerType
(
new
ServerType
(
ComponentsDefine
.
HTTP_ASYNC_CLIENT
.
getId
(),
Const
.
NONE
,
Const
.
EMPTY_STRING
));
addServerType
(
new
ServerType
(
ComponentsDefine
.
KAFKA
.
getId
(),
10
,
ComponentsDefine
.
KAFKA
.
getName
()));
addServerType
(
new
ServerType
(
ComponentsDefine
.
SERVICECOMB
.
getId
(),
Const
.
NONE
,
ComponentsDefine
.
SERVICECOMB
.
getName
()));
addServerType
(
new
ServerType
(
ComponentsDefine
.
HYSTRIX
.
getId
(),
Const
.
NONE
,
ComponentsDefine
.
HYSTRIX
.
getName
()));
}
public
static
ServerTypeDefine
getInstance
()
{
...
...
apm-protocol/apm-network/src/main/java/org/apache/skywalking/apm/network/trace/component/ComponentsDefine.java
浏览文件 @
fa99652d
...
...
@@ -82,6 +82,8 @@ public class ComponentsDefine {
public
static
final
OfficialComponent
SERVICECOMB
=
new
OfficialComponent
(
28
,
"ServiceComb"
);
public
static
final
OfficialComponent
HYSTRIX
=
new
OfficialComponent
(
29
,
"Hystrix"
);
private
static
ComponentsDefine
INSTANCE
=
new
ComponentsDefine
();
private
String
[]
components
;
...
...
@@ -91,7 +93,7 @@ public class ComponentsDefine {
}
public
ComponentsDefine
()
{
components
=
new
String
[
29
];
components
=
new
String
[
30
];
addComponent
(
TOMCAT
);
addComponent
(
HTTPCLIENT
);
addComponent
(
DUBBO
);
...
...
@@ -120,6 +122,7 @@ public class ComponentsDefine {
addComponent
(
HTTP_ASYNC_CLIENT
);
addComponent
(
KAFKA
);
addComponent
(
SERVICECOMB
);
addComponent
(
HYSTRIX
);
}
private
void
addComponent
(
OfficialComponent
component
)
{
...
...
apm-sniffer/apm-sdk-plugin/hystrix-1.x-plugin/pom.xml
0 → 100644
浏览文件 @
fa99652d
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
apm-sdk-plugin
</artifactId>
<groupId>
org.apache.skywalking
</groupId>
<version>
5.0.0-alpha
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
apm-hystrix-1.x-plugin
</artifactId>
<dependencies>
<dependency>
<groupId>
com.netflix.hystrix
</groupId>
<artifactId>
hystrix-core
</artifactId>
<version>
1.4.0
</version>
<scope>
provided
</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
apm-sniffer/apm-sdk-plugin/hystrix-1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/hystrix/v1/EnhanceRequireObjectCache.java
0 → 100644
浏览文件 @
fa99652d
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package
org.apache.skywalking.apm.plugin.hystrix.v1
;
import
org.apache.skywalking.apm.agent.core.context.ContextSnapshot
;
public
class
EnhanceRequireObjectCache
{
private
final
String
operationNamePrefix
;
private
ContextSnapshot
contextSnapshot
;
public
EnhanceRequireObjectCache
(
String
prefix
)
{
operationNamePrefix
=
prefix
;
}
public
String
getOperationNamePrefix
()
{
return
operationNamePrefix
;
}
public
ContextSnapshot
getContextSnapshot
()
{
return
contextSnapshot
;
}
public
void
setContextSnapshot
(
ContextSnapshot
contextSnapshot
)
{
this
.
contextSnapshot
=
contextSnapshot
;
}
}
apm-sniffer/apm-sdk-plugin/hystrix-1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/hystrix/v1/HystrixCommandConstructorInterceptor.java
0 → 100644
浏览文件 @
fa99652d
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package
org.apache.skywalking.apm.plugin.hystrix.v1
;
import
com.netflix.hystrix.HystrixCollapser
;
import
com.netflix.hystrix.HystrixCommand
;
import
com.netflix.hystrix.HystrixObservableCollapser
;
import
com.netflix.hystrix.HystrixObservableCommand
;
import
org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance
;
import
org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor
;
public
class
HystrixCommandConstructorInterceptor
implements
InstanceConstructorInterceptor
{
@Override
public
void
onConstruct
(
EnhancedInstance
objInst
,
Object
[]
allArguments
)
{
String
identifyKey
=
""
;
if
(
HystrixCommand
.
class
.
isAssignableFrom
(
objInst
.
getClass
()))
{
HystrixCommand
hystrixCommand
=
(
HystrixCommand
)
objInst
;
identifyKey
=
hystrixCommand
.
getCommandKey
().
name
();
}
if
(
HystrixCollapser
.
class
.
isAssignableFrom
(
objInst
.
getClass
()))
{
HystrixCollapser
hystrixCommand
=
(
HystrixCollapser
)
objInst
;
identifyKey
=
hystrixCommand
.
getCollapserKey
().
name
();
}
if
(
HystrixObservableCollapser
.
class
.
isAssignableFrom
(
objInst
.
getClass
()))
{
HystrixObservableCollapser
hystrixCommand
=
(
HystrixObservableCollapser
)
objInst
;
identifyKey
=
hystrixCommand
.
getCollapserKey
().
name
();
}
if
(
HystrixObservableCommand
.
class
.
isAssignableFrom
(
objInst
.
getClass
()))
{
HystrixObservableCommand
hystrixCommand
=
(
HystrixObservableCommand
)
objInst
;
identifyKey
=
hystrixCommand
.
getCommandKey
().
name
();
}
objInst
.
setSkyWalkingDynamicField
(
new
EnhanceRequireObjectCache
(
"Hystrix/"
+
identifyKey
));
}
}
apm-sniffer/apm-sdk-plugin/hystrix-1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/hystrix/v1/HystrixPluginsInterceptor.java
0 → 100644
浏览文件 @
fa99652d
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package
org.apache.skywalking.apm.plugin.hystrix.v1
;
import
com.netflix.hystrix.strategy.executionhook.HystrixCommandExecutionHook
;
import
java.lang.reflect.Method
;
import
org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance
;
import
org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor
;
import
org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult
;
public
class
HystrixPluginsInterceptor
implements
InstanceMethodsAroundInterceptor
{
@Override
public
void
beforeMethod
(
EnhancedInstance
objInst
,
Method
method
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
MethodInterceptResult
result
)
throws
Throwable
{
}
@Override
public
Object
afterMethod
(
EnhancedInstance
objInst
,
Method
method
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
Object
ret
)
throws
Throwable
{
return
new
SWExecutionHookWrapper
((
HystrixCommandExecutionHook
)
ret
);
}
@Override
public
void
handleMethodException
(
EnhancedInstance
objInst
,
Method
method
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
Throwable
t
)
{
}
}
apm-sniffer/apm-sdk-plugin/hystrix-1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/hystrix/v1/SWExecutionHookWrapper.java
0 → 100644
浏览文件 @
fa99652d
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package
org.apache.skywalking.apm.plugin.hystrix.v1
;
import
com.netflix.hystrix.HystrixInvokable
;
import
com.netflix.hystrix.strategy.executionhook.HystrixCommandExecutionHook
;
import
org.apache.skywalking.apm.agent.core.context.ContextManager
;
import
org.apache.skywalking.apm.agent.core.context.ContextSnapshot
;
import
org.apache.skywalking.apm.agent.core.context.trace.AbstractSpan
;
import
org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance
;
import
org.apache.skywalking.apm.network.trace.component.ComponentsDefine
;
public
class
SWExecutionHookWrapper
extends
HystrixCommandExecutionHook
{
private
final
HystrixCommandExecutionHook
actual
;
public
SWExecutionHookWrapper
(
HystrixCommandExecutionHook
actual
)
{
this
.
actual
=
actual
;
}
@Override
public
<
T
>
void
onStart
(
HystrixInvokable
<
T
>
commandInstance
)
{
EnhancedInstance
enhancedInstance
=
(
EnhancedInstance
)
commandInstance
;
EnhanceRequireObjectCache
enhanceRequireObjectCache
=
(
EnhanceRequireObjectCache
)
enhancedInstance
.
getSkyWalkingDynamicField
();
enhanceRequireObjectCache
.
setContextSnapshot
(
ContextManager
.
capture
());
actual
.
onStart
(
commandInstance
);
}
/**
* execution method
*/
@Override
public
<
T
>
void
onExecutionStart
(
HystrixInvokable
<
T
>
commandInstance
)
{
// create a local span, and continued, The `execution method` running in other thread if the
// hystrix strategy is `THREAD`.
EnhancedInstance
enhancedInstance
=
(
EnhancedInstance
)
commandInstance
;
EnhanceRequireObjectCache
enhanceRequireObjectCache
=
(
EnhanceRequireObjectCache
)
enhancedInstance
.
getSkyWalkingDynamicField
();
ContextSnapshot
snapshot
=
enhanceRequireObjectCache
.
getContextSnapshot
();
AbstractSpan
activeSpan
=
ContextManager
.
createLocalSpan
(
enhanceRequireObjectCache
.
getOperationNamePrefix
()
+
"/Execution"
);
activeSpan
.
setComponent
(
ComponentsDefine
.
HYSTRIX
);
ContextManager
.
continued
(
snapshot
);
actual
.
onExecutionStart
(
commandInstance
);
// Because of `fall back` method running in other thread. so we need capture concurrent span for tracing.
enhanceRequireObjectCache
.
setContextSnapshot
(
ContextManager
.
capture
());
}
@Override
public
<
T
>
Exception
onExecutionError
(
HystrixInvokable
<
T
>
commandInstance
,
Exception
e
)
{
ContextManager
.
activeSpan
().
errorOccurred
().
log
(
e
);
ContextManager
.
stopSpan
();
return
actual
.
onExecutionError
(
commandInstance
,
e
);
}
@Override
public
<
T
>
void
onExecutionSuccess
(
HystrixInvokable
<
T
>
commandInstance
)
{
ContextManager
.
stopSpan
();
actual
.
onExecutionSuccess
(
commandInstance
);
}
/**
* Fallback
*/
@Override
public
<
T
>
void
onFallbackStart
(
HystrixInvokable
<
T
>
commandInstance
)
{
EnhancedInstance
enhancedInstance
=
(
EnhancedInstance
)
commandInstance
;
EnhanceRequireObjectCache
enhanceRequireObjectCache
=
(
EnhanceRequireObjectCache
)
enhancedInstance
.
getSkyWalkingDynamicField
();
ContextSnapshot
snapshot
=
enhanceRequireObjectCache
.
getContextSnapshot
();
AbstractSpan
activeSpan
=
ContextManager
.
createLocalSpan
(
enhanceRequireObjectCache
.
getOperationNamePrefix
()
+
"/Fallback"
);
activeSpan
.
setComponent
(
ComponentsDefine
.
HYSTRIX
);
ContextManager
.
continued
(
snapshot
);
actual
.
onFallbackStart
(
commandInstance
);
}
@Override
public
<
T
>
Exception
onFallbackError
(
HystrixInvokable
<
T
>
commandInstance
,
Exception
e
)
{
ContextManager
.
activeSpan
().
errorOccurred
().
log
(
e
);
ContextManager
.
stopSpan
();
return
actual
.
onFallbackError
(
commandInstance
,
e
);
}
@Override
public
<
T
>
void
onFallbackSuccess
(
HystrixInvokable
<
T
>
commandInstance
)
{
ContextManager
.
stopSpan
();
actual
.
onFallbackSuccess
(
commandInstance
);
}
}
apm-sniffer/apm-sdk-plugin/hystrix-1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/hystrix/v1/define/HystrixCommandInstrumentation.java
0 → 100644
浏览文件 @
fa99652d
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package
org.apache.skywalking.apm.plugin.hystrix.v1.define
;
import
net.bytebuddy.description.method.MethodDescription
;
import
net.bytebuddy.matcher.ElementMatcher
;
import
org.apache.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint
;
import
org.apache.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint
;
import
org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine
;
import
org.apache.skywalking.apm.agent.core.plugin.match.ClassMatch
;
import
static
net
.
bytebuddy
.
matcher
.
ElementMatchers
.
any
;
import
static
org
.
apache
.
skywalking
.
apm
.
agent
.
core
.
plugin
.
match
.
HierarchyMatch
.
byHierarchyMatch
;
public
class
HystrixCommandInstrumentation
extends
ClassInstanceMethodsEnhancePluginDefine
{
public
static
final
String
INTERCEPT_CLASS
=
"org.apache.skywalking.apm.plugin.hystrix.v1.HystrixCommandConstructorInterceptor"
;
public
static
final
String
ENHANCE_CLASS
=
"com.netflix.hystrix.HystrixCommand"
;
@Override
protected
ConstructorInterceptPoint
[]
getConstructorsInterceptPoints
()
{
return
new
ConstructorInterceptPoint
[]
{
new
ConstructorInterceptPoint
()
{
@Override
public
ElementMatcher
<
MethodDescription
>
getConstructorMatcher
()
{
return
any
();
}
@Override
public
String
getConstructorInterceptor
()
{
return
INTERCEPT_CLASS
;
}
}
};
}
@Override
protected
InstanceMethodsInterceptPoint
[]
getInstanceMethodsInterceptPoints
()
{
return
new
InstanceMethodsInterceptPoint
[
0
];
}
@Override
protected
ClassMatch
enhanceClass
()
{
return
byHierarchyMatch
(
new
String
[]
{
ENHANCE_CLASS
});
}
}
apm-sniffer/apm-sdk-plugin/hystrix-1.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/hystrix/v1/define/HystrixPluginsInstrumentation.java
0 → 100644
浏览文件 @
fa99652d
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package
org.apache.skywalking.apm.plugin.hystrix.v1.define
;
import
net.bytebuddy.description.method.MethodDescription
;
import
net.bytebuddy.matcher.ElementMatcher
;
import
org.apache.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint
;
import
org.apache.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint
;
import
org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine
;
import
org.apache.skywalking.apm.agent.core.plugin.match.ClassMatch
;
import
static
net
.
bytebuddy
.
matcher
.
ElementMatchers
.
named
;
import
static
org
.
apache
.
skywalking
.
apm
.
agent
.
core
.
plugin
.
match
.
NameMatch
.
byName
;
public
class
HystrixPluginsInstrumentation
extends
ClassInstanceMethodsEnhancePluginDefine
{
public
static
final
String
INTERCEPT_CLASS
=
"org.apache.skywalking.apm.plugin.hystrix.v1.HystrixPluginsInterceptor"
;
public
static
final
String
ENHANCE_METHOD
=
"getCommandExecutionHook"
;
public
static
final
String
ENHANCE_CLASS
=
"com.netflix.hystrix.strategy.HystrixPlugins"
;
@Override
protected
ConstructorInterceptPoint
[]
getConstructorsInterceptPoints
()
{
return
new
ConstructorInterceptPoint
[
0
];
}
@Override
protected
InstanceMethodsInterceptPoint
[]
getInstanceMethodsInterceptPoints
()
{
return
new
InstanceMethodsInterceptPoint
[]
{
new
InstanceMethodsInterceptPoint
()
{
@Override
public
ElementMatcher
<
MethodDescription
>
getMethodsMatcher
()
{
return
named
(
ENHANCE_METHOD
);
}
@Override
public
String
getMethodsInterceptor
()
{
return
INTERCEPT_CLASS
;
}
@Override
public
boolean
isOverrideArgs
()
{
return
false
;
}
}
};
}
@Override
protected
ClassMatch
enhanceClass
()
{
return
byName
(
ENHANCE_CLASS
);
}
}
apm-sniffer/apm-sdk-plugin/hystrix-1.x-plugin/src/main/resources/skywalking-plugin.def
0 → 100644
浏览文件 @
fa99652d
hystrix-1.x=org.apache.skywalking.apm.plugin.hystrix.v1.define.HystrixCommandInstrumentation
hystrix-1.x=org.apache.skywalking.apm.plugin.hystrix.v1.define.HystrixPluginsInstrumentation
apm-sniffer/apm-sdk-plugin/pom.xml
浏览文件 @
fa99652d
...
...
@@ -55,6 +55,7 @@
<module>
httpasyncclient-4.x-plugin
</module>
<module>
kafka-v1-plugin
</module>
<module>
servicecomb-plugin
</module>
<module>
hystrix-1.x-plugin
</module>
</modules>
<packaging>
pom
</packaging>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录