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
  @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 type = payload.getType();

    switch (payload.getAction()) {
      case HOURLY_REPORT:
        showHourlyReport(model, payload);
        DisplayNames displayNameReport = model.getDisplayNameReport();
        if ((!StringUtils.isEmpty(type)) && displayNameReport != null) {
          buildTransactionNameGraph(displayNameReport.getResults(), model);
        }
        break;
      case HISTORY_REPORT:
        showSummarizeReport(model, payload);
        displayNameReport = model.getDisplayNameReport();
        if ((!StringUtils.isEmpty(type)) && displayNameReport != null) {
          buildTransactionNameGraph(displayNameReport.getResults(), model);
        }
        break;
      case HISTORY_GRAPH:
        m_historyGraph.buildTrendGraph(model, payload);
        break;
      case GRAPHS:
        showHourlyGraphs(model, payload);
        break;
      case MOBILE:
        showHourlyReport(model, payload);
        if (!StringUtils.isEmpty(payload.getType())) {
          DisplayNames report = model.getDisplayNameReport();
          String json = m_gson.toJson(report);
          model.setMobileResponse(json);
        } else {
          DisplayTypes report = model.getDisplayTypeReport();
          String json = m_gson.toJson(report);
          model.setMobileResponse(json);
        }
        break;
      case MOBILE_GRAPHS:
        MobileGraphs graphs = showMobileGraphs(model, payload);
        if (graphs != null) {
          model.setMobileResponse(m_gson.toJson(graphs));
        }
        break;
    }

    if (payload.isXml()) {
      m_xmlViewer.view(ctx, model);
    } else {
      m_jspViewer.view(ctx, model);
    }
  }
Exemple #3
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 #4
0
  private TransactionReport getHourlyReport(Payload payload) {
    String domain = payload.getDomain();
    String date = String.valueOf(payload.getDate());
    String ipAddress = payload.getIpAddress();
    ModelRequest request =
        new ModelRequest(domain, payload.getPeriod()) //
            .setProperty("date", date) //
            .setProperty("type", payload.getType()) //
            .setProperty("ip", ipAddress);

    if (m_service.isEligable(request)) {
      ModelResponse<TransactionReport> response = m_service.invoke(request);
      TransactionReport report = response.getModel();

      if (payload.getPeriod().isLast()) {
        Date start = new Date(payload.getDate());
        Date end = new Date(payload.getDate() + TimeUtil.ONE_HOUR);

        if (CatString.ALL.equals(domain)) {
          report = m_reportService.queryTransactionReport(domain, start, end);
        }
        Set<String> domains = m_reportService.queryAllDomainNames(start, end, "transaction");
        Set<String> domainNames = report.getDomainNames();

        domainNames.addAll(domains);
      }
      report = m_mergeManager.mergerAllIp(report, ipAddress);
      calculateTps(payload, report);
      return report;
    } else {
      throw new RuntimeException(
          "Internal error: no eligable transaction service registered for " + request + "!");
    }
  }
Exemple #5
0
  private TransactionReport getHourlyReport(Payload payload) {
    String domain = payload.getDomain();
    String ipAddress = payload.getIpAddress();
    ModelRequest request =
        new ModelRequest(domain, payload.getDate())
            .setProperty("type", payload.getType())
            .setProperty("ip", ipAddress);

    if (m_service.isEligable(request)) {
      ModelResponse<TransactionReport> response = m_service.invoke(request);
      TransactionReport report = response.getModel();

      if (payload.getPeriod().isLast()) {
        Date start = new Date(payload.getDate());
        Date end = new Date(payload.getDate() + TimeHelper.ONE_HOUR);

        if (Constants.ALL.equals(domain)) {
          report = m_reportService.queryTransactionReport(domain, start, end);
        }
        Set<String> domains =
            m_reportService.queryAllDomainNames(start, end, TransactionAnalyzer.ID);
        Set<String> domainNames = report.getDomainNames();

        domainNames.addAll(domains);
      }
      return report;
    } else {
      throw new RuntimeException(
          "Internal error: no eligable transaction service registered for " + request + "!");
    }
  }
Exemple #6
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 #7
0
  private void buildTransactionMetaInfo(Model model, Payload payload, TransactionReport report) {
    String type = payload.getType();
    String sorted = payload.getSortBy();
    String queryName = payload.getQueryName();
    String ip = payload.getIpAddress();

    if (!StringUtils.isEmpty(type)) {
      DisplayNames displayNames = new DisplayNames();

      model.setDisplayNameReport(displayNames.display(sorted, type, ip, report, queryName));
      buildTransactionNamePieChart(displayNames.getResults(), model);
    } else {
      model.setDisplayTypeReport(new DisplayTypes().display(sorted, ip, report));
    }
  }
Exemple #8
0
  private void normalize(Model model, Payload payload) {
    model.setPage(ReportPage.TRANSACTION);
    m_normalizePayload.normalize(model, payload);

    if (StringUtils.isEmpty(payload.getQueryName())) {
      payload.setQueryName(null);
    }
    if (StringUtils.isEmpty(payload.getType())) {
      payload.setType(null);
    }

    String queryName = payload.getQueryName();
    if (queryName != null) {
      model.setQueryName(queryName);
    }
  }
Exemple #9
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 #10
0
  private void showSummarizeReport(Model model, Payload payload) {
    String type = payload.getType();
    String sorted = payload.getSortBy();
    String ip = payload.getIpAddress();
    String domain = model.getDomain();

    Date start = payload.getHistoryStartDate();
    Date end = payload.getHistoryEndDate();
    TransactionReport transactionReport =
        m_reportService.queryTransactionReport(domain, start, end);
    calculateTps(payload, transactionReport);
    model.setReport(transactionReport);
    if (transactionReport != null) {
      if (!StringUtils.isEmpty(type)) {
        model.setDisplayNameReport(
            new DisplayNames()
                .display(sorted, type, ip, transactionReport, payload.getQueryName()));
      } else {
        model.setDisplayTypeReport(new DisplayTypes().display(sorted, ip, transactionReport));
      }
    }
  }
Exemple #11
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 #12
0
  private void showHourlyReport(Model model, Payload payload) {
    try {
      TransactionReport report = getHourlyReport(payload);

      if (report != null) {
        report.accept(m_computer);
        model.setReport(report);

        String type = payload.getType();
        String sorted = payload.getSortBy();
        String queryName = payload.getQueryName();
        String ip = payload.getIpAddress();
        if (!StringUtils.isEmpty(type)) {
          model.setDisplayNameReport(
              new DisplayNames().display(sorted, type, ip, report, queryName));
        } else {
          model.setDisplayTypeReport(new DisplayTypes().display(sorted, ip, report));
        }
      }
    } catch (Throwable e) {
      Cat.logError(e);
      model.setException(e);
    }
  }
Exemple #13
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);
    }
  }