Skip to content

Commit

Permalink
[pinpoint-apm#9945] new api for server map right panel
Browse files Browse the repository at this point in the history
  • Loading branch information
donghun-cho committed May 18, 2023
1 parent 8a3ba8a commit 1d69d5b
Show file tree
Hide file tree
Showing 18 changed files with 625 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public class FilterMapWrap {
public FilterMapWrap(ApplicationMap applicationMap, TimeHistogramFormat timeHistogramFormat) {
this.applicationMap = applicationMap;

if(timeHistogramFormat == TimeHistogramFormat.V2) {
if(timeHistogramFormat != TimeHistogramFormat.V1) {
for(Node node : applicationMap.getNodes()) {
node.setTimeHistogramFormat(timeHistogramFormat);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@ public class MapWrap {

public MapWrap(ApplicationMap applicationMap, final TimeHistogramFormat timeHistogramFormat) {
this.applicationMap = applicationMap;
if(timeHistogramFormat == TimeHistogramFormat.V2) {
for(Node node : applicationMap.getNodes()) {
if (timeHistogramFormat != TimeHistogramFormat.V1) {
for (Node node : applicationMap.getNodes()) {
node.setTimeHistogramFormat(timeHistogramFormat);
}
for(Link link : applicationMap.getLinks()) {
for (Link link : applicationMap.getLinks()) {
link.setTimeHistogramFormat(timeHistogramFormat);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
import com.navercorp.pinpoint.web.util.TimeWindow;
import com.navercorp.pinpoint.web.view.AgentResponseTimeViewModel;
import com.navercorp.pinpoint.web.view.TimeViewModel;
import com.navercorp.pinpoint.web.view.time.LoadChartView;
import com.navercorp.pinpoint.web.view.time.LoadStatsticsChartView;
import com.navercorp.pinpoint.web.view.time.TimeHistogramView;
import com.navercorp.pinpoint.web.vo.Application;
import com.navercorp.pinpoint.web.vo.stat.SampledApdexScore;
import com.navercorp.pinpoint.web.vo.stat.chart.agent.AgentStatPoint;
Expand All @@ -32,7 +35,9 @@
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
Expand Down Expand Up @@ -79,6 +84,41 @@ public List<AgentResponseTimeViewModel> createViewModel(TimeHistogramFormat time
return result;
}

public Map<String, List<TimeHistogramView>> createTimeSeriesView() {
Map<String, List<TimeHistogramView>> result = new HashMap<>();
for (AgentHistogram agentHistogram : agentHistogramList.getAgentHistogramList()) {
Application agentId = agentHistogram.getAgentId();
List<TimeHistogram> histogramList = sortTimeHistogram(agentHistogram.getTimeHistogram());

TimeHistogramView load = new LoadChartView(agentId.getServiceType().getHistogramSchema(), histogramList);
TimeHistogramView loadStatistics = new LoadStatsticsChartView(histogramList);
result.put(agentId.getName(), List.of(load, loadStatistics));
}
return result;
}

public Map<String, TimeHistogramView> createLoadChartView() {
Map<String, TimeHistogramView> result = new HashMap<>();
for (AgentHistogram agentHistogram : agentHistogramList.getAgentHistogramList()) {
Application agentId = agentHistogram.getAgentId();
List<TimeHistogram> histogramList = sortTimeHistogram(agentHistogram.getTimeHistogram());

result.put(agentId.getName(), new LoadChartView(agentId.getServiceType().getHistogramSchema(), histogramList));
}
return result;
}

public Map<String, TimeHistogramView> createLoadStatisticsChartView() {
Map<String, TimeHistogramView> result = new HashMap<>();
for (AgentHistogram agentHistogram : agentHistogramList.getAgentHistogramList()) {
Application agentId = agentHistogram.getAgentId();
List<TimeHistogram> histogramList = sortTimeHistogram(agentHistogram.getTimeHistogram());

result.put(agentId.getName(), new LoadStatsticsChartView(histogramList));
}
return result;
}

private List<TimeHistogram> sortTimeHistogram(Collection<TimeHistogram> timeMap) {
List<TimeHistogram> timeList = new ArrayList<>(timeMap);
timeList.sort(TimeHistogram.TIME_STAMP_ASC_COMPARATOR);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,16 @@

package com.navercorp.pinpoint.web.applicationmap.histogram;

import com.navercorp.pinpoint.common.server.util.time.Range;
import com.navercorp.pinpoint.web.view.TimeViewModel;
import com.navercorp.pinpoint.web.view.time.LoadChartView;
import com.navercorp.pinpoint.web.view.time.LoadStatsticsChartView;
import com.navercorp.pinpoint.web.view.time.TimeHistogramView;
import com.navercorp.pinpoint.web.vo.Application;
import com.navercorp.pinpoint.common.server.util.time.Range;

import java.util.*;
import java.util.Collections;
import java.util.List;
import java.util.Objects;

/**
* @author emeroad
Expand All @@ -43,4 +48,12 @@ public ApplicationTimeHistogram(Application application, Range range, List<TimeH
public List<TimeViewModel> createViewModel(TimeHistogramFormat timeHistogramFormat) {
return new TimeViewModel.TimeViewModelBuilder(application, histogramList).setTimeHistogramFormat(timeHistogramFormat).build();
}

public TimeHistogramView createLoadChartView() {
return new LoadChartView(application.getServiceType().getHistogramSchema(), histogramList);
}

public TimeHistogramView createLoadStatisticsChartView() {
return new LoadStatsticsChartView(histogramList);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.navercorp.pinpoint.common.server.util.time.Range;
import com.navercorp.pinpoint.web.view.AgentResponseTimeViewModelList;
import com.navercorp.pinpoint.web.view.TimeViewModel;
import com.navercorp.pinpoint.web.view.time.TimeHistogramView;
import com.navercorp.pinpoint.web.vo.Application;
import com.navercorp.pinpoint.web.vo.ResponseTime;
import com.navercorp.pinpoint.web.vo.ResponseTimeStatics;
Expand Down Expand Up @@ -115,10 +116,22 @@ public List<TimeViewModel> getApplicationTimeHistogram(TimeHistogramFormat timeH
return applicationTimeHistogram.createViewModel(timeHistogramFormat);
}

public TimeHistogramView getApplicationLoadChartView() {
return applicationTimeHistogram.createLoadChartView();
}

public TimeHistogramView getApplicationLoadStatisticsChartView() {
return applicationTimeHistogram.createLoadStatisticsChartView();
}

public AgentResponseTimeViewModelList getAgentTimeHistogram(TimeHistogramFormat timeHistogramFormat) {
return new AgentResponseTimeViewModelList(agentTimeHistogram.createViewModel(timeHistogramFormat));
}

public Map<String, List<TimeHistogramView>> getAgentTimeSeriesView() {
return agentTimeHistogram.createTimeSeriesView();
}

public void setAgentTimeHistogram(AgentTimeHistogram agentTimeHistogram) {
this.agentTimeHistogram = agentTimeHistogram;
}
Expand Down Expand Up @@ -165,7 +178,7 @@ private Histogram createApplicationLevelResponseTime(List<ResponseTime> response
}
return applicationHistogram;
}

public Range getRange() {
return range;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,6 @@

public enum TimeHistogramFormat {
V1, // key is slot("1s", "3s", "5s", "Slow", "Error"), value is {timestamp : count}
V2 // key is timestamp, value is [1s, 3s, 5s, Slow, Error, Avg, Max, Sum, Tot] - LoadHistogram
V2, // key is timestamp, value is [1s, 3s, 5s, Slow, Error, Avg, Max, Sum, Tot] - LoadHistogram
V3 // time series format, fieldName is slot("1s", "3s", "5s", "Slow", "Error")
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,13 @@
import com.navercorp.pinpoint.web.view.AgentResponseTimeViewModelList;
import com.navercorp.pinpoint.web.view.LinkSerializer;
import com.navercorp.pinpoint.web.view.TimeViewModel;
import com.navercorp.pinpoint.web.view.time.TimeHistogramView;
import com.navercorp.pinpoint.web.vo.Application;

import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;

Expand Down Expand Up @@ -213,6 +215,14 @@ public ApplicationTimeHistogram getTargetApplicationTimeSeriesHistogramData() {
return builder.build(targetLinkCallDataMap.getLinkDataList());
}

public ApplicationTimeHistogram getLinkApplicationTimeHistogram() {
if (createType == CreateType.Source) {
return getSourceApplicationTimeSeriesHistogramData();
} else {
return getTargetApplicationTimeSeriesHistogramData();
}
}

public void addSource(LinkCallDataMap sourceLinkCallDataMap) {
this.sourceLinkCallDataMap.addLinkDataMap(sourceLinkCallDataMap);
}
Expand All @@ -233,6 +243,13 @@ public AgentTimeHistogram getTargetAgentTimeHistogram() {
return builder.buildSource(targetLinkCallDataMap);
}

public Map<String, List<TimeHistogramView>> getSourceAgentTimeSeriesView() {
AgentTimeHistogramBuilder builder = new AgentTimeHistogramBuilder(toNode.getApplication(), range);
AgentTimeHistogram sourceAgentTimeHistogram = builder.buildSource(sourceLinkCallDataMap);

return sourceAgentTimeHistogram.createTimeSeriesView();
}

public Collection<Application> getSourceLinkTargetAgentList() {
Set<Application> agentList = new HashSet<>();
Collection<LinkCallData> linkDataList = sourceLinkCallDataMap.getLinkDataList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package com.navercorp.pinpoint.web.applicationmap.link;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.navercorp.pinpoint.web.applicationmap.histogram.ApplicationTimeHistogram;
import com.navercorp.pinpoint.web.applicationmap.histogram.Histogram;
import com.navercorp.pinpoint.web.applicationmap.histogram.TimeHistogramFormat;
import com.navercorp.pinpoint.web.view.LinkHistogramSummarySerializer;
Expand Down Expand Up @@ -54,6 +55,10 @@ public List<TimeViewModel> getTimeSeriesHistogram() {
return link.getLinkApplicationTimeSeriesHistogram();
}

public ApplicationTimeHistogram getApplicationTimeHistogram() {
return link.getLinkApplicationTimeHistogram();
}

@Override
public String toString() {
return "LinkHistogramSummary{" +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,13 @@

package com.navercorp.pinpoint.web.controller;

import com.navercorp.pinpoint.common.server.util.time.Range;
import com.navercorp.pinpoint.web.applicationmap.ApplicationMap;
import com.navercorp.pinpoint.web.applicationmap.MapWrap;
import com.navercorp.pinpoint.web.applicationmap.histogram.TimeHistogramFormat;
import com.navercorp.pinpoint.web.applicationmap.link.LinkHistogramSummary;
import com.navercorp.pinpoint.web.applicationmap.link.LinkType;
import com.navercorp.pinpoint.web.applicationmap.nodes.NodeHistogramSummary;
import com.navercorp.pinpoint.web.applicationmap.nodes.NodeType;
import com.navercorp.pinpoint.web.service.ApplicationFactory;
import com.navercorp.pinpoint.web.service.MapService;
Expand All @@ -29,14 +31,12 @@
import com.navercorp.pinpoint.web.service.ResponseTimeHistogramServiceOption;
import com.navercorp.pinpoint.web.util.Limiter;
import com.navercorp.pinpoint.web.view.ApplicationTimeHistogramViewModel;
import com.navercorp.pinpoint.web.applicationmap.nodes.NodeHistogramSummary;
import com.navercorp.pinpoint.web.vo.Application;
import com.navercorp.pinpoint.web.vo.ApplicationPair;
import com.navercorp.pinpoint.web.vo.ApplicationPairs;
import com.navercorp.pinpoint.common.server.util.time.Range;
import com.navercorp.pinpoint.web.vo.SearchOption;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
Expand Down
Loading

0 comments on commit 1d69d5b

Please sign in to comment.