[![logo](https://www.hongsnet.net/images/logo.gif)](https://www.hongsnet.net)

## MON 도입 목적
 - `시스템 및 서비스에 대한 안정화 실현`
 - **오픈소스** 기반의 시스템 모니터링 구현
 - 오픈소스 모니터링 시스템의 Source Code Custmization 보단, **직접 연구/개발하여 각종 기능들을 생산**
 - UI와 API 기반의 연동구성으로 동작
   - UI : React 라이브러리 기반
   - API : Node.js 기반

## MON 기대 효과 및 특징

- 모니터링 시스템 기대 효과 및 특징
 - **빠른 시간 안에 모니터링 시스템을 구성**할 수 있는 환경 (오픈 소스)
 - **Time Series DBMS** 도입에 따른 **대용량 데이터 처리 가능**
   - RDBMS의 경우 대용량 처리에 대한 DB 부하 및 제약조건 이슈 발생 내재
 - **대용량 메시징 시스템**과의 연동
   - Kafka Producer와 Consumer를 기본적으로 제공
 - 대상 시스템의 경우 별도 Inventory에서 RDBMS로 관리
 - 필요할 경우 그룹 및 항목별 Farm 분리 가능
 - 시스템 Alarm의 경우 Kapacitor에서 수집된 데이터를 기준으로 판단
 - 시스템 Metric Data는 **influxDB**에 저장
     - InfluxDB의 Retention Policy(일정 기간 동안만 데이터를 저장)
     - 이력 관리의 경우 History 메뉴에서 확인 가능
   - InfluxDB는 TS(TimeSeries)DBMS 로서, 제약조건이 없는 특성이 존재
     - Table => Measurement
     - Primary Key => Tag
     - Field => Tag를 제외한 필드
 - **Kapacitor** 임계치의 경우 UI에서 직접 변경이 가능
 - Alarm On/Off 기능
 - Alarm의 경우 **Slack**과 **Email**로 발송
 - 모니터링 Visualization 솔루션은 **Grafana** 제공을 통해 제공
   - 각 시스템별 URL Link를 통해 제공


## TO-DO List

 - **서비스 모니터링** 연구/개발 후 적용 필요
 - **Container** 환경의 모니터링 연구/개발 후 적용 필요


## System Overview


# Front-End

![front_end](./images/monitoring.png)

# Back-End

![back_end](./images/monitoring_kafka.png)