From 42236c2889234577bb6e0043fe92671dac194322 Mon Sep 17 00:00:00 2001 From: "minwoo.jung" Date: Thu, 16 May 2024 17:02:52 +0900 Subject: [PATCH] [#10704] change the servicetype code to servicecode name for readability. --- .../ServiceTypeMatchingPostProcessor.java | 81 +++++++++++++++++++ .../DefaultApplicationStatService.java | 4 +- .../web/inspector-definition-for-agent.yml | 1 + 3 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 inspector-module/inspector-web/src/main/java/com/navercorp/pinpoint/inspector/web/definition/metric/ServiceTypeMatchingPostProcessor.java diff --git a/inspector-module/inspector-web/src/main/java/com/navercorp/pinpoint/inspector/web/definition/metric/ServiceTypeMatchingPostProcessor.java b/inspector-module/inspector-web/src/main/java/com/navercorp/pinpoint/inspector/web/definition/metric/ServiceTypeMatchingPostProcessor.java new file mode 100644 index 000000000000..3e0c28d38a36 --- /dev/null +++ b/inspector-module/inspector-web/src/main/java/com/navercorp/pinpoint/inspector/web/definition/metric/ServiceTypeMatchingPostProcessor.java @@ -0,0 +1,81 @@ +/* + * Copyright 2024 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.inspector.web.definition.metric; + +import com.navercorp.pinpoint.inspector.web.model.InspectorMetricValue; +import com.navercorp.pinpoint.loader.service.ServiceTypeRegistryService; +import com.navercorp.pinpoint.metric.common.model.Tag; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author minwoo-jung + */ +@Component +public class ServiceTypeMatchingPostProcessor implements MetricPostProcessor { + + public static final String SERVICE_TYPE = "serviceType"; + private static final String SERVICE_TYPE_CODE = "serviceTypeCode"; + private final ServiceTypeRegistryService serviceTypeRegistryService; + + public ServiceTypeMatchingPostProcessor(ServiceTypeRegistryService serviceTypeRegistryService) { + this.serviceTypeRegistryService = serviceTypeRegistryService; + } + + @Override + public String getName() { + return "matchingServiceType"; + } + + @Override + public List postProcess(List metricValueList) { + if (metricValueList.isEmpty()) { + return metricValueList; + } + + List newMetricValueList = new ArrayList<>(metricValueList.size()); + + for(InspectorMetricValue inspectorMetricValue : metricValueList) { + List tagList = changeServiceTypeCodeToName(inspectorMetricValue.getTagList()); + newMetricValueList.add(new InspectorMetricValue(inspectorMetricValue.getFieldName(), + tagList, + inspectorMetricValue.getChartType(), + inspectorMetricValue.getUnit(), + inspectorMetricValue.getValueList())); + } + + return newMetricValueList; + } + + private List changeServiceTypeCodeToName(List tagList) { + List newTagList = new ArrayList<>(tagList.size()); + + for (Tag tag : tagList) { + if (tag.getName().equals(SERVICE_TYPE_CODE)) { + short serviceTypeCode = Short.parseShort(tag.getValue()); + String serviceTypeName = serviceTypeRegistryService.findServiceType(serviceTypeCode).getName(); + newTagList.add(new Tag(SERVICE_TYPE, serviceTypeName)); + } else { + newTagList.add(tag); + } + } + + return newTagList; + } +} diff --git a/inspector-module/inspector-web/src/main/java/com/navercorp/pinpoint/inspector/web/service/DefaultApplicationStatService.java b/inspector-module/inspector-web/src/main/java/com/navercorp/pinpoint/inspector/web/service/DefaultApplicationStatService.java index 0742582de71d..260e3350d781 100644 --- a/inspector-module/inspector-web/src/main/java/com/navercorp/pinpoint/inspector/web/service/DefaultApplicationStatService.java +++ b/inspector-module/inspector-web/src/main/java/com/navercorp/pinpoint/inspector/web/service/DefaultApplicationStatService.java @@ -190,8 +190,8 @@ private Collection splitAvgMin(TimeWindow timeWindow, Fiel } List inspectorMetricValueList = new ArrayList<>(2); - inspectorMetricValueList.add(new InspectorMetricValue("AVG", field.getTags(), field.getChartType(), field.getUnit(), avgValueList)); inspectorMetricValueList.add(new InspectorMetricValue("MIN", field.getTags(), field.getChartType(), field.getUnit(), minValueList)); + inspectorMetricValueList.add(new InspectorMetricValue("AVG", field.getTags(), field.getChartType(), field.getUnit(), avgValueList)); return inspectorMetricValueList; } @@ -210,8 +210,8 @@ private List splitAvgMinMax(TimeWindow timeWindow, Field f } List inspectorMetricValueList = new ArrayList<>(3); - inspectorMetricValueList.add(new InspectorMetricValue("AVG", field.getTags(), field.getChartType(), field.getUnit(), avgValueList)); inspectorMetricValueList.add(new InspectorMetricValue("MIN", field.getTags(), field.getChartType(), field.getUnit(), minValueList)); + inspectorMetricValueList.add(new InspectorMetricValue("AVG", field.getTags(), field.getChartType(), field.getUnit(), avgValueList)); inspectorMetricValueList.add(new InspectorMetricValue("MAX", field.getTags(), field.getChartType(), field.getUnit(), maxValueList)); return inspectorMetricValueList; } diff --git a/inspector-module/inspector-web/src/main/resources/inspector/web/inspector-definition-for-agent.yml b/inspector-module/inspector-web/src/main/resources/inspector/web/inspector-definition-for-agent.yml index e4d957e4aab5..56385d6f6d0f 100644 --- a/inspector-module/inspector-web/src/main/resources/inspector/web/inspector-definition-for-agent.yml +++ b/inspector-module/inspector-web/src/main/resources/inspector/web/inspector-definition-for-agent.yml @@ -219,6 +219,7 @@ mappings: title: "Data Source" grouping: "TAG" preProcess: "usingDataSourceTagForAgent" + postProcess: "matchingServiceType" fields: - fieldName: "activeConnectionSize" fieldAlias: "activeAvg"