Exemple #1
0
  private TransactionName getTransactionName(Payload payload) {
    String domain = payload.getDomain();
    String type = payload.getType();
    String name = payload.getName();
    String ip = payload.getIpAddress();
    String ipAddress = payload.getIpAddress();
    String date = String.valueOf(payload.getDate());
    ModelRequest request =
        new ModelRequest(domain, payload.getPeriod()) //
            .setProperty("date", date) //
            .setProperty("type", payload.getType()) //
            .setProperty("name", payload.getName()) //
            .setProperty("ip", ipAddress);
    if (name == null || name.length() == 0) {
      request.setProperty("name", "*");
      request.setProperty("all", "true");
      name = CatString.ALL;
    }
    ModelResponse<TransactionReport> response = m_service.invoke(request);
    TransactionReport report = response.getModel();

    report = m_mergeManager.mergerAll(report, ipAddress, name);
    TransactionType t = report.getMachines().get(ip).findType(type);
    if (t != null) {
      TransactionName n = t.findName(name);
      if (n != null) {
        n.accept(m_computer);
      }
      return n;
    } else {
      return null;
    }
  }
Exemple #2
0
  private Map<String, double[]> getGraphDatasFromDaily(
      Date start, Date end, Model model, Payload payload) {
    String domain = model.getDomain();
    String type = payload.getType();
    String name = payload.getName();
    String ip = model.getIpAddress();
    String queryIp = "All".equalsIgnoreCase(ip) == true ? "All" : ip;
    List<DailyGraph> graphs = new ArrayList<DailyGraph>();

    for (long startLong = start.getTime();
        startLong < end.getTime();
        startLong = startLong + TimeUtil.ONE_DAY) {
      try {
        DailyGraph graph =
            m_dailyGraphDao.findByDomainNameIpDate(
                new Date(startLong),
                queryIp,
                domain,
                EventAnalyzer.ID,
                DailyGraphEntity.READSET_FULL);
        graphs.add(graph);
      } catch (DalNotFoundException e) {
      } catch (Exception e) {
        Cat.logError(e);
      }
    }
    return buildGraphDatasForDaily(start, end, type, name, graphs);
  }
Exemple #3
0
  public void buildTrendGraph(Model model, Payload payload) {
    Date start = payload.getHistoryStartDate();
    Date end = payload.getHistoryEndDate();
    String type = payload.getType();
    String name = payload.getName();
    String display = name != null ? name : type;
    int size = (int) ((end.getTime() - start.getTime()) * 12 / TimeUtil.ONE_HOUR);
    String queryType = payload.getReportType();
    List<Map<String, double[]>> allDatas = new ArrayList<Map<String, double[]>>();
    long step = TimeUtil.ONE_MINUTE * 5;

    if (queryType.equalsIgnoreCase("day")) {
      Map<String, double[]> currentGraph = getGraphDatasForHour(start, end, model, payload);
      Map<String, double[]> lastDayGraph =
          getGraphDatasForHour(
              new Date(start.getTime() - TimeUtil.ONE_DAY),
              new Date(end.getTime() - TimeUtil.ONE_DAY),
              model,
              payload);
      Map<String, double[]> lastWeekGraph =
          getGraphDatasForHour(
              new Date(start.getTime() - TimeUtil.ONE_WEEK),
              new Date(end.getTime() - TimeUtil.ONE_WEEK),
              model,
              payload);

      allDatas.add(currentGraph);
      allDatas.add(lastDayGraph);
      allDatas.add(lastWeekGraph);
    } else if (queryType.equalsIgnoreCase("week")) {
      Map<String, double[]> currentGraph = getGraphDatasForHour(start, end, model, payload);
      Map<String, double[]> lastWeek =
          getGraphDatasForHour(
              new Date(start.getTime() - TimeUtil.ONE_WEEK),
              new Date(end.getTime() - TimeUtil.ONE_WEEK),
              model,
              payload);

      allDatas.add(currentGraph);
      allDatas.add(lastWeek);
    } else if (queryType.equalsIgnoreCase("month")) {
      size = (int) ((end.getTime() - start.getTime()) / TimeUtil.ONE_DAY);
      step = TimeUtil.ONE_DAY;
      Map<String, double[]> graphData = getGraphDatasFromDaily(start, end, model, payload);

      allDatas.add(graphData);
    } else {
      throw new RuntimeException("Error graph query type");
    }

    LineChart item = buildTotal(allDatas, start, size, step, display, queryType);
    model.setHitTrend(item.getJsonString());

    item = buildFail(allDatas, start, size, step, display, queryType);
    model.setFailureTrend(item.getJsonString());
  }
