diff --git a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/model/MetricValueGroup.java b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/model/MetricValueGroup.java new file mode 100644 index 000000000000..68dcc013eda1 --- /dev/null +++ b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/model/MetricValueGroup.java @@ -0,0 +1,44 @@ +/* + * Copyright 2021 NAVER Corp. + * + * Licensed 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 com.navercorp.pinpoint.metric.web.model; + +import com.navercorp.pinpoint.metric.common.model.StringPrecondition; + +import java.util.List; +import java.util.Objects; + +/** + * @author minwoo.jung + */ +public class MetricValueGroup { + + private final String groupName; + private final List> metricValueList; + + public MetricValueGroup(List> metricValueList, String groupName) { + this.groupName = StringPrecondition.requireHasLength(groupName, "groupName"); + this.metricValueList = Objects.requireNonNull(metricValueList, "metricValueList");; + } + + public List> getMetricValueList() { + return metricValueList; + } + + public String getGroupName() { + return groupName; + } +} diff --git a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/model/SystemMetricData.java b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/model/SystemMetricData.java index 584ece4232ca..d91ef1ee303a 100644 --- a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/model/SystemMetricData.java +++ b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/model/SystemMetricData.java @@ -26,13 +26,19 @@ */ public class SystemMetricData { private final String title; + private final String unit; private final List timeStampList; - private final List> metricValueList; + private final List> metricValueGroupList; - public SystemMetricData(String title, List timeStampList, List> metricValueList) { + public SystemMetricData(String title, String unit, List timeStampList, List> metricValueGroupList) { this.title = StringPrecondition.requireHasLength(title, "title"); + this.unit = StringPrecondition.requireHasLength(unit, "unit"); this.timeStampList = Objects.requireNonNull(timeStampList, "timeStampList"); - this.metricValueList = Objects.requireNonNull(metricValueList, "metricValueList"); + this.metricValueGroupList = Objects.requireNonNull(metricValueGroupList, "metricValueGroupList"); + } + + public String getUnit() { + return unit; } public String getTitle() { @@ -43,7 +49,8 @@ public List getTimeStampList() { return timeStampList; } - public List> getMetricValueList() { - return metricValueList; + public List> getMetricValueGroupList() { + return metricValueGroupList; } + } diff --git a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/model/basic/metric/group/GroupingRule.java b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/model/basic/metric/group/GroupingRule.java new file mode 100644 index 000000000000..3b46853926fe --- /dev/null +++ b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/model/basic/metric/group/GroupingRule.java @@ -0,0 +1,53 @@ +/* + * Copyright 2021 NAVER Corp. + * + * Licensed 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 com.navercorp.pinpoint.metric.web.model.basic.metric.group; + +import java.util.Objects; + +/** + * @author minwoo.jung + */ +public enum GroupingRule { + TAG(1, "tag"), + UNKNOWN(100, "unknown"); + + private final int code; + private final String value; + + GroupingRule(int code, String value) { + this.code = code; + this.value = Objects.requireNonNull(value, "value"); + } + + public static GroupingRule getByCode(int code) { + for (GroupingRule groupingRule : GroupingRule.values()) { + if (groupingRule.code == code) { + return groupingRule; + } + } + throw new IllegalArgumentException("Unknown code : " + code); + } + + public static GroupingRule getByValue(String value) { + for (GroupingRule groupingRule : GroupingRule.values()) { + if (groupingRule.value.equalsIgnoreCase(value)) { + return groupingRule; + } + } + throw new IllegalArgumentException("Unknown value : " + value); + } +} diff --git a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/model/basic/metric/group/MatchingRule.java b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/model/basic/metric/group/MatchingRule.java index 2e16dda05c97..852785716140 100644 --- a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/model/basic/metric/group/MatchingRule.java +++ b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/model/basic/metric/group/MatchingRule.java @@ -8,6 +8,7 @@ public enum MatchingRule { EXACT(1, "exact"), CONTAIN(2, "contain"), + ALL(3, "all"), UNKNOWN(100, "unknown"); private final int code; diff --git a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricBasicGroupManager.java b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricBasicGroupManager.java index 0a75ecf8aa76..469dca6b6c2d 100644 --- a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricBasicGroupManager.java +++ b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricBasicGroupManager.java @@ -18,6 +18,7 @@ import com.navercorp.pinpoint.metric.common.model.Tag; import com.navercorp.pinpoint.metric.web.model.basic.metric.group.ElementOfBasicGroup; +import com.navercorp.pinpoint.metric.web.model.basic.metric.group.GroupingRule; import com.navercorp.pinpoint.metric.web.model.basic.metric.group.MatchingRule; import org.springframework.stereotype.Service; @@ -32,22 +33,56 @@ @Service public class SystemMetricBasicGroupManager { + private static final String UNIT_PERCENT = "percent"; + private static final String UNIT_COUNT = "count"; + private static final String UNIT_BYTE = "byte"; + + //TODO : (minwoo) 추후 좀더 정의가 쌓이면 domain(객체)로 만들예정, 현재로써는 구조를 잡기보다는 데이터 조합 사례가 더 쌓여야할 필요가 있음. private static final String CPU_METRIC_NAME = "cpu"; private static final String CPU_DEFINITION_ID = "cpu"; private static final String CPU_TITLE = "cpu"; + private static final GroupingRule CPU_GROUPING_RULE = GroupingRule.TAG; private static final List CPU_METRIC; + private static final String CPU_UNIT = UNIT_PERCENT; private static final String MEMORY_METRIC_NAME = "mem"; private static final String MEMORY_PERCENT_METRIC_NAME = MEMORY_METRIC_NAME; private static final String MEMORY_PERCENT_DEFINITION_ID = "memoryPercent"; private static final String MEMORY_PERCENT_TITLE = "memory usage percent"; + private static final GroupingRule MEMORY_PERCENT_GROUPING_RULE = GroupingRule.TAG; private static final List MEMORY_PERCENT_METRIC; + private static final String MEMORY_PERCENT_UNIT = UNIT_PERCENT; private static final String MEMORY_USAGE_METRIC_NAME = MEMORY_METRIC_NAME; private static final String MEMORY_USAGE_DEFINITION_ID = "memoryUsage"; private static final String MEMORY_USAGE_TITLE = "memory usage"; + private static final GroupingRule MEMORY_USAGE_GROUPING_RULE = GroupingRule.TAG; private static final List MEMORY_USAGE_METRIC; + private static final String MEMORY_USAGE_UNIT = UNIT_BYTE; + + private static final String DISK_METRIC_NAME = "disk"; + + private static final String DISK_USAGE_METRIC_NAME = DISK_METRIC_NAME; + private static final String DISK_USAGE_DEFINITION_ID = "diskUsage"; + private static final String DISK_USAGE_TITLE = "disk usage"; + private static final GroupingRule DISK_USAGE_GROUPING_RULE = GroupingRule.TAG; + private static final List DISK_USAGE_METRIC; + private static final String DISK_USAGE_UNIT = UNIT_BYTE; + + private static final String DISK_PERCENT_METRIC_NAME = DISK_METRIC_NAME; + private static final String DISK_PERCENT_DEFINITION_ID = "diskPercent"; + private static final String DISK_PERCENT_TITLE = "disk usage percent"; + private static final GroupingRule DISK_PERCENT_GROUPING_RULE = GroupingRule.TAG; + private static final List DISK_PERCENT_METRIC; + private static final String DISK_PERCENT_UNIT = UNIT_PERCENT; + + private static final String DISK_INODE_METRIC_NAME = DISK_METRIC_NAME; + private static final String DISK_INODE_DEFINITION_ID = "inodeUsage"; + private static final String DISK_INODE_TITLE = "inode usage percent"; + private static final GroupingRule DISK_INODE_GROUPING_RULE = GroupingRule.TAG; + private static final List DISK_INODE_METRIC; + private static final String DISK_INODE_UNIT = UNIT_COUNT; static { //CPU @@ -90,6 +125,42 @@ public class SystemMetricBasicGroupManager { MEMORY_USAGE_METRIC = Collections.unmodifiableList(elementOfBasicGroupList); } + static { + //disk usage + List tagList = new ArrayList(0); + ElementOfBasicGroup diskTotal = new ElementOfBasicGroup(DISK_USAGE_METRIC_NAME, "total", tagList, MatchingRule.ALL); + ElementOfBasicGroup diskUsed = new ElementOfBasicGroup(DISK_USAGE_METRIC_NAME, "used", tagList, MatchingRule.ALL); + List elementOfBasicGroupList = new ArrayList<>(2); + elementOfBasicGroupList.add(diskTotal); + elementOfBasicGroupList.add(diskUsed); + + DISK_USAGE_METRIC = Collections.unmodifiableList(elementOfBasicGroupList); + } + + static { + //disk usage percent + List tagList = new ArrayList(0); + ElementOfBasicGroup diskUsedPercent = new ElementOfBasicGroup(DISK_PERCENT_METRIC_NAME, "used_percent", tagList, MatchingRule.ALL); + List elementOfBasicGroupList = new ArrayList<>(1); + elementOfBasicGroupList.add(diskUsedPercent); + + DISK_PERCENT_METRIC = Collections.unmodifiableList(elementOfBasicGroupList); + } + + static { + //disk usage + List tagList = new ArrayList(0); + ElementOfBasicGroup inodeTotal = new ElementOfBasicGroup(DISK_INODE_METRIC_NAME, "inodes_total", tagList, MatchingRule.ALL); + ElementOfBasicGroup inodeUsed = new ElementOfBasicGroup(DISK_INODE_METRIC_NAME, "inodes_used", tagList, MatchingRule.ALL); + ElementOfBasicGroup inodeFree = new ElementOfBasicGroup(DISK_INODE_METRIC_NAME, "inodes_free", tagList, MatchingRule.ALL); + List elementOfBasicGroupList = new ArrayList<>(3); + elementOfBasicGroupList.add(inodeTotal); + elementOfBasicGroupList.add(inodeUsed); + elementOfBasicGroupList.add(inodeFree); + + DISK_INODE_METRIC = Collections.unmodifiableList(elementOfBasicGroupList); + } + public List findElementOfBasicGroup(String metricDefinitionId) { if (CPU_DEFINITION_ID.equals(metricDefinitionId)) { @@ -98,6 +169,12 @@ public List findElementOfBasicGroup(String metricDefinition return MEMORY_PERCENT_METRIC; } else if (MEMORY_USAGE_DEFINITION_ID.equals(metricDefinitionId)) { return MEMORY_USAGE_METRIC; + } else if (DISK_USAGE_DEFINITION_ID.equals(metricDefinitionId)) { + return DISK_USAGE_METRIC; + } else if (DISK_PERCENT_DEFINITION_ID.equals(metricDefinitionId)) { + return DISK_PERCENT_METRIC; + } else if (DISK_INODE_DEFINITION_ID.equals(metricDefinitionId)) { + return DISK_INODE_METRIC; } throw new UnsupportedOperationException("unsupported metric :" + metricDefinitionId); @@ -110,6 +187,12 @@ public String findMetricName(String metricDefinitionId) { return MEMORY_PERCENT_METRIC_NAME; } else if (MEMORY_USAGE_DEFINITION_ID.equals(metricDefinitionId)) { return MEMORY_USAGE_METRIC_NAME; + } else if (DISK_USAGE_DEFINITION_ID.equals(metricDefinitionId)) { + return DISK_USAGE_METRIC_NAME; + } else if (DISK_PERCENT_DEFINITION_ID.equals(metricDefinitionId)) { + return DISK_PERCENT_METRIC_NAME; + } else if (DISK_INODE_DEFINITION_ID.equals(metricDefinitionId)) { + return DISK_INODE_METRIC_NAME; } throw new UnsupportedOperationException("unsupported metric :" + metricDefinitionId); @@ -122,6 +205,48 @@ public String findMetricTitle(String metricDefinitionId) { return MEMORY_PERCENT_TITLE; } else if (MEMORY_USAGE_DEFINITION_ID.equals(metricDefinitionId)) { return MEMORY_USAGE_TITLE; + } else if (DISK_USAGE_DEFINITION_ID.equals(metricDefinitionId)) { + return DISK_USAGE_TITLE; + } else if (DISK_PERCENT_DEFINITION_ID.equals(metricDefinitionId)) { + return DISK_PERCENT_TITLE; + } else if (DISK_INODE_DEFINITION_ID.equals(metricDefinitionId)) { + return DISK_INODE_TITLE; + } + + throw new UnsupportedOperationException("unsupported metric :" + metricDefinitionId); + } + + public GroupingRule findGroupingRule(String metricDefinitionId) { + if (CPU_DEFINITION_ID.equals(metricDefinitionId)) { + return CPU_GROUPING_RULE; + } else if (MEMORY_PERCENT_DEFINITION_ID.equals(metricDefinitionId)) { + return MEMORY_PERCENT_GROUPING_RULE; + } else if (MEMORY_USAGE_DEFINITION_ID.equals(metricDefinitionId)) { + return MEMORY_USAGE_GROUPING_RULE; + } else if (DISK_USAGE_DEFINITION_ID.equals(metricDefinitionId)) { + return DISK_USAGE_GROUPING_RULE; + } else if (DISK_PERCENT_DEFINITION_ID.equals(metricDefinitionId)) { + return DISK_PERCENT_GROUPING_RULE; + } else if (DISK_INODE_DEFINITION_ID.equals(metricDefinitionId)) { + return DISK_INODE_GROUPING_RULE; + } + + throw new UnsupportedOperationException("unsupported metric :" + metricDefinitionId); + } + + public String findUnit(String metricDefinitionId) { + if (CPU_DEFINITION_ID.equals(metricDefinitionId)) { + return CPU_UNIT; + } else if (MEMORY_PERCENT_DEFINITION_ID.equals(metricDefinitionId)) { + return MEMORY_PERCENT_UNIT; + } else if (MEMORY_USAGE_DEFINITION_ID.equals(metricDefinitionId)) { + return MEMORY_USAGE_UNIT; + } else if (DISK_USAGE_DEFINITION_ID.equals(metricDefinitionId)) { + return DISK_USAGE_UNIT; + } else if (DISK_PERCENT_DEFINITION_ID.equals(metricDefinitionId)) { + return DISK_PERCENT_UNIT; + } else if (DISK_INODE_DEFINITION_ID.equals(metricDefinitionId)) { + return DISK_INODE_UNIT; } throw new UnsupportedOperationException("unsupported metric :" + metricDefinitionId); @@ -134,6 +259,10 @@ public List findMetricDefinitionIdList(String metricName) { } else if (MEMORY_METRIC_NAME.equals(metricName)) { definitionIdList.add(MEMORY_PERCENT_DEFINITION_ID); definitionIdList.add(MEMORY_USAGE_DEFINITION_ID); + } else if (DISK_METRIC_NAME.equals(metricName)) { + definitionIdList.add(DISK_USAGE_DEFINITION_ID); + definitionIdList.add(DISK_PERCENT_DEFINITION_ID); + definitionIdList.add((DISK_INODE_DEFINITION_ID)); } return definitionIdList; diff --git a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricDataServiceImpl.java b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricDataServiceImpl.java index e525c6e0de1d..3402ec62b35e 100644 --- a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricDataServiceImpl.java +++ b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricDataServiceImpl.java @@ -21,11 +21,14 @@ import com.navercorp.pinpoint.metric.common.model.MetricDataType; import com.navercorp.pinpoint.metric.common.model.MetricTag; import com.navercorp.pinpoint.metric.common.model.SystemMetric; +import com.navercorp.pinpoint.metric.common.model.Tag; import com.navercorp.pinpoint.metric.web.dao.SystemMetricDao; import com.navercorp.pinpoint.metric.web.model.MetricDataSearchKey; import com.navercorp.pinpoint.metric.web.model.MetricValue; +import com.navercorp.pinpoint.metric.web.model.MetricValueGroup; import com.navercorp.pinpoint.metric.web.model.SystemMetricData; import com.navercorp.pinpoint.metric.web.model.basic.metric.group.ElementOfBasicGroup; +import com.navercorp.pinpoint.metric.web.model.basic.metric.group.GroupingRule; import com.navercorp.pinpoint.metric.web.model.chart.SystemMetricPoint; import com.navercorp.pinpoint.metric.web.util.TimeWindow; import com.navercorp.pinpoint.metric.web.util.QueryParameter; @@ -40,7 +43,10 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; @@ -109,15 +115,26 @@ public SystemMetricChart getSystemMetricChart(TimeWindow timeWindow, QueryParame @Override public SystemMetricData getCollectedMetricData(MetricDataSearchKey metricDataSearchKey, TimeWindow timeWindow) { String metricDefinitionId = metricDataSearchKey.getMetricDefinitionId(); - List elementOfBasicGroupList = systemMetricBasicGroupManager.findElementOfBasicGroup(metricDataSearchKey.getMetricDefinitionId()); + + List metricValueList = getMetricValues(metricDataSearchKey, timeWindow); + + GroupingRule groupingRule = systemMetricBasicGroupManager.findGroupingRule(metricDefinitionId); + List metricValueGroupList = groupingMetricValue(metricValueList, groupingRule); + + List timeStampList = createTimeStampList(timeWindow); String title = systemMetricBasicGroupManager.findMetricTitle(metricDefinitionId); + String unit = systemMetricBasicGroupManager.findUnit(metricDefinitionId); + return new SystemMetricData(title, unit, timeStampList ,metricValueGroupList); + } + + private List getMetricValues(MetricDataSearchKey metricDataSearchKey, TimeWindow timeWindow) { + List elementOfBasicGroupList = systemMetricBasicGroupManager.findElementOfBasicGroup(metricDataSearchKey.getMetricDefinitionId()); List metricValueList = new ArrayList<>(elementOfBasicGroupList.size()); for (ElementOfBasicGroup elementOfBasicGroup : elementOfBasicGroupList) { MetricDataType metricDataType = systemMetricDataTypeService.getMetricDataType(new MetricDataName(metricDataSearchKey.getMetricName(), elementOfBasicGroup.getFieldName())); List metricTagList = systemMetricHostInfoService.getTag(metricDataSearchKey, elementOfBasicGroup); - for (MetricTag metricTag : metricTagList) { switch (metricDataType) { case LONG: @@ -136,11 +153,94 @@ public SystemMetricData getCollectedMetricData(MetricDataSearchKey metricDataSea } } } + return metricValueList; + } - List timeStampList = createTimeStampList(timeWindow); - return new SystemMetricData(title, timeStampList ,metricValueList); + private List groupingMetricValue(List metricValueList, GroupingRule groupingRule) { + switch(groupingRule) { + case TAG : + return groupingByTag(metricValueList); + default : + throw new UnsupportedOperationException("unsupported groupingRule :" + groupingRule); + } } + private List groupingByTag(List metricValueList) { + List uniqueTagGroupList = new ArrayList(); + + for (MetricValue metricValue : metricValueList) { + List tagList = metricValue.getTagList(); + addTagList(uniqueTagGroupList, tagList); + } + + Map> metricValueGroupMap = new HashMap<>(); + for (MetricValue metricValue : metricValueList) { + int index = uniqueTagGroupList.indexOf(new TagGroup(metricValue.getTagList())); + TagGroup tagGroup = uniqueTagGroupList.get(index); + + if (metricValueGroupMap.containsKey(tagGroup)) { + List metricValues = metricValueGroupMap.get(tagGroup); + metricValues.add(metricValue); + } else { + List metricValues = new ArrayList<>(1); + metricValues.add(metricValue); + metricValueGroupMap.put(tagGroup, metricValues); + } + } + + Collection> valueList = metricValueGroupMap.values(); + + List metricValueGroupList = new ArrayList<>(valueList.size()); + for (Map.Entry> entry : metricValueGroupMap.entrySet()) { + metricValueGroupList.add(new MetricValueGroup(entry.getValue(),entry.getKey().toString())); + } + + return metricValueGroupList; + } + + private void addTagList(List uniqueTagList, List tagList) { + TagGroup newTagGroup = new TagGroup(tagList); + + for (TagGroup tagGroup : uniqueTagList) { + if (tagGroup.equals(newTagGroup)) { + return; + } + } + + uniqueTagList.add(newTagGroup); + } + + private class TagGroup { + private List tagList; + + public TagGroup(List tagList) { + this.tagList = Objects.requireNonNull(tagList, "tagList");; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + TagGroup tagGroup = (TagGroup) o; + + if (tagList.size() == tagGroup.tagList.size()) { + if (tagList.containsAll(tagGroup.tagList)) { + return true; + } + } + + return false; + } + + @Override + public String toString() { + return "TagGroup{" + + "tagList=" + tagList + + '}'; + } + } + + private List createTimeStampList(TimeWindow timeWindow) { List timestampList = new ArrayList<>((int) timeWindow.getWindowRangeCount()); diff --git a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricHostInfoServiceImpl.java b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricHostInfoServiceImpl.java index 8cdd305b0962..a22bf7c62216 100644 --- a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricHostInfoServiceImpl.java +++ b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricHostInfoServiceImpl.java @@ -75,13 +75,19 @@ public List getTag(MetricDataSearchKey metricDataSearchKey, ElementOf switch (matchingRule) { case EXACT : - return exactMatchingTag(metricTagCollection, metricDataSearchKey, elementOfBasicGroup); + return exactMatchingTag(metricTagCollection, elementOfBasicGroup); + case ALL : + return allMatchingTag(metricTagCollection, elementOfBasicGroup); default : throw new UnsupportedOperationException("unsupported matchingRule:" + matchingRule); } } - private List exactMatchingTag(MetricTagCollection metricTagCollection, MetricDataSearchKey metricDataSearchKey, ElementOfBasicGroup elementOfBasicGroup) { + private List allMatchingTag(MetricTagCollection metricTagCollection, ElementOfBasicGroup elementOfBasicGroup) { + return metricTagCollection.getMetricTagList(); + } + + private List exactMatchingTag(MetricTagCollection metricTagCollection, ElementOfBasicGroup elementOfBasicGroup) { List metricTagList = metricTagCollection.getMetricTagList(); List tagList = elementOfBasicGroup.getTagList(); List exactMetricTagList = new ArrayList<>(); diff --git a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/view/SystemMetricChartSerializer.java b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/view/SystemMetricChartSerializer.java index f7e6dd52032b..00f847b1e022 100644 --- a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/view/SystemMetricChartSerializer.java +++ b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/view/SystemMetricChartSerializer.java @@ -32,6 +32,7 @@ /** * @author Hyunjoon Cho */ +@Deprecated public class SystemMetricChartSerializer extends JsonSerializer { @Override diff --git a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/view/SystemMetricDataSerializer.java b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/view/SystemMetricDataSerializer.java index a1808657117c..0eba3344c57f 100644 --- a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/view/SystemMetricDataSerializer.java +++ b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/view/SystemMetricDataSerializer.java @@ -30,6 +30,7 @@ /** * @author minwoo.jung */ +@Deprecated public class SystemMetricDataSerializer extends JsonSerializer { @Override public void serialize(SystemMetricData systemMetricData, JsonGenerator jgen, SerializerProvider serializerProvider) throws IOException { @@ -37,7 +38,7 @@ public void serialize(SystemMetricData systemMetricData, JsonGenerator jgen, Ser writeTitle(jgen, systemMetricData.getTitle()); writeTimestampList(jgen, systemMetricData.getTimeStampList()); - writeMetricValueList(jgen, systemMetricData.getMetricValueList()); +// writeMetricValueList(jgen, systemMetricData.getMetricValueList()); jgen.writeEndObject(); diff --git a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/view/SystemMetricView.java b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/view/SystemMetricView.java index 2d23edf4dafe..139a2a58b302 100644 --- a/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/view/SystemMetricView.java +++ b/metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/view/SystemMetricView.java @@ -2,6 +2,7 @@ import com.navercorp.pinpoint.metric.common.model.Tag; import com.navercorp.pinpoint.metric.web.model.MetricValue; +import com.navercorp.pinpoint.metric.web.model.MetricValueGroup; import com.navercorp.pinpoint.metric.web.model.SystemMetricData; import java.util.List; @@ -19,17 +20,40 @@ public String getTitle() { return systemMetricData.getTitle(); } + public String getUnit() { + return systemMetricData.getUnit(); + } + public List getTimestamp() { return systemMetricData.getTimeStampList(); } - public List getMetricValues() { - return systemMetricData.getMetricValueList() + public List getMetricValueGroups() { + return systemMetricData.getMetricValueGroupList() .stream() - .map(MetricValueView::new) + .map(MetricValueGroupView::new) .collect(Collectors.toList()); } + public static class MetricValueGroupView { + private final MetricValueGroup value; + + public MetricValueGroupView(MetricValueGroup value) { + this.value = Objects.requireNonNull(value, "value"); + } + + public String getGroupName() { + return value.getGroupName(); + } + + public List getMetricValues() { + return value.getMetricValueList() + .stream() + .map(MetricValueView::new) + .collect(Collectors.toList()); + } + } + public static class MetricValueView { private final MetricValue value;