Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
ecd698e8
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 搜索 >>
提交
ecd698e8
编写于
1月 03, 2023
作者:
G
Gao Hongtao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update changes.md & remove id from measures' tags
Signed-off-by:
N
Gao Hongtao
<
hanahmily@gmail.com
>
上级
50a5833c
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
30 addition
and
40 deletion
+30
-40
docs/en/changes/changes.md
docs/en/changes/changes.md
+1
-0
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentMetrics.java
...king/oap/server/core/analysis/metrics/PercentMetrics.java
+1
-1
oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBConverter.java
...oap/server/storage/plugin/banyandb/BanyanDBConverter.java
+0
-8
oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/MetadataRegistry.java
.../oap/server/storage/plugin/banyandb/MetadataRegistry.java
+28
-29
oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsDAO.java
...r/storage/plugin/banyandb/measure/BanyanDBMetricsDAO.java
+0
-2
未找到文件。
docs/en/changes/changes.md
浏览文件 @
ecd698e8
...
...
@@ -69,6 +69,7 @@
*
Correct the TopN record query DAO of BanyanDB.
*
Tweak interval settings of BanyanDB.
*
Support monitoring AWS Cloud EKS.
*
Remove
`id`
tag from measures.
#### UI
...
...
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentMetrics.java
浏览文件 @
ecd698e8
...
...
@@ -42,7 +42,7 @@ public abstract class PercentMetrics extends Metrics implements IntValueHolder {
private
int
percentage
;
@Getter
@Setter
@Column
(
columnName
=
MATCH
)
@Column
(
columnName
=
MATCH
,
storageOnly
=
true
)
private
long
match
;
@Entrance
...
...
oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBConverter.java
浏览文件 @
ecd698e8
...
...
@@ -154,14 +154,6 @@ public class BanyanDBConverter {
}
}
public
void
acceptID
(
String
id
)
{
try
{
this
.
measureWrite
.
setID
(
id
);
}
catch
(
BanyanDBException
ex
)
{
log
.
error
(
"fail to add ID tag"
,
ex
);
}
}
@Override
public
void
accept
(
String
fieldName
,
byte
[]
fieldValue
)
{
MetadataRegistry
.
ColumnSpec
columnSpec
=
this
.
schema
.
getSpec
(
fieldName
);
...
...
oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/MetadataRegistry.java
浏览文件 @
ecd698e8
...
...
@@ -137,15 +137,15 @@ public enum MetadataRegistry {
// this can be used to build both
// 1) a list of TagFamilySpec,
// 2) a list of IndexRule,
List
<
TagMetadata
>
tag
s
=
parseTagAndFieldMetadata
(
model
,
schemaBuilder
);
List
<
TagFamilySpec
>
tagFamilySpecs
=
schemaMetadata
.
extractTagFamilySpec
(
tags
);
MeasureMetadata
tagsAndField
s
=
parseTagAndFieldMetadata
(
model
,
schemaBuilder
);
List
<
TagFamilySpec
>
tagFamilySpecs
=
schemaMetadata
.
extractTagFamilySpec
(
tags
AndFields
.
tags
);
// iterate over tagFamilySpecs to save tag names
for
(
final
TagFamilySpec
tagFamilySpec
:
tagFamilySpecs
)
{
for
(
final
TagFamilySpec
.
TagSpec
tagSpec
:
tagFamilySpec
.
tagSpecs
())
{
schemaBuilder
.
tag
(
tagSpec
.
getTagName
());
}
}
List
<
IndexRule
>
indexRules
=
tags
.
stream
()
List
<
IndexRule
>
indexRules
=
tags
AndFields
.
tags
.
stream
()
.
map
(
TagMetadata:
:
getIndexRule
)
.
filter
(
Objects:
:
nonNull
)
.
collect
(
Collectors
.
toList
());
...
...
@@ -156,10 +156,10 @@ public enum MetadataRegistry {
builder
.
addTagFamilies
(
tagFamilySpecs
);
builder
.
addIndexes
(
indexRules
);
// parse and set field
Optional
<
ValueColumnMetadata
.
ValueColumn
>
valueColumnOpt
=
ValueColumnMetadata
.
INSTANCE
.
readValueColumnDefinition
(
model
.
getName
()
);
valueColumnOpt
.
ifPresent
(
valueColumn
->
builder
.
addField
(
parseFieldSpec
(
modelColumnMap
.
get
(
valueColumn
.
getValueCName
()),
valueColumn
)
));
valueColumnOpt
.
ifPresent
(
valueColumn
->
schemaBuilder
.
field
(
valueColumn
.
getValueCName
()));
for
(
Measure
.
FieldSpec
field
:
tagsAndFields
.
fields
)
{
builder
.
addField
(
field
);
schemaBuilder
.
field
(
field
.
getName
(
));
}
registry
.
put
(
schemaMetadata
.
name
(),
schemaBuilder
.
build
());
return
builder
.
build
();
}
...
...
@@ -207,24 +207,25 @@ public enum MetadataRegistry {
return
this
.
registry
.
get
(
SchemaMetadata
.
formatName
(
modelName
,
downSampling
));
}
private
Measure
.
FieldSpec
parseFieldSpec
(
ModelColumn
modelColumn
,
ValueColumnMetadata
.
ValueColumn
valueColumn
)
{
private
Measure
.
FieldSpec
parseFieldSpec
(
ModelColumn
modelColumn
)
{
String
colName
=
modelColumn
.
getColumnName
().
getStorageName
();
if
(
String
.
class
.
equals
(
modelColumn
.
getType
()))
{
return
Measure
.
FieldSpec
.
newIntField
(
valueColumn
.
getValueCName
()
)
return
Measure
.
FieldSpec
.
newIntField
(
colName
)
.
compressWithZSTD
()
.
build
();
}
else
if
(
long
.
class
.
equals
(
modelColumn
.
getType
())
||
int
.
class
.
equals
(
modelColumn
.
getType
()))
{
return
Measure
.
FieldSpec
.
newIntField
(
valueColumn
.
getValueCName
()
)
return
Measure
.
FieldSpec
.
newIntField
(
colName
)
.
compressWithZSTD
()
.
encodeWithGorilla
()
.
build
();
}
else
if
(
StorageDataComplexObject
.
class
.
isAssignableFrom
(
modelColumn
.
getType
()))
{
return
Measure
.
FieldSpec
.
newStringField
(
valueColumn
.
getValueCName
()
)
}
else
if
(
StorageDataComplexObject
.
class
.
isAssignableFrom
(
modelColumn
.
getType
())
||
JsonObject
.
class
.
equals
(
modelColumn
.
getType
())
)
{
return
Measure
.
FieldSpec
.
newStringField
(
colName
)
.
compressWithZSTD
()
.
build
();
}
else
if
(
double
.
class
.
equals
(
modelColumn
.
getType
()))
{
// TODO: natively support double/float in BanyanDB
log
.
warn
(
"Double is stored as binary"
);
return
Measure
.
FieldSpec
.
newBinaryField
(
valueColumn
.
getValueCName
()
)
return
Measure
.
FieldSpec
.
newBinaryField
(
colName
)
.
compressWithZSTD
()
.
build
();
}
else
{
...
...
@@ -313,6 +314,14 @@ public enum MetadataRegistry {
return
tagMetadataList
;
}
@Builder
private
static
class
MeasureMetadata
{
@Singular
private
final
List
<
TagMetadata
>
tags
;
@Singular
private
final
List
<
Measure
.
FieldSpec
>
fields
;
}
/**
* Parse tags and fields' metadata for {@link Measure}.
* For field whose dataType is not {@link Column.ValueDataType#NOT_VALUE},
...
...
@@ -320,32 +329,27 @@ public enum MetadataRegistry {
*
* @since 9.4.0 Skip {@link Metrics#TIME_BUCKET}
*/
List
<
TagMetadata
>
parseTagAndFieldMetadata
(
Model
model
,
Schema
.
SchemaBuilder
builder
)
{
List
<
TagMetadata
>
tagMetadataList
=
new
ArrayList
<>();
MeasureMetadata
parseTagAndFieldMetadata
(
Model
model
,
Schema
.
SchemaBuilder
builder
)
{
// skip metric
Optional
<
ValueColumnMetadata
.
ValueColumn
>
valueColumnOpt
=
ValueColumnMetadata
.
INSTANCE
.
readValueColumnDefinition
(
model
.
getName
());
MeasureMetadata
.
MeasureMetadataBuilder
result
=
MeasureMetadata
.
builder
();
for
(
final
ModelColumn
col
:
model
.
getColumns
())
{
final
String
columnStorageName
=
col
.
getColumnName
().
getStorageName
();
if
(
columnStorageName
.
equals
(
Metrics
.
TIME_BUCKET
))
{
continue
;
}
if
(
valueColumnOpt
.
isPresent
()
&&
valueColumnOpt
.
get
().
getValueCName
().
equals
(
columnStorageName
))
{
if
(
col
.
isStorageOnly
()
||
valueColumnOpt
.
isPresent
()
&&
valueColumnOpt
.
get
().
getValueCName
().
equals
(
columnStorageName
))
{
builder
.
spec
(
columnStorageName
,
new
ColumnSpec
(
ColumnType
.
FIELD
,
col
.
getType
()));
result
.
field
(
parseFieldSpec
(
col
));
continue
;
}
final
TagFamilySpec
.
TagSpec
tagSpec
=
parseTagSpec
(
col
);
builder
.
spec
(
columnStorageName
,
new
ColumnSpec
(
ColumnType
.
TAG
,
col
.
getType
()));
if
(
col
.
shouldIndex
())
{
// build indexRule
IndexRule
indexRule
=
parseIndexRule
(
tagSpec
.
getTagName
(),
col
);
tagMetadataList
.
add
(
new
TagMetadata
(
indexRule
,
tagSpec
));
}
else
{
tagMetadataList
.
add
(
new
TagMetadata
(
null
,
tagSpec
));
}
result
.
tag
(
new
TagMetadata
(
col
.
shouldIndex
()
?
parseIndexRule
(
tagSpec
.
getTagName
(),
col
)
:
null
,
tagSpec
));
}
return
tagMetadataList
;
return
result
.
build
()
;
}
/**
...
...
@@ -518,11 +522,6 @@ public enum MetadataRegistry {
for
(
final
Map
.
Entry
<
String
,
List
<
TagMetadata
>>
entry
:
tagMetadataMap
.
entrySet
())
{
final
TagFamilySpec
.
Builder
b
=
TagFamilySpec
.
create
(
entry
.
getKey
())
.
addTagSpecs
(
entry
.
getValue
().
stream
().
map
(
TagMetadata:
:
getTagSpec
).
collect
(
Collectors
.
toList
()));
if
(
this
.
getKind
()
==
Kind
.
MEASURE
&&
entry
.
getKey
().
equals
(
this
.
indexFamily
()))
{
// append measure ID, but it should not generate an index in the client side.
// BanyanDB will take care of the ID index registration.
b
.
addIDTagSpec
();
}
tagFamilySpecs
.
add
(
b
.
build
());
}
...
...
oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsDAO.java
浏览文件 @
ecd698e8
...
...
@@ -138,7 +138,6 @@ public class BanyanDBMetricsDAO extends AbstractBanyanDBDAO implements IMetricsD
TimeBucket
.
getTimestamp
(
metrics
.
getTimeBucket
(),
model
.
getDownsampling
()));
// timestamp
final
BanyanDBConverter
.
MeasureToStorage
toStorage
=
new
BanyanDBConverter
.
MeasureToStorage
(
schema
,
measureWrite
);
storageBuilder
.
entity2Storage
(
metrics
,
toStorage
);
toStorage
.
acceptID
(
metrics
.
id
().
build
());
return
new
BanyanDBMeasureInsertRequest
(
toStorage
.
obtain
(),
callback
);
}
...
...
@@ -154,7 +153,6 @@ public class BanyanDBMetricsDAO extends AbstractBanyanDBDAO implements IMetricsD
TimeBucket
.
getTimestamp
(
metrics
.
getTimeBucket
(),
model
.
getDownsampling
()));
// timestamp
final
BanyanDBConverter
.
MeasureToStorage
toStorage
=
new
BanyanDBConverter
.
MeasureToStorage
(
schema
,
measureWrite
);
storageBuilder
.
entity2Storage
(
metrics
,
toStorage
);
toStorage
.
acceptID
(
metrics
.
id
().
build
());
return
new
BanyanDBMeasureUpdateRequest
(
toStorage
.
obtain
());
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录