88import java .util .List ;
99import java .util .stream .Collectors ;
1010
11+ import dnl .utils .text .table .TextTable ;
12+ import dnl .utils .text .table .csv .CsvTableModel ;
13+ import root .common .database .contracts .AbstractDatabase ;
14+ import root .common .database .implement .JdbcDatabase ;
15+ import root .common .server .implement .JschServer ;
16+ import root .core .batch .DBCheckBatch ;
17+ import root .core .batch .ServerCheckBatch ;
18+ import root .core .domain .AlertLogCommandPeriod ;
19+ import root .core .domain .JdbcConnectionInfo ;
20+ import root .core .domain .JschConnectionInfo ;
21+ import root .core .repository .constracts .DBCheckRepository ;
1122import root .core .repository .constracts .PropertyRepository ;
23+ import root .core .repository .constracts .ServerCheckRepository ;
24+ import root .core .repository .implement .DBCheckRepositoryImpl ;
1225import root .core .repository .implement .PropertyRepositoryImpl ;
26+ import root .core .repository .implement .ReportFileRepo ;
27+ import root .core .repository .implement .ServerCheckRepositoryImpl ;
1328import root .core .service .contracts .PropertyService ;
1429import root .core .service .implement .FilePropertyService ;
30+ import root .core .usecase .constracts .DBCheckUsecase ;
31+ import root .core .usecase .constracts .ServerCheckUsecase ;
32+ import root .core .usecase .implement .DBCheckUsecaseImpl ;
33+ import root .core .usecase .implement .ServerCheckUsecaseImpl ;
34+ import root .utils .CsvUtils ;
35+ import root .utils .DateUtils ;
1536import root .utils .PatternUtils ;
1637
1738/**
@@ -77,17 +98,17 @@ public static void main(String[] args) throws IOException {
7798 String selectedPreset = "" ;
7899 while (true ) {
79100 System .out .println (String .format ("사용하실 모니터링여부 설정을 선택해주세요." ));
80-
101+
81102 List <String > presetNames = propService .getMonitoringPresetNameList ();
82103 if (presetNames .size () == 0 ) {
83104 System .out .println ("모니터링여부 설정파일이 존재하지 않습니다. 프로그램을 종료합니다." );
84105 return ;
85106 }
86-
107+
87108 for (int i = 0 ; i < presetNames .size (); i ++) {
88109 System .out .println (String .format ("[%d] %s" , (i + 1 ), presetNames .get (i )));
89110 }
90-
111+
91112 String input = br .readLine ().trim ();
92113 if (!PatternUtils .isOnlyNumber (input )) {
93114 System .out .println ("잘못 입력하셨습니다. 모니터링여부 설정파일을 다시 선택해주세요." );
@@ -104,5 +125,53 @@ public static void main(String[] args) throws IOException {
104125 break ;
105126 }
106127 System .out .println (String .format ("선택된 파일은 [%s] 입니다." , selectedPreset ));
128+
129+ // STEP4: 설정파일의 접속정보를 읽어 DB,Server 객체 생성 및 출력
130+ List <String > dbNames = propService .getMonitoringDBNameList ();
131+ List <JdbcConnectionInfo > jdbcConnectionList = propService .getJdbcConnInfoList (dbNames );
132+ System .out .println ("저장된 DB접속정보는 다음과 같습니다." );
133+ TextTable dbTable = new TextTable (
134+ new CsvTableModel (CsvUtils .toCsvString (jdbcConnectionList , JdbcConnectionInfo .class )));
135+ dbTable .printTable (System .out , 2 );
136+
137+ List <String > serverNames = propService .getMonitoringServerNameList ();
138+ List <JschConnectionInfo > jschConnectionList = propService .getJschConnInfoList (serverNames );
139+ System .out .println ("저장된 Server접속정보는 다음과 같습니다." );
140+ TextTable serverTable = new TextTable (
141+ new CsvTableModel (CsvUtils .toCsvString (jschConnectionList , JschConnectionInfo .class )));
142+ serverTable .printTable (System .out , 2 );
143+
144+ // TODO STEP5: 모니터링여부 설정 읽기
145+
146+ // STEP6: 모니터링 수행
147+ System .out .println ("DB 모니터링을 수행합니다." );
148+ for (JdbcConnectionInfo jdbc : jdbcConnectionList ) {
149+ System .out .println ("■ [ " + jdbc .getJdbcDBName () + " Monitoring Start ]\n " );
150+ AbstractDatabase db = new JdbcDatabase (jdbc );
151+ db .init ();
152+ DBCheckRepository repo = new DBCheckRepositoryImpl (db );
153+ DBCheckUsecase usecase = new DBCheckUsecaseImpl (repo , ReportFileRepo .getInstance ());
154+ DBCheckBatch dbBatch = new DBCheckBatch (usecase );
155+ dbBatch .startBatchArchiveUsageCheck ();
156+ dbBatch .startBatchTableSpaceUsageCheck ();
157+ dbBatch .startBatchASMDiskUsageCheck ();
158+ System .out .println ("■ [ " + jdbc .getJdbcDBName () + " Monitoring End ]\n \n " );
159+ }
160+
161+ System .out .println ("Server 모니터링을 수행합니다." );
162+ for (JschConnectionInfo jsch : jschConnectionList ) {
163+ System .out .println ("■ [ " + jsch .getServerName () + " Monitoring Start ]\n " );
164+ JschServer server = new JschServer (jsch );
165+ server .init ();
166+ ServerCheckRepository repo = new ServerCheckRepositoryImpl (server );
167+ ServerCheckUsecase usecase = new ServerCheckUsecaseImpl (repo );
168+ ServerCheckBatch serverBatch = new ServerCheckBatch (usecase );
169+
170+ AlertLogCommandPeriod alcp = new AlertLogCommandPeriod (jsch .getAlc (),
171+ DateUtils .addDate (DateUtils .getToday ("yyyy-MM-dd" ), 0 , 0 , -1 ), DateUtils .getToday ("yyyy-MM-dd" ));
172+ serverBatch .startBatchAlertLogCheckDuringPeriod (alcp );
173+ serverBatch .startBatchOSDiskUsageCheck ();
174+ System .out .println ("■ [ " + jsch .getServerName () + " Monitoring End ]\n \n " );
175+ }
107176 }
108177}
0 commit comments