오픈소스를 이용한 모니터링 플랫폼 & 파이프라인 설계

  
이번 주에 Architecture 과제 때문에 2년 전 제가 혼자서 기획/설계/구현/테스트운영한 모니터링 플랫폼/파이프라인을 그렸습니다.  오픈소스만을 활용하여 모니터링 파이프라인을 만드는 하이 레벨 아키텍처입니다. 

엘라스틱 스택(Elastic Stack)과 카프카(Kafka)를 이용한 모니터링 플랫폼/파이프라인


TL;DR -  
모니터링 할 데이터(로그, 이벤트, 메트릭)를 수집할 놈이 필요하고 => Beats ;
이 데이터를 저장할 놈이 필요하고 => Elasticsearch ; 
이 저장된 데이터를 시각화 해주는 놈이 필요하다. => Kibana ; 
(옵션) 데이터 수집시 필요없는 부분을 제거하고,  내가 원하는 형태로 만드는 전처리가 가능하다. => Logstash (ETL 도구) ;
(옵션) 수집되는 데이터 양이나  노드들이 너무 많아 분산 처리가 필요하면 데이터 스트리밍 플랫폼인 카프카를 써주면 된다. => Kafka ;


보통 사내에서 서비스/인프라/네트워크/업타임/APM/CI 파이프라인/보안관제(SIEM) 등 여러가지를 모니터링을 합니다.  유료 모니터링 서비스들을 많이 이용하기도 합니다. 하지만 때론 금전적인 문제로 직접 구축해야 할 경우가 있습니다. 이때 오픈소스인 엘라스틱 스택과 카프카를 이용하여 모니터링 플랫폼을 만들 수 있습니다. (단, 엘라스틱과 컨플루언트가 만든 유료 기능들을 사용하려면 돈을 내야합니다. 저는 돈 쓰고 내는 기능들은 안썼습니다. ㅋㅋ) 

아파치 카프카 사용은 배보다 배꼽이 큰 상황이 될 수 있으니 빼셔도 됩니다. 보통 작은 회사들은 대용량 분산 처리 시스템이 필요할 만큼 모니터링 할 데이터가 많지 않습니다. 잡다한 것들은 모니터링 할 필요도 없고,  데이터(로그, 메트릭, 이벤트)를   내가 원하는 것만 수집하고, 수집하는 주기를 변경하고, 로그스태쉬에서 그록이나 뮤테이트, etc 플러그인을 사용해서 전처리 한 뒤 엘라스틱에 저장하면 됩니다. 엘라스틱 클러스터링 또한 일단 회사 사정에 맞게 운영하면 될 것 같슴다. 엘라스틱 리텐션 주기도 상황에 맞게 잘 설정하고, 감사로그 같은 데이터는 스냅샷 API로 백업해 두면서 회사 사정에 맞게 회사가 운영할 수 있는 수준에서 돌리시면 아무 문제 없습니다.  또 다른 오픈소스인 그라파나도 연구해보세요. (제 블로그 Label 에서 그라파나를 찾아보시면 기초를 아주 쉽게 배울 수 있습니다.) 






오픈소스 코드를 자체적으로 수정해서 사용해도 되는 걸로 알고 있지만 뭔가 계속 바뀌니 잘 확인하세요. 라이센스, 법, 이런건 제가 전혀 모르니 알아서 ㄱㄱ (카프카는 아파치 라이센스 2.0 입니다. 엘라스틱서치, 로그스태쉬,키바나,비트는 아파치 라이센스 2.0 였는데 최근 라이센스 정책이 2021년에 바뀌었습니다. 개인적으로 앞으로 오픈소스 문화가 어떻게 바뀔지 궁금하네요.)




TL;DR - 
파일 비트로 로그를 수집할 수 있고, 메트릭비트로 시스템 성능 데이터 같은 메트릭 데이터를 수집할 수 있고, 패킷비트로 네트워크 관련 데이터를, Wonlogbeat로 이벤트로그를 Heartbeat으로 업타임 데이터를 수집할 수 있다. 비트가 2개 더 있는데 안 써봐서 안 그림. 


* 그리는데 사용한 툴은 이전에 소개한 적이 있습니다. 관심 있으신 분은 아래 링크를 클릭하세요~


- The End - 

Comments