안전한IT 시스템 운영을 위한 첫 걸음 – 통합 모니터링 시스템
안전한IT 시스템 운영을 위한 첫 걸음 – 통합 모니터링 시스템
IT 시스템의 복잡성이 증가함에 따라, 효율적이고, 안전한 시스템 운영을 위해 모니터링 시스템의 중요성은 날로 부각되고 있습니다. 실시간 데이터를 수집하고 분석하는 기능은 시스템 성능 최적화와 비즈니스 연속성을 유지하는 데 필수적인 요소입니다.
모니터링을 통해 시스템 성능을 최적화하고, 실시간 데이터를 기반으로 장애에 대한 빠른 의사 결정을 내려 다운 타임을 줄일 수 있습니다. 이러한 이유로 기업들은 모니터링 시스템에 많은 자원과 노력을 투자하고 있습니다.
이번 글을 통해 CRM CI TR 프로젝트에서 도입한 SMS 모니터링 시스템이 어떻게 구성되어 운영되는지와 그 기대효과는 무엇인지에 대해 다루어 보겠습니다.
모니터링 시스템의 필요성과 도입 배경
KOS-CRM(B2C) 시스템에서 CI는 KOS 시스템과 고객 접점 채널 역할을 하는 SMS, FAX, CTI 기능을 제공합니다. 기존 CI 시스템은 CRM Siebel Package로 개발되어 있었으나, Sieble Bug로 인한 운영 리스크가 꾸준히 증가하였습니다. 이에 CRM CI Tr 프로젝트를 통해 MSA로 구축하는 프로젝트가 진행되고 있습니다.
23년도 3월 기준, CI의 월간 SMS 전송 건수는 약 1억 건입니다. 이전에는 기존 시스템에서 SMS 전송 요청이 정상적으로 발송이 되지 않는 경우, 문제 해결을 위해 수동으로 로그를 분석하거나, 여러 시스템을 점검해야 했습니다. 다양한 시간대에 수많은 채널 시스템으로부터 들어오는 SMS 발송 이력을 확인하고, 문제가 발생한 원인을 파악하는데 해당 방식은 비효율적이었습니다.
시계열 데이터를 기반으로 한 모니터링 서비스의 도입은 SMS 발송 요청이 들어온 시점부터, 수신 결과를 남기는 시점까지의 모든 과정을 정확히 추적할 수 있도록 돕습니다. 이를 통해 시스템에서 발생한 문제를 빠르게 진단하고 해결할 수 있습니다.
모니터링 시스템 아키텍처
CRM CI TR 프로젝트에서 구축한 모니터링 시스템의 전체적인 구조 흐름은 다음과 같습니다.
SMS 발송 요청과 고객 수신 결과에 관련 데이터가 카프카 토픽을 통해 인입됩니다. 모니터링용 카프카 컨슈머 그룹에서 관련 데이터를 배치 프로그램이 주기적으로 가져옵니다. 가져온 데이터는 시계열 DB에 저장됩니다. 배치 프로그램은 준실시간 발송 경로에서 미 발송 처리된 큐 대기 건수와 재처리 건과 같은 정보도 DB로부터 주기적으로 확인하여 시계열 DB에 저장합니다. 그 외 시계열 DB에는 다른 모듈들을 통해 카프카 상태 모니터링 정보와 서버의 메트릭 정보도 함께 저장됩니다. 이렇게 시계열 DB에 저장된 정보들을 데이터 시각화 모듈을 이용하여 UI로 표출되게 됩니다.
CRM CI TR 프로젝트에서 구축한 모니터링 시스템은 다양한 기술 스택을 활용하여 설계되었습니다. 시계열 데이터를 주기적으로 가져오는 배치 프로그램, 시계열 데이터 저장을 위한InfluxDB, 데이터 시각화를 위한 Grafana, Kafka 모니터링을 위한 Kafka exporter와 Prometheus, 서버 메트릭 수집/발송을 위한 Telegraf, 이상 징후 전달을 위한 Mail Relay 서버로 구성되어 있습니다. 각각의 구성 요소가 서로 유기적으로 작동하여 모니터링 체계를 형성하고 있습니다.
모니터링 시스템의 주요 기능 및 특징
모니터링 시스템은 크게 6가지 기능을 수행합니다.
시계열 데이터 수집
- SMS 전송 요청과 수신 결과를 처리하는 카프카 토픽의 컨슈머에서 배치 프로그램으로 시계열 데이터를 주기적으로 수집합니다.
- 수집된 데이터는 InfluxDB 버킷에 저장됩니다.
- Raw 한 시계열 데이터는 장애 대응 열람용으로 활용됩니다.집계 데이터 생성
- 집계 데이터는 InfluxDB 내부에서 Task로 생성이 되며, 다운 스케일링(더 긴 시간 단위의 데이터를 얻기 위해, 데이터를 점진적으로 축소하고 집계하는 과정)을 거쳐 생성됩니다.
- 집계 데이터는 일반적인 모니터링 목적으로 활용됩니다.
- 집계 데이터 생성 대상 데이터는, 수집된 시계열 데이터와 준실시간 경로로 발송되는 SMS 처리 큐 대기 건수입니다.- 예시 :
1) ‘Task_5s’는 시계열 데이터를 지정된 시간 단위(5s)로 집계하고, 집계 결과를 ‘bucket_5s’에 저장하는 과정을 반복합니다.
2) ‘Task_1m’은 ‘bucket_5s’를 지속적으로폴링하여, 12개의 데이터 세트가 모이면 이를 집계하여, 집계 결과를 ‘bucket_1m’에 저장합니다.
3) ‘Task_1h’은 ‘bucket_1m’를 지속적으로폴링하여, 60개의 데이터 세트가 모이면 이를 집계하여, 집계 결과를 ‘bucket_1h’에 저장합니다.
4) ‘Task_1d’은 ‘bucket_1h’를 지속적으로폴링하여, 24개의 데이터 세트가 모이면 이를 집계하여, 집계 결과를 ‘bucket_1d’에 저장합니다.카프카 모니터링
- 카프카 모니터링을 위해 필요한 데이터 수집은 Kafka Exporter와 Prometheus를 통해 이루어집니다.
- 수집된 데이터를 통해 카프카 토픽별기준시간당 메시지 인입, 컨슘 및 컨슘 지연, 파티션, 브로커 개수 등의 정보를 확인할 수 있습니다.
- 수집된 정보를 기준으로 MSA로의 데이터 유량 제어를 담당하는 카프카의 처리 상태를 확인할 수 있습니다.서버 관리
- CI 프로젝트에서 사용되는 서버 상태 모니터링을 위해 메트릭 데이터 수집은 각 서버에 설치된 Telegraf 모듈을 통해 이루어집니다.
- 수집 대상 서버로부터 CPU, RAM, HDD 등의 리소스 정보부터 서버에 대한 전반적인 내용을 시계열 데이터로 수신합니다.
- 수집된 정보를 기준으로 서버의 상태를 확인하여, 리소스 증설 등의 시스템 최적화를 하는 데 도움을 줍니다.데이터 도식화
- 수집된 시계열/집계 데이터들은 Grafana에서 대시보드를 통해 차트로 도식화됩니다.Rule 기반 알림 기능
- Grafana에서는 수집된 Data source 별로 Rule을 생성하여 관리할 수 있습니다.
- 설정된 Rule의 기준치를 밖의 데이터가 인입될 경우, 설정된 방법으로 담당자에게 알람을 제공합니다.
- CRM CI Tr 모니터링 시스템에서는 메일 서버와 연동하여, 사용자에게 알림 메일을 전송하고 있습니다.
모니터링 시스템 대시보드 - Overview 대시보드 페이지
Overview 대시보드 페이지는 다음과 같이 구성되어 있습니다.
통계 패널
- 현재까지의 누적 요청/처리/수신 건수와 성공률,
- 준실시간 발송 경로에서 미처리된 큐 대기 건수
- MSA 적재 오류로 발생한 재처리 건수
- 내부 규약 미준수(트랜잭션 ID자리수 등), 퍼미션 거부 등으로 인한 미 발송 건수트래픽 현황 패널
- SMS 발송 요청 / SMS 발송 요청 처리 성공 / 고객 SMS 수신 성공 건수
- 시계열에 따른 각 건수의 추세 비교 (전 주 대비)발송 경로 별(실시간/준실시간/배치), 발송 요청, 성공, 수신 완료 건수 및 성공률
발송 경로 내, 시스템별, 고객 SMS 수신 성공률
발송 경로 내 시스템별, 시 계열에 따른 오류 건수
모니터링 시스템 대시보드 – Detail 대시보드 페이지
Detail 대시보드 페이지는 다음과 같이 구성되어 있습니다.
통계 패널
- 선택 시간 범위 내 누적 요청/처리/수신 건수와 성공률,
- 준실시간 발송 경로에서 미처리된 큐 대기 건수
- MSA 적재 오류로 발생한 재처리 건수
- 내부 규약 미준수(트랜잭션 ID자리수 등), 퍼미션 거부 등으로 인한 미발송 건수발송 시스템별 처리 현황
-발송 경로 내 시스템별, SMS 발송 요청 / SMS 발송 요청 처리 성공 / 고객 SMS 수신 성공 건수발송 시스템 결과코드 처리 현황
- 발송 경로 내 시스템별, 결과 코드 건수 분포 현황MSA Latency 정보 ( 시계열에 따른 변화도, 최근 값, 평균치 )
준실시간 경로 큐 처리 현황 ( 처리 완료 건(Y), 미처리 건(N) )
모니터링 시스템 대시보드 – Kafka 대시보드 페이지
Kafka 대시보드 페이지는 다음과 같이 구성되어 있습니다.
집계 패널
- 전체 메시지 건수
- 전체 컨슈머 그룹 수
- 활성 브로커 수메시지 인입 확인 패널
- 토픽별 초/분당 인입 메시지 건수컨슈머 그룹별 지연 패널
- 토픽별 컨슘 지연 정도 표출메시지 컨슘 건수 패널
- 토픽별 분당 메시지 컨슘 건수
모니터링 시스템 대시보드 – 서버 관제 대시보드 페이지
서버 관제 대시보드 페이지는 다음과 같이 구성되어 있습니다.
Overview 패널
- 서버 기동 시간(Uptime)
- CPU, Process, Thread 수
- CPU, RAM,, SWAP, Root 디렉토리 사용률 및 IO Wait 정도
CPU 패널
- 시계열에 따른 CPU 사용량, 로드 평균, 프로세스 상태 분포 변화 정도Memory 패널
- 시계열에 따른 메모리 사용 상태별 용량 변화 정도Network 패널
- 네트워크 사용 속도
- 네트워크 패킷 별 입출 속도, drop 및 에러 정도Network Stack 패널
- TCP Connection 체결 수 및 Time_Wait 수Kernel 패널
- Context Switch 수
- Fork 수SWAP 패널
- SWAP I/O 입출 용량
- SWAP I/O 사용 used, total 용량System 요약 패널
- CPU 시스템 부하 (1분 평균)
- RAM 사용량
- Process Count
- Disk I/O 대기 시간
- Disk 사용량
모니터링 시스템 구축으로 인한 개선 및 기대 효과
시계열 모니터링 시스템을 구축함으로써 다양한 기대효과를 얻을 수 있었습니다. 먼저 기존에 파악하기 어려웠던, 각 시스템에서 발송된 SMS 중 발송이 거절되거나 에러가 발생하는 건을 찾아 발송이 가능하게끔 효과적으로 수정을 할 수 있었습니다. 또한 CRM CI Tr MSA시스템에서의 발송 오류가 발생하는 건을 찾아 시스템의 완성도를 높일 수 있었습니다. 차후에도 운영시스템에서 발생하는 SMS 발송 오류 건에 대한 발견과 조처를 할 수 있을 것으로 기대되고 있습니다.
이처럼 전환한 시스템에서 모니터링을 통해 신속한 장애 감지 및 대응이 가능해졌고, 시스템 성능 최적화를 통해 예기치 않은 다운타임을 줄였습니다. 운영 비용 또한 절감되었으며, 실시간 데이터 분석과 시각화를 통해 더 나은 비즈니스 의사결정을 할 수 있었습니다. 결과적으로, 사용자 경험이 크게 향상되고, 시스템 운영의 신뢰성과 효율성이 대폭 증가하였습니다.
마치며
모니터링 시스템 구축을 통해 우리는 앞서 확인한 바와같이 많은 혜택을 얻을 수 있었습니다. 시스템의 안정성을 높이고 운영의 효율성을 높이는 데 성공했으며, 데이터 기반의 신뢰할 수 있는 의사결정을 도울 수 있었습니다. 차후 운영팀과 시스템 담당자와의 커뮤니케이션의 소통을 통해,
보다 효과적인 모니터링이 가능하도록 시스템을 개선해 나갈 예정입니다.
시스템의 안정적인 운영은 지속적인 모니터링에서 시작됩니다. 모니터링을 넘어, 현재와 미래를 본다고 생각합니다. 알고 있으면, 대비할 수 있기에, 모니터링을 통해 함께 더 나은 IT 환경을 만들어 갔으면 좋겠습니다. 감사합니다.
용어 정리
시 계열 : 일정 시간 간격으로 배치된 데이터들의 수열
발송 요청 : CRM CI Tr MSA를 통해 SMS발송시스템에 SMS를 전달하는 행위를 지칭
요청 성공 : SMS발송시스템에서 발송 요청된 SMS를 정상적으로 수용함을 지칭
수신 성공 : SMS발송시스템을 통해, 고객에게 SMS 전송을 완료한 행위를 지칭
전체 발송 경로 : 실시간, 준실시간, 배치 SMS 전송 경로를 지칭
시스템(채널) : 메시지 발송 요청 시스템을 지칭 (오더, 빌링…)
결과 코드 : SMS발송시스템으로부터 반환되는 SMS 처리 결과 코드를 지칭
Kafka : 대용량 데이터를 실시간으로 스트리밍하고 처리하기 위한 분산형 메시지 브로커 시스템.
InfluxDB : 시계열 데이터 저장을 위한 고성능 데이터베이스.
Grafana : 실시간 데이터의 시각화를 위한 오픈 소스 대시보드 툴.
Telegraf : 다양한 소스의 메트릭 데이터를 수집하고 송신하는 에이전트 메트릭 수집기.
Prometheus : 다차원 데이터 모델을 지원하는 모니터링 및 경보 시스템.
Airflow : 배치 작업 스케줄링 및 워크플로우 관리를 위한 툴.
Mail Relay Server : 이메일 전달을 중계하는 서버로, 시스템 알림 등을 이메일로 발송할 수 있게 함.