Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
润土的好友猹
SkyWalking
提交
1fb2b01b
S
SkyWalking
项目概览
润土的好友猹
/
SkyWalking
与 Fork 源项目一致
Fork自
apache / SkyWalking
通知
9
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyWalking
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
1fb2b01b
编写于
4月 19, 2021
作者:
K
kl
提交者:
GitHub
4月 19, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: Receiver_zipkin missing ServiceInstanceID bug #6749 (#6763)
上级
10c47471
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
51 addition
and
6 deletion
+51
-6
oap-server/server-bootstrap/src/main/resources/application.yml
...erver/server-bootstrap/src/main/resources/application.yml
+1
-0
oap-server/server-bootstrap/src/test/java/org/apache/skywalking/oap/server/starter/config/ApplicationConfigLoaderTestCase.java
...erver/starter/config/ApplicationConfigLoaderTestCase.java
+14
-1
oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/ZipkinReceiverConfig.java
...king/oap/server/receiver/zipkin/ZipkinReceiverConfig.java
+4
-0
oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/handler/SpanProcessor.java
...ing/oap/server/receiver/zipkin/handler/SpanProcessor.java
+2
-1
oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/trace/SpanForward.java
...walking/oap/server/receiver/zipkin/trace/SpanForward.java
+19
-1
oap-server/server-storage-plugin/storage-zipkin-elasticsearch7-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/zipkin/elasticsearch/ZipkinTraceQueryEs7DAO.java
...e/plugin/zipkin/elasticsearch/ZipkinTraceQueryEs7DAO.java
+11
-3
未找到文件。
oap-server/server-bootstrap/src/main/resources/application.yml
浏览文件 @
1fb2b01b
...
...
@@ -370,6 +370,7 @@ receiver_zipkin:
jettyIdleTimeOut
:
${SW_RECEIVER_ZIPKIN_JETTY_IDLE_TIMEOUT:30000}
jettyAcceptorPriorityDelta
:
${SW_RECEIVER_ZIPKIN_JETTY_DELTA:0}
jettyAcceptQueueSize
:
${SW_RECEIVER_ZIPKIN_QUEUE_SIZE:0}
instanceNameRule
:
${SW_RECEIVER_ZIPKIN_INSTANCE_NAME_RULE:[spring.instance_id,node_id]}
receiver_jaeger
:
selector
:
${SW_RECEIVER_JAEGER:-}
...
...
oap-server/server-bootstrap/src/test/java/org/apache/skywalking/oap/server/starter/config/ApplicationConfigLoaderTestCase.java
浏览文件 @
1fb2b01b
...
...
@@ -18,13 +18,16 @@
package
org.apache.skywalking.oap.server.starter.config
;
import
java.util.Properties
;
import
org.apache.skywalking.oap.server.library.module.ApplicationConfiguration
;
import
org.junit.Before
;
import
org.junit.Test
;
import
java.util.List
;
import
java.util.Properties
;
import
static
org
.
hamcrest
.
CoreMatchers
.
instanceOf
;
import
static
org
.
hamcrest
.
CoreMatchers
.
is
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertThat
;
public
class
ApplicationConfigLoaderTestCase
{
...
...
@@ -34,6 +37,7 @@ public class ApplicationConfigLoaderTestCase {
@Before
public
void
setUp
()
throws
ConfigFileNotFoundException
{
System
.
setProperty
(
"SW_STORAGE"
,
"mysql"
);
System
.
setProperty
(
"SW_RECEIVER_ZIPKIN"
,
"default"
);
ApplicationConfigLoader
configLoader
=
new
ApplicationConfigLoader
();
applicationConfiguration
=
configLoader
.
load
();
}
...
...
@@ -47,4 +51,13 @@ public class ApplicationConfigLoaderTestCase {
Properties
properties
=
(
Properties
)
providerConfig
.
get
(
"properties"
);
assertThat
(
properties
.
get
(
"jdbcUrl"
),
is
(
"jdbc:mysql://localhost:3306/swtest"
));
}
@Test
public
void
testLoadListTypeConfig
()
{
Properties
providerConfig
=
applicationConfiguration
.
getModuleConfiguration
(
"receiver_zipkin"
)
.
getProviderConfiguration
(
"default"
);
List
<
String
>
instanceNameRule
=
(
List
<
String
>)
providerConfig
.
get
(
"instanceNameRule"
);
assertEquals
(
2
,
instanceNameRule
.
size
());
}
}
oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/ZipkinReceiverConfig.java
浏览文件 @
1fb2b01b
...
...
@@ -22,6 +22,9 @@ import lombok.Getter;
import
lombok.Setter
;
import
org.apache.skywalking.oap.server.library.module.ModuleConfig
;
import
java.util.ArrayList
;
import
java.util.List
;
@Setter
@Getter
public
class
ZipkinReceiverConfig
extends
ModuleConfig
{
...
...
@@ -33,4 +36,5 @@ public class ZipkinReceiverConfig extends ModuleConfig {
private
long
jettyIdleTimeOut
=
30000
;
private
int
jettyAcceptorPriorityDelta
=
0
;
private
int
jettyAcceptQueueSize
=
0
;
private
List
<
String
>
instanceNameRule
=
new
ArrayList
<>();
}
oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/handler/SpanProcessor.java
浏览文件 @
1fb2b01b
...
...
@@ -24,6 +24,7 @@ import java.io.InputStream;
import
java.util.List
;
import
java.util.zip.GZIPInputStream
;
import
javax.servlet.http.HttpServletRequest
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.skywalking.oap.server.core.config.NamingControl
;
import
org.apache.skywalking.oap.server.core.source.SourceReceiver
;
...
...
@@ -49,7 +50,7 @@ public class SpanProcessor {
List
<
Span
>
spanList
=
decoder
.
decodeList
(
out
.
toByteArray
());
SpanForward
forward
=
new
SpanForward
(
namingControl
,
receiver
);
SpanForward
forward
=
new
SpanForward
(
namingControl
,
receiver
,
config
);
forward
.
send
(
spanList
);
}
}
...
...
oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/zipkin/trace/SpanForward.java
浏览文件 @
1fb2b01b
...
...
@@ -19,6 +19,7 @@
package
org.apache.skywalking.oap.server.receiver.zipkin.trace
;
import
java.util.List
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.skywalking.apm.util.StringUtil
;
import
org.apache.skywalking.oap.server.core.analysis.IDManager
;
...
...
@@ -29,6 +30,7 @@ import org.apache.skywalking.oap.server.core.source.EndpointMeta;
import
org.apache.skywalking.oap.server.core.source.ServiceMeta
;
import
org.apache.skywalking.oap.server.core.source.SourceReceiver
;
import
org.apache.skywalking.oap.server.library.util.BooleanUtils
;
import
org.apache.skywalking.oap.server.receiver.zipkin.ZipkinReceiverConfig
;
import
org.apache.skywalking.oap.server.receiver.zipkin.handler.SpanEncode
;
import
org.apache.skywalking.oap.server.storage.plugin.zipkin.ZipkinSpan
;
import
zipkin2.Span
;
...
...
@@ -36,8 +38,10 @@ import zipkin2.codec.SpanBytesEncoder;
@RequiredArgsConstructor
public
class
SpanForward
{
private
static
final
String
DEFAULT_SERVICE_INSTANCE_NAME
=
" unknown_instance"
;
private
final
NamingControl
namingControl
;
private
final
SourceReceiver
receiver
;
private
final
ZipkinReceiverConfig
config
;
public
void
send
(
List
<
Span
>
spanList
)
{
spanList
.
forEach
(
span
->
{
...
...
@@ -49,7 +53,11 @@ public class SpanForward {
serviceName
=
"Unknown"
;
}
serviceName
=
namingControl
.
formatServiceName
(
serviceName
);
zipkinSpan
.
setServiceId
(
IDManager
.
ServiceID
.
buildId
(
serviceName
,
NodeType
.
Normal
));
String
serviceId
=
IDManager
.
ServiceID
.
buildId
(
serviceName
,
NodeType
.
Normal
);
zipkinSpan
.
setServiceId
(
serviceId
);
String
serviceInstanceName
=
this
.
getServiceInstanceName
(
span
);
serviceInstanceName
=
namingControl
.
formatInstanceName
(
serviceInstanceName
);
zipkinSpan
.
setServiceInstanceId
(
IDManager
.
ServiceInstanceID
.
buildId
(
serviceId
,
serviceInstanceName
));
long
startTime
=
span
.
timestampAsLong
()
/
1000
;
zipkinSpan
.
setStartTime
(
startTime
);
...
...
@@ -93,4 +101,14 @@ public class SpanForward {
receiver
.
receive
(
serviceMeta
);
});
}
private
String
getServiceInstanceName
(
Span
span
)
{
for
(
String
tagName
:
config
.
getInstanceNameRule
())
{
String
serviceInstanceName
=
span
.
tags
().
get
(
tagName
);
if
(
StringUtil
.
isNotEmpty
(
serviceInstanceName
))
{
return
serviceInstanceName
;
}
}
return
DEFAULT_SERVICE_INSTANCE_NAME
;
}
}
oap-server/server-storage-plugin/storage-zipkin-elasticsearch7-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/zipkin/elasticsearch/ZipkinTraceQueryEs7DAO.java
浏览文件 @
1fb2b01b
...
...
@@ -19,11 +19,13 @@
package
org.apache.skywalking.oap.server.storage.plugin.zipkin.elasticsearch
;
import
com.google.common.base.Strings
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.Base64
;
import
java.util.Collections
;
import
java.util.List
;
import
org.apache.skywalking.apm.util.StringUtil
;
import
org.apache.skywalking.oap.server.core.analysis.IDManager
;
import
org.apache.skywalking.oap.server.core.analysis.manual.searchtag.Tag
;
...
...
@@ -157,7 +159,7 @@ public class ZipkinTraceQueryEs7DAO extends EsDAO implements ITraceQueryDAO {
BasicTrace
basicTrace
=
new
BasicTrace
();
final
ZipkinSpanRecord
zipkinSpanRecord
=
new
ZipkinSpanRecord
.
Builder
().
storage2Entity
(
searchHit
.
getSourceAsMap
());
searchHit
.
getSourceAsMap
());
basicTrace
.
setSegmentId
(
zipkinSpanRecord
.
getSpanId
());
basicTrace
.
setStart
(
String
.
valueOf
((
long
)
zipkinSpanRecord
.
getStartTime
()));
...
...
@@ -179,7 +181,7 @@ public class ZipkinTraceQueryEs7DAO extends EsDAO implements ITraceQueryDAO {
@Override
public
List
<
org
.
apache
.
skywalking
.
oap
.
server
.
core
.
query
.
type
.
Span
>
doFlexibleTraceQuery
(
String
traceId
)
throws
IOException
{
String
traceId
)
throws
IOException
{
SearchSourceBuilder
sourceBuilder
=
SearchSourceBuilder
.
searchSource
();
sourceBuilder
.
query
(
QueryBuilders
.
termQuery
(
TRACE_ID
,
traceId
));
sourceBuilder
.
sort
(
START_TIME
,
SortOrder
.
ASC
);
...
...
@@ -191,6 +193,7 @@ public class ZipkinTraceQueryEs7DAO extends EsDAO implements ITraceQueryDAO {
for
(
SearchHit
searchHit
:
response
.
getHits
().
getHits
())
{
String
serviceId
=
(
String
)
searchHit
.
getSourceAsMap
().
get
(
SERVICE_ID
);
String
serviceInstanceId
=
(
String
)
searchHit
.
getSourceAsMap
().
get
(
SERVICE_INSTANCE_ID
);
String
dataBinaryBase64
=
(
String
)
searchHit
.
getSourceAsMap
().
get
(
SegmentRecord
.
DATA_BINARY
);
Span
span
=
SpanBytesDecoder
.
PROTO3
.
decodeOne
(
Base64
.
getDecoder
().
decode
(
dataBinaryBase64
));
...
...
@@ -211,9 +214,14 @@ public class ZipkinTraceQueryEs7DAO extends EsDAO implements ITraceQueryDAO {
});
if
(
StringUtil
.
isNotEmpty
(
serviceId
))
{
final
IDManager
.
ServiceID
.
ServiceIDDefinition
serviceIDDefinition
=
IDManager
.
ServiceID
.
analysisId
(
serviceId
);
serviceId
);
swSpan
.
setServiceCode
(
serviceIDDefinition
.
getName
());
}
if
(
StringUtil
.
isNotEmpty
(
serviceInstanceId
))
{
final
IDManager
.
ServiceInstanceID
.
InstanceIDDefinition
instanceIDDefinition
=
IDManager
.
ServiceInstanceID
.
analysisId
(
serviceInstanceId
);
swSpan
.
setServiceInstanceName
(
instanceIDDefinition
.
getName
());
}
swSpan
.
setSpanId
(
0
);
swSpan
.
setParentSpanId
(-
1
);
swSpan
.
setSegmentSpanId
(
span
.
id
());
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录