우리 회사의 솔루션은 개발팀의 규모가 컸던 시절 프레임워크화 하였고 이를 기반으로 고객사별로 커스터마이징하여 App 서비스를 제공하였다. 하나의 메인 소스를 가지고 커스터마이징하여 현재는 자사 App을 사용하는 8개 고객사 프로젝트를 운영중인 것이다. 솔루션을 개발했던 기존 개발팀은 모두 다른 회사로 이직을 하였고 지금은 본인 포함 3명의 개발파트 직원이 SM업무를 수행하고 있다. 회사는 고객사 상담 창구 운영을 위한 인프라, [App], [인력]을 제공하는데 본인은 App운영 및 유지보수 업무를 수행하고 있다.
고객사는 9to6 또는 24/365로 App을 이용하기 때문에 고가용성(HA, High Availability)이 굉장히 중요하다. 그렇기 때문에 매일 서버의 상태를 점검하는 것도 마찬가지로 굉장히 중요하다. App서버에 대해 체크하는 부분은 다음과 같다.
1. ping 응답 속도
2. tcping 응답 속도
3. DB 서버의 응답 확인
4. CPU 이용률
5. Memory 사용 현황
6. 디스크 상태
1~2번은 n8n의 command 노드에서 명령어를 수행하여 값을 확인하고 3번은 로그인페이지에 url요청 시 특정 쿼리스트링을 첨부하여 로직을 수행하고 DB 점검 정상 여부를 출력하도록 되어 있다. 1~3번까지의 과정에서 이상이 없으면 n8n 이메일 노드에서 각 점검 결과에 대한 문자열을 첨부하여 개발파트로 발송하게 되어 있다. (프로젝트의 개수만큼 메일을 받게 된다.)
4~6번은 zabbix 대시보드를 직접 눈으로 확인하고 최종 일일점검 보고 양식에 직접 기입하고 있다. 현재의 일일점검 및 일일점검 보고 절차는 다음과 같다.
1. n8n 이메일에서 ping, tcping 응답 속도를 확인한다.
2. zabbix 모니터링을 통해 cpu, memory, hdd 상태를 확인한다.
3. 확인한 내용을 일일점검 보고 양식에 작성하여 이메일 발송한다.
▼매일 반복적으로 수행하는 1~3의 과정을 자동화하여 업무 시간을 효율화하고자 한다.
첫 번째로 고민한 것은 서버의 성능 모니터링 값을 어디에서 얻는가 였다.
1. zabbix 모니터링 값을 이용
2. 서버에서 직접 자원 상태를 확인
1번은 zabbix의 리포트 기능을 활용하여 그 자체를 메일에 첨부하는 것이었으나 기존에 발송하던 메일 양식을 유지하고자 배제하였다.
2번에 대해서 처음에는 단순하게 n8n등에서 ssh로 접근하여 서버에 명령어를 수행하도록 하면 될 것이라고 생각했다. 하지만 2차 인증으로 OTP를 사용하기 때문에 n8n서버 등 외부에서 App서버에 접근하여 명령어를 수행하는 것은 어려울 것이라고 판단하였다.
기존의 상황에서 최소한의 수정으로 일일점검 보고 자동화 기능을 만드는 것에 주안점을 두고 다시 생각해 보았다. 일일점검을 수행하는 모든 프로젝트의 로그인 페이지에는 n8n에서 특정 쿼리스트링을 담아 url 요청 시 db점검 결과를 반환하도록 한 JSP 스크립틀릿부가 있다. 이를 활용하여 App서버의 성능 로그가 담긴 파일을 읽도록 소스를 추가하면 가능하지 않을까 생각하게 되었다.
외부에서 서버에 접근하는 것이 어려우므로 서버에서는 매일 특정 시간에 서버의 자원 상태를 프로젝트의 디렉토리에 저장해주어야 한다. 다음과 같이 간단하게 절차를 생각해 보았다.
그런데 zabbix는 어떻게 OTP같은 보안절차가 있는데 상시 서버를 모니터링 할 수 있는 것일까?
1. App 운영 서버에서는 특정 시간에 서버의 자원 상태를 담은 '로그 파일'을 '특정 경로'에 저장한다.
2. n8n에서는 특정 시간에 '로그 파일'에 대한 로직을 수행하는 url 요청을 수행한다.
3. JSP에서는 url 요청 시 '로그 파일'을 파싱하고 보고양식에 맞는 (HTML 포맷 등) 문자열을 반환한다.
4. n8n에서는 반환받은 문자열을 이용하여 이메일 발송 등의 로직을 수행한다.
'개발 > 개발관련' 카테고리의 다른 글
[개발관련] 액티브-스탠바이, 그리고 VIP (chatGPT) (0) | 2023.06.21 |
---|---|
[개발관련] 아카이브(Archive) 란? - jar, war (0) | 2023.06.18 |
[개발관련] 윈도우 유용한 기능, '로그인 후 앱 다시 시작' 기능 (0) | 2023.06.10 |
[개발관련] 배포기술자 web.xml (0) | 2023.06.02 |
[개발관련] 검색엔진에 대한 간단한 조사 (0) | 2023.05.30 |