Skip to content

Commit

Permalink
[pinpoint-apm#8004] Changed api to use metricDefinitionId
Browse files Browse the repository at this point in the history
  • Loading branch information
minwoo-jung committed Aug 25, 2021
1 parent 0b92bca commit 906b98b
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.navercorp.pinpoint.metric.common.model.SystemMetric;
import com.navercorp.pinpoint.metric.web.model.MetricDataSearchKey;
import com.navercorp.pinpoint.metric.web.model.SystemMetricData;
import com.navercorp.pinpoint.metric.web.service.SystemMetricBasicGroupManager;
import com.navercorp.pinpoint.metric.web.service.SystemMetricDataService;
import com.navercorp.pinpoint.metric.web.service.SystemMetricHostInfoService;
import com.navercorp.pinpoint.metric.web.util.QueryParameter;
Expand Down Expand Up @@ -46,14 +47,16 @@
public class SystemMetricController {
private final SystemMetricDataService systemMetricDataService;
private final SystemMetricHostInfoService systemMetricHostInfoService;
private final SystemMetricBasicGroupManager systemMetricBasicGroupManager;

private final TimeWindowSampler DEFAULT_TIME_WINDOW_SAMPLER = new DefaultTimeWindowSampler(10000L);

private final TagParser tagParser = new TagParser();

public SystemMetricController(SystemMetricDataService systemMetricDataService, SystemMetricHostInfoService systemMetricHostInfoService) {
public SystemMetricController(SystemMetricDataService systemMetricDataService, SystemMetricHostInfoService systemMetricHostInfoService, SystemMetricBasicGroupManager systemMetricBasicGroupManager) {
this.systemMetricDataService = Objects.requireNonNull(systemMetricDataService, "systemMetricService");
this.systemMetricHostInfoService = Objects.requireNonNull(systemMetricHostInfoService, "systemMetricHostInfoService");
this.systemMetricBasicGroupManager = Objects.requireNonNull(systemMetricBasicGroupManager, "systemMetricBasicGroupManager");
}

@Deprecated
Expand Down Expand Up @@ -156,14 +159,13 @@ public List<String> getCollectedMetricInfo(@RequestParam("hostGroupId") String h
@GetMapping(value = "/hostGroup/host/collectedMetricData")
public SystemMetricView getCollectedMetricData(@RequestParam("hostGroupId") String hostGroupId,
@RequestParam("hostName") String hostName,
@RequestParam("metricName") String metricName,
@RequestParam("metricDefinitionId") String metricDefinitionId,
@RequestParam("from") long from,
@RequestParam("to") long to) {
//TODO : (minwoo) sampler 를 range 값에 따라서 다르게 설정해주는 로직이 들어가는게 필요함
Range range = Range.newRange(from, to);
TimeWindow timeWindow = new TimeWindow(Range.newRange(from, to), DEFAULT_TIME_WINDOW_SAMPLER);
MetricDataSearchKey metricDataSearchKey = new MetricDataSearchKey(hostGroupId, hostName, metricName, metricDefinitionId, range);
MetricDataSearchKey metricDataSearchKey = new MetricDataSearchKey(hostGroupId, hostName, systemMetricBasicGroupManager.findMetricName(metricDefinitionId), metricDefinitionId, range);
SystemMetricData systemMetricData = systemMetricDataService.getCollectedMetricData(metricDataSearchKey, timeWindow);

return new SystemMetricView(systemMetricData);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,25 +23,29 @@

import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

/**
* @author minwoo.jung
*/
@Service
public class SystemMetricBasicGroupManager {
private static final String CPU_DEFINITION_ID = "cpu";

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 List<ElementOfBasicGroup> CPU_METRIC;

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_METRIC_NAME = "mem";
private static final String MEMORY_PERCENT_TITLE = "memory usage percent";
private static final List<ElementOfBasicGroup> MEMORY_PERCENT_METRIC;

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_METRIC_NAME = "mem";
private static final String MEMORY_USAGE_TITLE = "memory usage";
private static final List<ElementOfBasicGroup> MEMORY_USAGE_METRIC;

Expand Down Expand Up @@ -99,6 +103,18 @@ public List<ElementOfBasicGroup> findElementOfBasicGroup(String metricDefinition
throw new UnsupportedOperationException("unsupported metric :" + metricDefinitionId);
}

public String findMetricName(String metricDefinitionId) {
if (CPU_DEFINITION_ID.equals(metricDefinitionId)) {
return CPU_METRIC_NAME;
} else if (MEMORY_PERCENT_DEFINITION_ID.equals(metricDefinitionId)) {
return MEMORY_PERCENT_METRIC_NAME;
} else if (MEMORY_USAGE_DEFINITION_ID.equals(metricDefinitionId)) {
return MEMORY_USAGE_METRIC_NAME;
}

throw new UnsupportedOperationException("unsupported metric :" + metricDefinitionId);
}

public String findMetricTitle(String metricDefinitionId) {
if (CPU_DEFINITION_ID.equals(metricDefinitionId)) {
return CPU_TITLE;
Expand All @@ -109,6 +125,17 @@ public String findMetricTitle(String metricDefinitionId) {
}

throw new UnsupportedOperationException("unsupported metric :" + metricDefinitionId);
}

public List<String> findMetricDefinitionIdList(String metricName) {
List<String> definitionIdList = new LinkedList<String>();
if (CPU_METRIC_NAME.equals(metricName)) {
definitionIdList.add(CPU_DEFINITION_ID);
} else if (MEMORY_METRIC_NAME.equals(metricName)) {
definitionIdList.add(MEMORY_PERCENT_DEFINITION_ID);
definitionIdList.add(MEMORY_USAGE_DEFINITION_ID);
}

return definitionIdList;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Objects;

/**
* @author minwoo.jung
Expand All @@ -36,9 +38,11 @@
public class SystemMetricHostInfoServiceImpl implements SystemMetricHostInfoService {

private final SystemMetricHostInfoDao systemMetricHostInfoDao;
private final SystemMetricBasicGroupManager systemMetricBasicGroupManager;

public SystemMetricHostInfoServiceImpl(SystemMetricHostInfoDao systemMetricHostInfoDao) {
public SystemMetricHostInfoServiceImpl(SystemMetricHostInfoDao systemMetricHostInfoDao, SystemMetricBasicGroupManager systemMetricBasicGroupManager) {
this.systemMetricHostInfoDao = systemMetricHostInfoDao;
this.systemMetricBasicGroupManager = Objects.requireNonNull(systemMetricBasicGroupManager, "systemMetricBasicGroupManager");
}

@Override
Expand All @@ -53,7 +57,14 @@ public List<String> getHostList(String hostGroupId) {

@Override
public List<String> getCollectedMetricInfo(String hostGroupId, String hostName) {
return systemMetricHostInfoDao.getCollectedMetricInfo(hostGroupId, hostName);
List<String> metricNameList = systemMetricHostInfoDao.getCollectedMetricInfo(hostGroupId, hostName);

List<String> metricDefinitionIdList = new LinkedList<String>();
for (String metricName : metricNameList) {
metricDefinitionIdList.addAll(systemMetricBasicGroupManager.findMetricDefinitionIdList(metricName));
}

return metricDefinitionIdList;
}

@Override
Expand Down

0 comments on commit 906b98b

Please sign in to comment.