API통계 업무오류 제외
This commit is contained in:
+4
-4
@@ -214,11 +214,11 @@ public class ApiStatsMinuteService
|
||||
q.seq900BizErrCnt.sum().as("seq900BizErrCnt"),
|
||||
q.minRespTime.min().castToNum(BigDecimal.class).as("minRespTime"),
|
||||
q.maxRespTime.max().castToNum(BigDecimal.class).as("maxRespTime"),
|
||||
// 가중 평균: SUM(avg * successCnt) / SUM(successCnt)
|
||||
// 가중 평균: SUM(avg * totalCnt) / SUM(totalCnt)
|
||||
Expressions.cases()
|
||||
.when(q.successCnt.sum().gt(0))
|
||||
.then(q.avgRespTime.multiply(q.successCnt).sum()
|
||||
.divide(q.successCnt.sum()).castToNum(BigDecimal.class))
|
||||
.when(q.totalCnt.sum().gt(0))
|
||||
.then(q.avgRespTime.multiply(q.totalCnt).sum()
|
||||
.divide(q.totalCnt.sum()).castToNum(BigDecimal.class))
|
||||
.otherwise((BigDecimal) null)
|
||||
.as("avgRespTime")))
|
||||
.from(q)
|
||||
|
||||
@@ -97,9 +97,8 @@ public class ApiStatsHourlyAggregationJob implements Job {
|
||||
* EAISVCSERNO로 그룹핑하여 1행으로 집계를 한 다음
|
||||
* 총건수 : EAISVCSERNO로 그룹핑한 총 건수
|
||||
* 성공건수 : seq = 400 and EAIERRCD = null 인 건수
|
||||
* Timeout : EAIERRCD in (공통코드 CODEGROUP = 'API_ERROR_CODE' and PARENTCODE = 'T') 인 건수
|
||||
* 업무오류 : EAIERRCD in (공통코드 CODEGROUP = 'API_ERROR_CODE' and PARENTCODE = 'B') 인 건수
|
||||
* 시스템오류 : (seq400 = null or EAIERRCD is not null) and 공통코드에 정의되지 않은 errorcode 인 건수
|
||||
* Timeout : EAIERRCD in (공통코드 CODEGROUP = 'ERRCODE_TIMEOUT') 인 건수
|
||||
* 시스템오류 : (seq400 = null or EAIERRCD is not null) and 공통코드(ERRCODE_TIMEOUT)에 정의되지 않은 errorcode 인 건수
|
||||
*/
|
||||
String sql =
|
||||
"INSERT INTO API_STATS_HOUR" +
|
||||
@@ -113,10 +112,9 @@ public class ApiStatsHourlyAggregationJob implements Job {
|
||||
" , INBOUND_ADAPTER, OUTBOUND_ADAPTER" +
|
||||
" , COUNT(EAISVCSERNO)" +
|
||||
" , SUM(CASE WHEN A.ERROR_CODE IS NULL AND E400 IS NOT NULL THEN 1 ELSE 0 END)" +
|
||||
" , SUM(CASE WHEN B.PARENTCODE = 'T' THEN 1 ELSE 0 END)" +
|
||||
" , SUM(CASE WHEN (A.E400 IS NULL OR A.ERROR_CODE IS NOT NULL) AND B.PARENTCODE IS NULL THEN 1 ELSE 0 END)" +
|
||||
" , SUM(CASE WHEN B.PARENTCODE = 'B' THEN 1 ELSE 0 END)" +
|
||||
" , 0, 0, 0" +
|
||||
" , SUM(CASE WHEN B.CODE IS NOT NULL THEN 1 ELSE 0 END)" +
|
||||
" , SUM(CASE WHEN (A.E400 IS NULL OR A.ERROR_CODE IS NOT NULL) AND B.CODE IS NULL THEN 1 ELSE 0 END)" +
|
||||
" , 0, 0, 0, 0" +
|
||||
" , TRUNC(AVG(RESP_TIME)), MIN(RESP_TIME), MAX(RESP_TIME), 0, 0" +
|
||||
" FROM (" +
|
||||
" SELECT EAISVCSERNO" +
|
||||
@@ -132,7 +130,7 @@ public class ApiStatsHourlyAggregationJob implements Job {
|
||||
" FROM " + logTableName +
|
||||
" WHERE MSGDPSTYMS LIKE :searchDate || '%'" +
|
||||
" GROUP BY EAISVCSERNO" +
|
||||
" ) A LEFT OUTER JOIN " + schemaEMS + ".TSEAIRM28 B ON A.ERROR_CODE = B.CODE AND B.CODEGROUP = 'API_ERROR_CODE'" +
|
||||
" ) A LEFT OUTER JOIN " + schemaEMS + ".TSEAIRM28 B ON A.ERROR_CODE = B.CODE AND B.CODEGROUP = 'ERRCODE_TIMEOUT'" +
|
||||
" GROUP BY SUBSTR(DT,1,10), API_NAME, GW_INSTANCE_ID, BIZ_DIV_CODE, NVL(A.CLIENT_ID, 'NONE')" +
|
||||
" , INBOUND_ADAPTER, OUTBOUND_ADAPTER";
|
||||
|
||||
|
||||
+4
-9
@@ -36,9 +36,8 @@ public class ApiStatsExcelExportService {
|
||||
private static final String[] COLUMN_HEADERS = {
|
||||
"통계시간", "API명", "인스턴스", "업무구분", "클라이언트ID",
|
||||
"Inbound Adapter", "Outbound Adapter",
|
||||
"총건수", "성공건수", "Timeout건수", "시스템오류건수", "업무오류건수",
|
||||
"Seq900 Timeout", "Seq900 시스템오류", "Seq900 업무오류",
|
||||
"평균응답시간", "최소응답시간", "최대응답시간", "P50응답시간", "P95응답시간"
|
||||
"총건수", "성공건수", "Timeout건수", "시스템오류건수",
|
||||
"평균응답시간", "최소응답시간", "최대응답시간"
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -193,17 +192,13 @@ public class ApiStatsExcelExportService {
|
||||
createLongCell(row, colNum++, data.getSuccessCnt(), numberStyle);
|
||||
createLongCell(row, colNum++, data.getTimeoutCnt(), numberStyle);
|
||||
createLongCell(row, colNum++, data.getSystemErrCnt(), numberStyle);
|
||||
createLongCell(row, colNum++, data.getBizErrCnt(), numberStyle);
|
||||
createLongCell(row, colNum++, data.getSeq900TimeoutCnt(), numberStyle);
|
||||
createLongCell(row, colNum++, data.getSeq900SystemErrCnt(), numberStyle);
|
||||
createLongCell(row, colNum++, data.getSeq900BizErrCnt(), numberStyle);
|
||||
|
||||
|
||||
// 소수점 컬럼 (15-19)
|
||||
createDecimalCell(row, colNum++, data.getAvgRespTime(), decimalStyle);
|
||||
createDecimalCell(row, colNum++, data.getMinRespTime(), decimalStyle);
|
||||
createDecimalCell(row, colNum++, data.getMaxRespTime(), decimalStyle);
|
||||
createDecimalCell(row, colNum++, data.getP50RespTime(), decimalStyle);
|
||||
createDecimalCell(row, colNum++, data.getP95RespTime(), decimalStyle);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -22,15 +22,9 @@ public class ApiStatsUI {
|
||||
private Long successCnt;
|
||||
private Long timeoutCnt;
|
||||
private Long systemErrCnt;
|
||||
private Long bizErrCnt;
|
||||
private Long seq900TimeoutCnt;
|
||||
private Long seq900SystemErrCnt;
|
||||
private Long seq900BizErrCnt;
|
||||
|
||||
// 응답시간 메트릭
|
||||
private BigDecimal avgRespTime;
|
||||
private BigDecimal minRespTime;
|
||||
private BigDecimal maxRespTime;
|
||||
private BigDecimal p50RespTime;
|
||||
private BigDecimal p95RespTime;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user