Exemple #4
0
  private TransactionReport getTransactionGraphReport(Model model, Payload payload) {
    String domain = payload.getDomain();
    String ipAddress = payload.getIpAddress();
    String name = payload.getName();
    ModelRequest request =
        new ModelRequest(domain, payload.getDate()) //
            .setProperty("type", payload.getType()) //
            .setProperty("name", payload.getName()) //
            .setProperty("ip", ipAddress);

    if (name == null || name.length() == 0) {
      request.setProperty("name", "*");
      request.setProperty("all", "true");
      name = Constants.ALL;
    }
    ModelResponse<TransactionReport> response = m_service.invoke(request);
    TransactionReport report = response.getModel();
    return report;
  }
Exemple #5
0
 public Map<String, double[]> getGraphDatasForHour(
     Date start, Date end, Model model, Payload payload) {
   String domain = model.getDomain();
   String type = payload.getType();
   String name = payload.getName();
   String ip = model.getIpAddress();
   String queryIP = "All".equals(ip) == true ? "all" : ip;
   List<Graph> events = new ArrayList<Graph>();
   for (long startLong = start.getTime();
       startLong < end.getTime();
       startLong = startLong + TimeUtil.ONE_HOUR) {
     try {
       Graph graph =
           m_graphDao.findSingalByDomainNameIpDuration(
               new Date(startLong), queryIP, domain, EventAnalyzer.ID, GraphEntity.READSET_FULL);
       events.add(graph);
     } catch (DalNotFoundException e) {
     } catch (Exception e) {
       Cat.logError(e);
     }
   }
   return buildGraphDatasForHour(start, end, type, name, events);
 }
Exemple #6
0
  @Override
  @OutboundActionMeta(name = "t")
  public void handleOutbound(Context ctx) throws ServletException, IOException {
    Model model = new Model(ctx);
    Payload payload = ctx.getPayload();

    normalize(model, payload);
    String domain = payload.getDomain();
    Action action = payload.getAction();
    String ipAddress = payload.getIpAddress();
    String group = payload.getGroup();
    String type = payload.getType();
    String name = payload.getName();
    String ip = payload.getIpAddress();

    if (StringUtils.isEmpty(group)) {
      group = m_configManager.queryDefaultGroup(domain);
      payload.setGroup(group);
    }
    model.setGroupIps(m_configManager.queryIpByDomainAndGroup(domain, group));
    model.setGroups(m_configManager.queryDomainGroup(payload.getDomain()));
    switch (action) {
      case HOURLY_REPORT:
        TransactionReport report = getHourlyReport(payload);

        report = m_mergeManager.mergerAllIp(report, ipAddress);
        calculateTps(payload, report);
        if (report != null) {
          model.setReport(report);
          buildTransactionMetaInfo(model, payload, report);
        }
        break;
      case HISTORY_REPORT:
        report =
            m_reportService.queryTransactionReport(
                domain, payload.getHistoryStartDate(), payload.getHistoryEndDate());
        calculateTps(payload, report);

        if (report != null) {
          model.setReport(report);
          buildTransactionMetaInfo(model, payload, report);
        }
        break;
      case HISTORY_GRAPH:
        m_historyGraph.buildTrendGraph(model, payload);
        break;
      case GRAPHS:
        report = getTransactionGraphReport(model, payload);

        if (name == null || name.length() == 0) {
          name = Constants.ALL;
        }
        report = m_mergeManager.mergerAllName(report, ip, name);
        model.setReport(report);
        buildTransactionNameGraph(model, report, type, name, ip);
        break;
      case HOURLY_GROUP_REPORT:
        report = getHourlyReport(payload);
        report = filterReportByGroup(report, domain, group);
        report = m_mergeManager.mergerAllIp(report, ipAddress);
        calculateTps(payload, report);
        if (report != null) {
          model.setReport(report);

          buildTransactionMetaInfo(model, payload, report);
        }
        break;
      case HISTORY_GROUP_REPORT:
        report =
            m_reportService.queryTransactionReport(
                domain, payload.getHistoryStartDate(), payload.getHistoryEndDate());

        calculateTps(payload, report);
        report = filterReportByGroup(report, domain, group);
        report = m_mergeManager.mergerAllIp(report, ipAddress);
        if (report != null) {
          model.setReport(report);
          buildTransactionMetaInfo(model, payload, report);
        }
        break;
      case GROUP_GRAPHS:
        report = getTransactionGraphReport(model, payload);
        report = filterReportByGroup(report, domain, group);

        if (name == null || name.length() == 0) {
          name = Constants.ALL;
        }
        report = m_mergeManager.mergerAllName(report, ip, name);
        model.setReport(report);
        buildTransactionNameGraph(model, report, type, name, ip);
        break;
      case HISTORY_GROUP_GRAPH:
        List<String> ips = m_configManager.queryIpByDomainAndGroup(domain, group);

        m_historyGraph.buildGroupTrendGraph(model, payload, ips);
        break;
    }

    if (payload.isXml()) {
      m_xmlViewer.view(ctx, model);
    } else {
      m_jspViewer.view(ctx, model);
    }
  }