mirror of
https://github.com/wahyd4/pinpoint.git
synced 2026-08-18 01:06:03 +10:00
git-svn-id: http://svn.bds.nhncorp.com/pe/hippo-web/trunk@1122 84d0f5b1-2673-498c-a247-62c4ff18d310
139 lines
5.1 KiB
Java
139 lines
5.1 KiB
Java
package com.nhn.hippo.web.controller;
|
|
|
|
import java.util.Collections;
|
|
import java.util.Iterator;
|
|
import java.util.Set;
|
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.ui.Model;
|
|
import org.springframework.util.StopWatch;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
import com.nhn.hippo.web.calltree.rpc.RPCCallTree;
|
|
import com.nhn.hippo.web.calltree.server.ServerCallTree;
|
|
import com.nhn.hippo.web.service.FlowChartService;
|
|
import com.nhn.hippo.web.vo.TraceId;
|
|
import com.nhn.hippo.web.vo.scatter.Dot;
|
|
|
|
/**
|
|
* retrieve data for drawing call tree.
|
|
*
|
|
* @author netspider
|
|
*/
|
|
@Controller
|
|
public class FlowChartController {
|
|
|
|
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
|
|
|
@Autowired
|
|
private FlowChartService flow;
|
|
|
|
@RequestMapping(value = "/flowrpc", method = RequestMethod.GET)
|
|
public String flowrpc(Model model, @RequestParam("application") String applicationName, @RequestParam("from") long from, @RequestParam("to") long to) {
|
|
Set<TraceId> traceIds = flow.selectTraceIdsFromApplicationTraceIndex(applicationName, from, to);
|
|
|
|
RPCCallTree callTree = flow.selectRPCCallTree(traceIds);
|
|
|
|
model.addAttribute("nodes", callTree.getNodes());
|
|
model.addAttribute("links", callTree.getLinks());
|
|
|
|
logger.debug("callTree:{}", callTree);
|
|
|
|
return "flow";
|
|
}
|
|
|
|
@RequestMapping(value = "/flowserver", method = RequestMethod.GET)
|
|
public String flowserver(Model model, @RequestParam("application") String applicationName, @RequestParam("from") long from, @RequestParam("to") long to) {
|
|
// TODO 제거 하거나, interceptor로 할것.
|
|
StopWatch watch = new StopWatch();
|
|
watch.start("scanTraceindex");
|
|
|
|
Set<TraceId> traceIds = flow.selectTraceIdsFromApplicationTraceIndex(applicationName, from, to);
|
|
|
|
watch.stop();
|
|
logger.info("Fetch traceIds elapsed : {}ms, {} traces", watch.getLastTaskTimeMillis(), traceIds.size());
|
|
watch.start("selectServerCallTree");
|
|
|
|
ServerCallTree callTree = flow.selectServerCallTree(traceIds, applicationName, from, to);
|
|
|
|
watch.stop();
|
|
logger.info("Fetch calltree time : {}ms", watch.getLastTaskTimeMillis());
|
|
|
|
model.addAttribute("nodes", callTree.getNodes());
|
|
model.addAttribute("links", callTree.getLinks());
|
|
model.addAttribute("businessTransactions", callTree.getBusinessTransactions().getBusinessTransactionIterator());
|
|
|
|
// model.addAttribute("traces", callTree.getBusinessTransactions().getTracesIterator());
|
|
// model.addAttribute("traces", Collections.emptyList().iterator());
|
|
|
|
logger.debug("callTree:{}", callTree);
|
|
|
|
return "flowserver";
|
|
}
|
|
|
|
@RequestMapping(value = "/scatter", method = RequestMethod.GET)
|
|
public String scatter(Model model, @RequestParam("application") String applicationName, @RequestParam("from") long from, @RequestParam("to") long to) {
|
|
StopWatch watch = new StopWatch();
|
|
watch.start("selectScatterData");
|
|
|
|
Iterator<Dot> scatterData = flow.selectScatterData(applicationName, from, to);
|
|
watch.stop();
|
|
|
|
logger.info("Fetch scatterData time : {}ms", watch.getLastTaskTimeMillis());
|
|
|
|
model.addAttribute("scatter", scatterData);
|
|
|
|
return "scatter";
|
|
}
|
|
|
|
@Deprecated
|
|
@RequestMapping(value = "/flow2", method = RequestMethod.GET)
|
|
public String flowbyHost(Model model, @RequestParam("host") String[] hosts, @RequestParam("from") long from, @RequestParam("to") long to) {
|
|
String[] agentIds = flow.selectAgentIds(hosts);
|
|
Set<TraceId> traceIds = flow.selectTraceIdsFromTraceIndex(agentIds, from, to);
|
|
|
|
RPCCallTree callTree = flow.selectRPCCallTree(traceIds);
|
|
|
|
model.addAttribute("nodes", callTree.getNodes());
|
|
model.addAttribute("links", callTree.getLinks());
|
|
|
|
logger.debug("callTree:{}", callTree);
|
|
|
|
return "flow";
|
|
}
|
|
|
|
@Deprecated
|
|
@RequestMapping(value = "/flowserver2", method = RequestMethod.GET)
|
|
public String flowserverByHost(Model model, @RequestParam("host") String[] hosts, @RequestParam("from") long from, @RequestParam("to") long to) {
|
|
String[] agentIds = flow.selectAgentIds(hosts);
|
|
|
|
// TODO 제거 하거나, interceptor로 할것.
|
|
StopWatch watch = new StopWatch();
|
|
watch.start("scanTraceindex");
|
|
|
|
Set<TraceId> traceIds = flow.selectTraceIdsFromTraceIndex(agentIds, from, to);
|
|
|
|
watch.stop();
|
|
logger.info("time:{} {}", watch.getLastTaskTimeMillis(), traceIds.size());
|
|
watch.start("selectServerCallTree");
|
|
|
|
ServerCallTree callTree = flow.selectServerCallTree(traceIds);
|
|
|
|
watch.stop();
|
|
logger.info("time:{}", watch.getLastTaskTimeMillis());
|
|
|
|
model.addAttribute("nodes", callTree.getNodes());
|
|
model.addAttribute("links", callTree.getLinks());
|
|
model.addAttribute("businessTransactions", callTree.getBusinessTransactions().getBusinessTransactionIterator());
|
|
model.addAttribute("traces", callTree.getBusinessTransactions().getTracesIterator());
|
|
|
|
logger.debug("callTree:{}", callTree);
|
|
|
|
return "flowserver";
|
|
}
|
|
} |