링크 1. Overview & IDEA - HW monitoring 2. Problem & PoC 3. DATA Design 4. Publisher 5. Database & logger 6. Visualization 7. ToBeContinue…?

Discription

AWS에 EC2 instance의 하드웨어 리소스를 실시간으로 모니터링 하기 위해서 만들어진 프로젝트입니다. cloud에 이상이 생길 경우를 대비해 실시간 리소스 사용량을 시각화하는 프로그램을 구성했으며 이를 통해 리소스의 사용량이 평균에 비해 급격하게 증가하는 경우에 그래프에서 알림을 줄수 있도록 구성했습니다.

Result

위 gif는 4대의 instance가 존재할 때 시각적으로 문제가 생기는 상황을 캡쳐애 놓은 것입니다. 주로 cpu를 모니터링 할 계획이었기 때문에 cpu 사용량이 80%를 넘어가는 경우 경고창을 띄우려 했습니다.

Prerequisites

사용한 기술

JAVA : openJdk11
kafka : 3.7.0
influxdb : 2.7.5
grafana : 7.5.2
spring : 2.7.4

Architecture

Renewal Project Architecture

개인 프로젝트의 구조

EC2 Node1 \
EC2 Node2 - Kafka - Telegraf - Influxdb - Grafana
EC2 Node3 /
...       /

N개의 늘어날 수 있는 노드를 모니터링 하기 위해 Kafka를 사용했고 하드웨어 리소스 데이터를 저장하기 위해 시계열db 저장에 특화된 InfluxDB와 Grafana를 사용해서 시각화를 진행

Prev Project Architecture

팀프로젝트로 했을 당시 구조

EC2 Node1 \
EC2 Node2 - Kafka - logstash - Elastic Search - Kibana
EC2 Node3 /
...       /

당시 프로젝트 문제점

  • elastic search를 통해 로그를 저장했지만 스트리밍 데이터를 시각화하는 kibana의 미흡한 구현
  • 로그를 쿼리하는데 최적화된 elastic Search보다 나은 프로그램의 존재 보완점
  • 시계열 데이터에 최적화 되어있는 Influxdb로 교체 (elastic search -> influxdb)
  • 로그 수집 프로그램 교체 (logstash -> Telegraf)
  • 시각화 툴 교체 (Kibana -> Grafana)

Author

해당 프로젝트는 팀프로젝트였지만 개인적으로 다시 프로젝트를 처음부터 다시 진행한 부분을 남겼습니다. 당시 같이 진행한 구성원과 역할은 아래와 같습니다.

이종근
	Kafka Broker 구축, producer base code 작성
임우찬
	producer parser 프로그래밍
임종현
	Elastic Search를 통한 시각화 보드 프로그래밍