/** * time에 해당하는 TPS테이블의 90%지점의 데이터만 APM_TPS_SUMMARY테이블에 입력한다.<br> * <br> * * @param before5min * @author KIMHYERI * @since 2015. 10. 7. */ public void summarizeResTime(FrameOneDataset dsAgent, String now) { SqlManager sqlManager = SqlManagerFactory.getSqlManager(); Parameters inParam = ParametersFactory.createParameters(HtmlParameters.class); if (dsAgent != null) { for (int j = 0; j < dsAgent.getRowCount(); j++) { dsAgent.setActiveRow(j); inParam.put("AGENT_ID", dsAgent.getColumnAsString(j, "AGENT_ID")); // APM_RES_TIMEPS 테이블의 REQ_DTM MAX 값을 조회 String currentLastInserted = (String) sqlManager.queryForObject(inParam, "fiveMinuteSummary.getResTimepsMaxUdt"); // 조회한 값이 없거나, 현재시간과의 차이가 5분이상이라면 Summary if (currentLastInserted == null || DateUtil.getDiffMinCount(currentLastInserted, now) >= 5) { Date before5min = DateUtil.getOperationTime(now, -5); inParam.setVariable("REQ_DTM", now); inParam.setVariable("BEFORE", before5min); FrameOneDataset dataset = sqlManager.queryForFrameOneDataset( inParam, "fiveMinuteSummary.getResSummaryFromRes"); if (dataset != null) { if (dataset.getRowCount() == 0) { inParam.setVariable("RES_TIME", 0); } else { inParam.setVariable("RES_TIME", dataset.get("RES_TIME")); } sqlManager.insert(inParam, "fiveMinuteSummary.insertResTimepsSummary"); } } } } }
/** * time에 해당하는 RESOURCE테이블의 90%지점의 데이터만 APM_RESOURCE_SUMMARY테이블에 입력한다.<br> * 단, GC_OCCR_CNT의 경우 최근 데이터 1개를 입력한다. <br> * * @param before5min * @author KIMHYERI * @since 2015. 10. 7. */ public void summarizeResource(FrameOneDataset dsAgent, String now) { SqlManager sqlManager = SqlManagerFactory.getSqlManager(); Parameters inParam = ParametersFactory.createParameters(HtmlParameters.class); if (dsAgent != null) { for (int j = 0; j < dsAgent.getRowCount(); j++) { dsAgent.setActiveRow(j); inParam.put("AGENT_ID", dsAgent.getColumnAsString(j, "AGENT_ID")); // APM_RESOURCE 테이블의 RESOURCE_CHK_DTM MAX 값을 조회 String currentLastInserted = (String) sqlManager.queryForObject(inParam, "fiveMinuteSummary.getResourceMaxUdt"); // 조회한 값이 없거나, 현재시간과의 차이가 5분이상이라면 Summary if (currentLastInserted == null || DateUtil.getDiffMinCount(currentLastInserted, now) >= 5) { Date before5min = DateUtil.getOperationTime(now, -5); inParam.setVariable("RESOURCE_CHK_DTM", now); inParam.setVariable("BEFORE", before5min); // 메모리사이즈 조회 Object selectedValue = (Object) sqlManager.queryForObject(inParam, "fiveMinuteSummary.getCurrMemorySize"); if (selectedValue == null) { inParam.put("CURR_MEMORY_SIZE", 0); } else { inParam.put("CURR_MEMORY_SIZE", selectedValue); } // 메모리사용률 조회 selectedValue = (Object) sqlManager.queryForObject(inParam, "fiveMinuteSummary.getMemoryUsageRatio"); if (selectedValue == null) { inParam.put("MEMORY_USAGE_RATIO", 0); } else { inParam.put("MEMORY_USAGE_RATIO", selectedValue); } // CPU사용률 조회 selectedValue = (Object) sqlManager.queryForObject(inParam, "fiveMinuteSummary.getCpuUsageRatio"); if (selectedValue == null) { inParam.put("CPU_USAGE_RATIO", 0); } else { inParam.put("CPU_USAGE_RATIO", selectedValue); } // 디스크 I/O사용률 selectedValue = (Object) sqlManager.queryForObject(inParam, "fiveMinuteSummary.getDiskIoUsageRatio"); if (selectedValue == null) { inParam.put("DISK_IO_USAGE_RATIO", 0); } else { inParam.put("DISK_IO_USAGE_RATIO", selectedValue); } // 세션 카운트 selectedValue = (Object) sqlManager.queryForObject(inParam, "fiveMinuteSummary.getSessionCnt"); if (selectedValue == null) { inParam.put("SESSION_CNT", 0); } else { inParam.put("SESSION_CNT", selectedValue); } // GC 발생 건수 selectedValue = (Object) sqlManager.queryForObject(inParam, "fiveMinuteSummary.getGcOccrCnt"); if (selectedValue == null) { inParam.put("GC_OCCR_CNT", 0); } else { inParam.put("GC_OCCR_CNT", selectedValue); } // GC 소요 시간 차이 selectedValue = (Object) sqlManager.queryForObject(inParam, "fiveMinuteSummary.getGcElapsedGap"); if (selectedValue == null) { inParam.put("GC_ELAPSED_GAP", 0); } else { inParam.put("GC_ELAPSED_GAP", selectedValue); } // APM_RESOURCE_SUMMARY 테이블에 값을 insert한다. sqlManager.insert(inParam, "fiveMinuteSummary.insertResourceSummary"); } } } }