/** * eLink 모니터링 대시보드 API 통신 라이브러리 * ModernDashboardController의 API와 통신하는 함수들을 제공합니다. */ const ModernDashboardApi = { /** * 컨텍스트 경로 */ contextPath: '', /** * API 초기화 함수 * @param {string} contextPath - 애플리케이션 컨텍스트 경로 */ init: function(contextPath) { this.contextPath = contextPath; }, /** * API 기본 요청 함수 * @param {string} type - 요청 타입 * @param {Object} params - 추가 파라미터 * @param {Function} successCallback - 성공 콜백 함수 * @param {Function} errorCallback - 에러 콜백 함수 */ _request: function(type, params, successCallback, errorCallback) { // 기본 파라미터 설정 const requestParams = { type: type , serviceType : sessionStorage['serviceType'] }; // 추가 파라미터 병합 if (params) { Object.assign(requestParams, params); } // AJAX 요청 실행 $.ajax({ url: this.contextPath + '/modern-dashboard-api.do', data: requestParams, dataType: 'json', success: function(data) { if (successCallback) { successCallback(data); } }, error: function(xhr, status, error) { console.error(`API 요청 실패 (${type}):`, error); if (errorCallback) { errorCallback(xhr, status, error); } } }); }, /** * 서버 상태 정보 요청 * @param {string} serverName - 서버 이름 (선택적) * @param {Function} successCallback - 성공 콜백 함수 * @param {Function} errorCallback - 에러 콜백 함수 */ getServerStatus: function(serverName, successCallback, errorCallback) { const params = {}; if (serverName) { params.serverName = serverName; } this._request('server-status', params, successCallback, errorCallback); }, /** * 어댑터 상태 정보 요청 * @param {string} serverName - 서버 이름 (선택적) * @param {Function} successCallback - 성공 콜백 함수 * @param {Function} errorCallback - 에러 콜백 함수 */ getAdapterStatus: function(serverName, successCallback, errorCallback) { const params = {}; if (serverName) { params.serverName = serverName; } this._request('adapter-status', params, successCallback, errorCallback); }, /** * 트랜잭션 정보 요청 * @param {string} serverName - 서버 이름 (선택적) * @param {Function} successCallback - 성공 콜백 함수 * @param {Function} errorCallback - 에러 콜백 함수 */ getTransactionInfo: function(serverName, successCallback, errorCallback) { const params = {}; if (serverName) { params.serverName = serverName; } this._request('transaction', params, successCallback, errorCallback); }, /** * 피크 성능 정보 요청 * @param {string} type - 피크 타입 (tps 또는 trade) * @param {Function} successCallback - 성공 콜백 함수 * @param {Function} errorCallback - 에러 콜백 함수 */ getPeakPerformance: function(type, successCallback, errorCallback) { const params = {}; if (type) { params.peakType = type; // type을 peakType으로 수정 } this._request('peak-performance', params, successCallback, errorCallback); }, /** * 배치 처리 상태 요청 * @param {Function} successCallback - 성공 콜백 함수 * @param {Function} errorCallback - 에러 콜백 함수 */ getBatchProcess: function(successCallback, errorCallback) { $.ajax({ url: this.contextPath + '/modern-dashboard-api.do', data: { type: 'batch-process' , serviceType : sessionStorage['serviceType'] }, dataType: 'json', success: function(response) { if (response && response.batchData) { // BAP 데이터 파싱 const bapData = response.batchData[0]; if (bapData) { const bapValues = bapData.procBatch.split(','); bapData.sendSuccess = parseInt(bapValues[0]) || 0; bapData.receiveSuccess = parseInt(bapValues[1]) || 0; bapData.sendError = parseInt(bapValues[2]) || 0; bapData.receiveError = parseInt(bapValues[3]) || 0; bapData.sendWaiting = parseInt(bapValues[4]) || 0; bapData.receiveWaiting = parseInt(bapValues[5]) || 0; } // BAT 데이터 파싱 const batData = response.batchData[1]; if (batData) { const batValues = batData.procBatch.split(','); batData.sendSuccess = parseInt(batValues[0]) || 0; batData.receiveSuccess = parseInt(batValues[1]) || 0; batData.sendError = parseInt(batValues[2]) || 0; batData.receiveError = parseInt(batValues[3]) || 0; batData.sendWaiting = parseInt(batValues[4]) || 0; batData.receiveWaiting = parseInt(batValues[5]) || 0; } } if (successCallback) { successCallback(response); } }, error: function(xhr, status, error) { console.error('배치 처리 상태 조회 실패:', error); if (errorCallback) { errorCallback(xhr, status, error); } } }); }, /** * 인스턴스 상세 정보 요청 * @param {string} serverName - 서버 이름 (선택적) * @param {Function} successCallback - 성공 콜백 함수 * @param {Function} errorCallback - 에러 콜백 함수 */ getInstanceDetail: function(serverName, successCallback, errorCallback) { const params = {}; if (serverName) { params.serverName = serverName; } this._request('instance-detail', params, successCallback, errorCallback); }, /** * 실시간 성능 데이터 요청 * @param {Function} successCallback - 성공 콜백 함수 * @param {Function} errorCallback - 에러 콜백 함수 */ getPerformanceData: function(successCallback, errorCallback) { this._request('performance-data', {}, successCallback, errorCallback); }, /** * 트랜잭션 시계열 데이터 요청 * @param {string} serverName - 서버 이름 (선택적) * @param {number} minutes - 가져올 데이터의 시간 범위(분) (선택적, 기본값 10) * @param {Function} successCallback - 성공 콜백 함수 * @param {Function} errorCallback - 에러 콜백 함수 */ getTransactionTimeSeries: function(serverName, minutes, successCallback, errorCallback) { const params = {}; if (serverName) { params.serverName = serverName; } if (minutes) { params.minutes = minutes; } this._request('transaction-timeseries', params, successCallback, errorCallback); }, /** * 서버 리소스 시계열 데이터 요청 * @param {string} hostname - 호스트명 * @param {Function} successCallback - 성공 콜백 함수 * @param {Function} errorCallback - 에러 콜백 함수 */ getServerResourceData: function(hostname, successCallback, errorCallback) { const params = { hostname: hostname }; this._request('server-resource', params, successCallback, errorCallback); }, /** * 소켓 상태 정보 요청 * @param {string} serverName - 서버 이름 (선택적) * @param {string} adapterGroup - 어댑터 그룹 이름 (선택적) * @param {Function} successCallback - 성공 콜백 함수 * @param {Function} errorCallback - 에러 콜백 함수 */ getSocketStatus: function(serverName, adapterGroup, successCallback, errorCallback) { const params = {}; if (serverName) { params.serverName = serverName; } if (adapterGroup) { params.adapterGroup = adapterGroup; } this._request('socket-status', params, successCallback, errorCallback); }, /** * 소켓 프로세스 정보 요청 * @param {string} serverName - 서버 이름 (선택적) * @param {string} adapterGroup - 어댑터 그룹 이름 (선택적) * @param {Function} successCallback - 성공 콜백 함수 * @param {Function} errorCallback - 에러 콜백 함수 */ getSocketProcess: function(serverName, adapterGroup, successCallback, errorCallback) { const params = {}; if (serverName) { params.serverName = serverName; } if (adapterGroup) { params.adapterGroup = adapterGroup; } this._request('socket-process', params, successCallback, errorCallback); }, /** * 소켓 통합 정보 요청 (상태 + 프로세스) * @param {string} serverName - 서버 이름 (선택적) * @param {string} adapterGroup - 어댑터 그룹 이름 (선택적) * @param {Function} successCallback - 성공 콜백 함수 * @param {Function} errorCallback - 에러 콜백 함수 */ getSocketCombined: function(serverName, adapterGroup, successCallback, errorCallback) { const params = {}; if (serverName) { params.serverName = serverName; } if (adapterGroup) { params.adapterGroup = adapterGroup; } this._request('socket-combined', params, successCallback, errorCallback); }, /** * 인터페이스 로그 조회 * @param {string} interfaceId - 인터페이스 ID * @param {string} startTime - 조회 시작 시간 (YYYYMMDDHHMMSS 형식) * @param {string} endTime - 조회 종료 시간 (YYYYMMDDHHMMSS 형식) * @param {string} serviceType - 서비스 타입 * @param {Function} successCallback - 성공 콜백 함수 * @param {Function} errorCallback - 에러 콜백 함수 */ getInterfaceLogs: function(interfaceId, startTime, endTime, serviceType, successCallback, errorCallback) { const params = { searchEaiSvcName: interfaceId, searchStartTime: startTime, searchEndTime: endTime, searchErrorYn: 'N' // 모든 로그 조회 (Y인 경우 오류만 조회) }; // 트랜잭션 로그 API 호출 $.ajax({ url: this.contextPath + '/onl/transaction/tracking/trackingMan.json', type: 'POST', data: Object.assign({cmd: 'LIST', serviceType: serviceType || 'FEP'}, params), dataType: 'json', success: function(data) { if (successCallback) { successCallback(data); } }, error: function(xhr, status, error) { console.error(`인터페이스 로그 조회 실패:`, error); if (errorCallback) { errorCallback(xhr, status, error); } } }); }, };