[5월 월간브리핑] 서비스 운영관리에 필수적인 성능관리 오픈소스 솔루션
-
다양한 사업 분야에서 활용하고 있는 성능관리(APM)
-
APM은 현재 많은 기업에서 사용되고 있으며, 특히 클라우드 네이티브 애플리케이션과 마이크로서비스
-
아키텍처를 사용하는 기업에서 APM을 적극적으로 활용하고 있음.
-
성능관리(APM) 오픈소스 솔루션의 각 특징
-
프로메테우스, 스카우터 등 여러 솔루션의 구조, 플러그인, 라이선스 등을 고려하여 목적에 맞게
-
선택하여 활용할 수 있음
□ 최근 클라우드 네이티브 애플리케이션과 마이크로서비스 아키텍처를 사용하는 기업이 증가함에 따라 APM의 필요성이 더욱 커짐. APM 오픈소스 솔루션은 많은 기업들이 애플리케이션 성능 모니터링과 분석을 위해 사용하고 있으며 다양한 기능을 제공함으로써 비즈니스 목표를 달성하는 데 필요한 정보 또는 문제가 발생했을 때 신속한 대응을 가능하게 함.
◎ 성능관리(APM) 오픈소스 솔루션은 IT서비스를 안정적으로 제공하기 위해 필요하며, APM 제품을 활용하여 빠르고 정확한 문제 해결이 가능함. 애플리케이션이 정상적인지 아닌지 확인하기 위해서는 APM(Application Performance Management)이 필요함
- IT 서비스를 안정적으로 제공하기 위해선 인프라에서부터 애플리케이션까지 안정성이 가장 중요함. 이 때문에 시스템을 관찰하여 개선해 나가야 함. 실제 서비스 환경은 여러 단계에 걸쳐 복잡하게 구성되어 있으므로, 전체의 구조를 파악하고 모니터링이 가능해야 어떤 구간에서 장애가 발생했으며 어떤 조치가 필요한지를 파악할 수 있음.
- 하지만 일반적으로 자신의 전문 분야 이외의 분야는 자세히 알지 못하기 때문에, 정확한 장애 원인 파악 및 해결 조치가 어려움. APM은 이러한 문제를 해결하기에 유용한 애플리케이션 모니터링 툴임. APM 오픈소스 솔루션을 사용하면 애플리케이션의 성능 문제를 미리 예방할 수 있으며, 성능 향상에 필요한 작업을 수행할 수 있음. 또한, 애플리케이션 사용자들의 경험을 개선하고, 사용자들이 애플리케이션을 사용하는 데 어려움을 겪지 않도록 도와줌.
- 개발자와 운영자 시점에서 APM이 필요한 이유에 약간 차이가 있음. 개발자는 자신이 만든 코드 중, 어느 것이 어떻게 느린지 파악하기 위해서, 운영자는 서버가 정상 작동 중인지 또는 서비스에 장애 발생 시 디스크, 네트워크, 애플리케이션 등 어느 부분이 문제인지 파악하기 위해서 APM이 필요함.
- 오픈소스 기반 인프라는 개방형 플랫폼으로서 커스터마이즈가 가능하여 시스템의 유연성을 확보할 수 있고 저비용으로 고효율 인프라를 운영할 수 있다는 장점뿐만 아니라 커뮤니티를 통해 정보 교류가 가능하다는 장점 등 여러 장점을 갖고 있기 때문에 다양한 산업 분야에서 도입이 가속화되는 추세임.
- APM 오픈소스 솔루션을 사용하면 개발자나 운영팀이 애플리케이션의 문제를 해결하는 데 도움이 되는 데이터를 제공하며 이는 기업에서 성능을 지속적으로 개선하고, 비즈니스 성과를 향상시키는데 큰 역할을 함. 클라우드 네이티브 애플리케이션의 증가와 함께 Prometheus, Grafana 등의 오픈소스 APM 툴이 앞으로 더욱 더 중요한 역할을 할 것으로 예상됨.
□ 웹/앱 서비스 운영에 필수적인 도구인 성능관리(APM) 오픈소스 솔루션의 각 특징
◎ 프로메테우스(Prometheus)
- 프로메테우스는 그리스 신화에서 불을 인간에게 주고 문명을 선사한 신의 이름을 인용하였고, 그 의미 그대로 개발자의 예지력과 지성을 상승시켜주는 APM 툴임.
- Go 언어로 개발되었고, Apache License v2.0를 따름.
- 대부분의 모니터링 시스템은 메트릭을 수집할 때 대상서버에서 중앙서버로 데이터를 전송해주는 Push 구조로 되어있지만, 프로메테우스는 메트릭을 중앙서버에서 대상서버로 Pull하여 가져오는 구조로 되어있음. 모니터링 대상서버에서 만약 부하가 높은 상황일 때 메트릭 정보를 전송하고자 한다면 이는 실제 어플리케이션에 문제를 발생시킬 수 있는 포인트가 될 수 있기 때문에 부하를 낮출 수 있도록 이와 같은 구조로 설계됨. 모니터링을 하는 주체가 원할 때만 가져갈 수 있도록 할 수 있어 대상서버의 부하 부담을 줄여줄 수 있는 점이 프로메테우스의 가장 큰 특징임.
프로메테우스의 구조
출처 : https://onestone-note.tistory.com/147
- Docker 모니터링 용도로 많이 사용되며, Docker 확대와 함께 앞으로가 기대되는 제품임. 모니터링 중 문제 발생 시 이를 알람으로 보내주는 기능을 살펴보면, 프로메테우스는 다른 제품과는 달리 알림 시스템이 분리되어 있어 Alertmanager를 통해 알림 시스템을 조정할 수 있음.
- Go / Java / Ruby / Python으로 작성된 클라이언트 라이브러리를 GihHub에서 다운로드 가능함. 또한 Prometheus는 다양한 사용자들이 함께 개발하고 유지보수하는 커뮤니티가 존재하며 이를 통해 사용자들은 서로 정보를 공유하고, 문제를 해결하는데 도움을 받을 수 있음.
◎ 스카우터 (SCOUTER)
- 스카우터는 LG CNS에서 만들어 공개한 오픈소스이기 때문에 한글을 지원하며, JVM(WAS, Standalone application)을 사용하는 어플리케이션 및 OS 자원에 대한 모니터링 기능을 제공함. 기본적인 사용방법이 간단하다는 장점이 있음.
- 한국 개발자들이 주축으로 개발한 오픈소스 APM 솔루션의 성격으로, 한국어 자료가 많아 이해하기 쉽고, 커뮤니티 또한 페이스북 그룹의 경우 스카우터 개발자들이 직접 답글을 달아주는 등 소통이 활발함.
- 웹 기반이 아닌 이클립스 기반의 애플리케이션 클라이언트이므로 빠른 반응속도를 통한 실시간 모니터링에 적합하며, 제공되는 공식 플러그인을 활용하여 다양한 기능을 추가적으로 사용할 수 있음.
- 현재 스카우터는 자바 어플리케이션(Tomcat, JBoss, Resin)을 대상으로 성능 수집이 가능함. 또한 다양한 운영체제(Linux, Windows, Unix)에 대한 성능 모니터링도 제공하여 어떤 임계치에 도달했을 때 UI에서 어떤 PC에 문제가 생겼는지 알려줌.
- 스카우터를 사용하기 위해서는 모니터링 대상 시스템과 같은 내부망에 수집 서버를 설치해야 함. 설치형 모니터링 솔루션은 보다 상세한 데이터를 수집할 수 있어 분석이 효율적임.
- Apache License v2.0를 따르며, 타겟 시스템에 대한 개별 요청을 추적하고, 진행중인 스택 덤프를 분석하는 등의 특징이 있음.
- 스카우터 기능 전반에 기업 관리자에게 적합한 기능이 더해진 업그레이드 버전인 스카우터엑스는 설치에서 구성, 세션 클러스터링, 로그분석 및 모니터링까지 모든 과정을 웹UI로 관리할 수 있으며, 스카우터 자동 설치 및 확장, 미들웨어 통합 관리 기능을 제공함.
스카우터의 구성
출처 : 스카우터 깃허브
- 스카우터는 에이전트(Agent), 수집기(Collector), 클라이언트(Client)로 크게 세 부분으로 구성되어 있음. 에이전트는 자료 및 지표들을 수집기로 보내는 역할을 하며, 호스트에이전트와 자바에이전트로 나뉨. 수집기는 에이전트에서 받은 지표들을 모아서 저장하며 클라이언트에서 요청하면 수집한 데이터를 내려줌. 클라이언트는 수집기를 통해 지표들을 받아서 그래프로 표현하고, 특정 조건을 걸어서 알림을 받을 수도 있음.
◎ 무닌(MUNIN)
- 시스템 리소스 사용량을 모니터링 하는 것에 초점을 맞춘 오픈소스 모니터링 제품이며, C와 Perl로 개발된 중앙 관리 서버(Master)와 클라이언트 에이전트(Node)의 형태로 구성되어 있음. Master는 Debian/Red Hat 계열의 Linux와 FreeBSD/Solaris 환경을 지원하고, Node는 AIX/HP-UX/Mac OS X/Windows에서 작동 가능함. 프레임워크는 Perl로 작성되지만 플러그인은 모든 언어로 작성 가능하다는 특징이 있음.
- CPU/메모리/디스크/네트워크 등의 자원 정보는 Node에 설치된 클라이언트 에이전트에서 기본적으로 설치되는 snmp 플러그인을 실행하여 검색하고 그래프로 표시됨. httpd와 RDB 등 사용 빈도가 높은 서비스에 대한 모니터링은 기본 플러그인으로 제공되며, 제공되지 않는 모니터링을 수행하기 위해서는 플러그인을 추가할 수 있고, 무닌은 GPL v2의 라이센스를 따름.
- Munin은 그래프와 차트를 사용하여 수집된 정보를 시각화하여 제공함. 이를 통해 시스템의 상태를 한눈에 파악할 수 있으며, 시스템의 성능 변화를 추적하고 분석할 수 있음. 그래프와 차트를 통해 성능 이슈를 신속하게 발견하고, 시스템의 운영 상태를 모니터링하는 데 유용함.
- 노드 수가 증가하는 경우, 응답의 악화가 보고되기 때문에 설정 및 관련 소프트웨어의 변경 등의 조정이 필요하며 사활 감시 기능으로 사용하는 경우 모니터링 솔루션인 Nagios와 연계시켜 사용 가능함. Nagios와 연계하면 Munin에서 수집한 정보를 기반으로 서비스나 시스템의 상태를 감시할 수 있으며, 이를 통해 예상치 못한 문제를 신속하게 대응할 수 있음. 따라서, Munin을 사용할 때는 Nagios와 같은 다른 모니터링 솔루션과의 연계하여 사용하는 것을 고려할 필요가 있음.
◎ InfluxDB
- InfluxDB는 대표적인 TSDB중 하나로 사용하기 쉽고 인기가 많으며 지속적으로 업데이트가 되고 있음, 다양한 플러그인과 툴을 제공하며 InfluxDB Cloud도 사용가능함.
* 시계열 데이터베이스(TSDB) : 시계열 데이터를 효율적으로 다루기 위해 고안된 데이터 베이스로 '하나 이상의 시간'과 '하나 이상의 값' 쌍을 통해 시계열을 저장하고 서비스하는데 최적화된 소프트웨어 시스템
* 시계열 데이터 : 시간에 흐름에 따라 발생하는 데이터로 온도, 풍향 같은 기후 데이터나 주가 데이터 등을 뜻함.
- Go 언어로 개발된 오픈소스 시계열 데이터베이스(time-series)이며, SQL쿼리 언어로 시계열 분석을 지원함. 2013 Open Source Rookies에 선정되어 주목받는 APM 제품임. Grafana, CollectD, Sensu, cAdvisor를 함께 사용하여 DevOps 환경을 보다 편리하게 구축할 수 있음. 제품뿐만 아니라 기술지원 서브스크립션을 판매하고 있으며, MIT License를 따름. 또한, 클라우드 서비스로도 제공되어 사용자가 자신의 데이터를 관리할 수 있음.
- Tick Stack의 필수 컴포넌트 중 하나로 InfluxData에서 나온 4가지 오픈소스 컴포넌트들을 기반으로 구축한 시스템을 말하며 InfluxDB는 가장 유명하고, 많이 사용되는 TSDB 임.
* 4가지 오픈소스 컴포넌트로는 Telegraf: Metrics와 Events를 수집하고 리포팅하는 모듈
InfluxDB: Time Series DB(시계열 데이터베이스), Kapacitor: Real-time 스트리밍 데이터 전송 엔진, Chronograf: 시각화 도구를 뜻함.
Tick Stack
출처:https://datamoney.tistory.com/287
- InfluxDB는 두가지 핵심기능이 있음. 일정 주기마다 데이터를 처리하여 새롭게 저장하는 기능과 일정 주기마다 데이터를 자동으로 삭제하는 기능을 가지고 있으며 이러한 두가지 핵심 기능은 대량으로 쌓이는 시계열 데이터를 보다 편리하게 처리할 수 있도록 제공하고 있음.
- Influx DB는 시간에 따른 데이터의 삽입과 조회이므로 직접 Delete를 이용하는 경우는 거의 없으나 데이터가 계속해서 쌓이면 저장 공간 및 처리 속도 등에 문제가 생기므로 데이터를 자동으로 삭제해주는 Retention Policy(보존 정책)를 지원하고 있음.
* Retention Policy란 오래된 데이터를 자동으로 삭제해주는 정책으로써 데이터베이스 단위로 정의되며 일반적으로 1개의 데이터베이스는 여러 개의 보존 정책을 가지고 있음.
- 만약 별도의 설정을 하지 않았다면 autogen이라는 기본 정책으로 적용되며 autogen은 보존 기간이 무제한이므로, 별도의 설정을 해주지 않으면 데이터가 계속해서 쌓이고 문제를 일으키게 됨. 그러므로 별도의 설정을 해줌으로써 오래된 데이터들을 관리하는 작업이 필요함.
◎ ZABBIX
- Zabbix는 Alexei Vladishev에 의해 만들어진 네트워크 및 애플리케이션에 대한 엔터프라이즈형 오픈소스 모니터링 솔루션으로 다양한 네트워크 서비스, 서버, 네트워크 하드웨어의 상태를 감시하고 추적할 수 있도록 설계됨.
-Zabbix는 대표적인 모니터링 도구로서 전 세계 여러 사이트에서 애용되고 있으며 우리나라에서도 사용률이 점차 증가하고 있음. Zabbix 웹프론트엔드는 한글화를 지원하며 쉽게 메뉴 수정이 가능함. 수많은 서버와 네트워크 장비에 바로 사용할 수 있는 플러그인이 존재하며, 대시보드를 이용한 실시간 시각화를 지원함. Grafana 등의 유명한 시각화 프론트엔드를 연계하여 화려한 시각화를 구현할 수 있음.
Grafana를 연계한 모니터링 시각화
출처: https://dataonair.or.kr
- Zabbix는 각종 서비스, 클라우드, 컨테이너, 가상머신, 하드웨어, 데이터베이스, 애플리케이션 등의 모니터링이 가능하며 이를 위해 측정값수집, 오류탐지, 시각화, 통보 및 치료, 보안 및 인증, 자동탐색, 분산모니터링, 외부연계 API 등의 기능을 지원함.
- Hadoop의 Flume과 유사한 정보수집 에이전트가 있으며, 이를 이용하여 원격실행, 서버별 데이터 수집이 가능하며 분산처리를 지원하여 수천 대의 호스트도 문제없이 실시간으로 모니터링과 이벤트 탐지, 통보를 수행함. 다른 상용 모니터링 시스템과 견주어 보아도 Zabbix는 안정적이며, 기간별 조회 속도 등의 성능이 뛰어남
Zabbix의 모니터링 영역
출처: https://dataonair.or.kr
- Zabbix의 핵심적인 기능은 Zabbix 서버 프로세스와 에이전트 프로세스에서 지원됨. 사용자 설정 및 이벤트 등록은 웹프론트엔드에서 이루어지며 이러한 프로세스의 실행을 위해 전용 Zabbix 서버가 필요함. 윈도우 상에서 WSL이나 Docker 등의 가상화를 이용하여 수행할 수 있음. CentOS, Ubuntu 등의 여러 리눅스 배포판을 위한 패키지로 설치할 수 있고 공개된 소스를 이용하여 유닉스 계열 서버에서도 직접 컴파일하여 설치할 수 있음. 특히 에이전트는 거의 모든 장치 및 OS를 지원하며, 지원되지 않더라도 스크립트 등의 커스터마이징된 프로세스를 이용하여 Zabbix 서버로 전송이 가능함. 단순 프로세스에 대한 모니터링뿐만 아니라 기업 내의 모든 비즈니스 프로세스 모니터링 통합, 외부기관과의 연계 상황, 라우터/스위치/방화벽 등의 거의 모든 네트워크 장치, 전체 OS 상태와 같이 원한다면 모든 것을 감시할 수 있음.
-모니터링 기능 중에서 사용자 통보는 장애예방과 장애시간 최소화를 위해 매우 중요함. Zabbix는 화면에 알람을 표시하는 것만이 아닌 장치별, 프로세스별, OS별 등으로 담당자를 지정하여 이벤트 전송이 가능하며 전송 매체도 카카오, 라인 등의 SNS 메시징 서비스를 연계할 수 있음.
-인프라 담당자에게는 서버의 안정적인 운영을, 애플리케이션 운영 담당자에게는 배치처리 및 프로세스 정합성을, DBA 에게는 DBMS의 상태점검 및 부하상황을, 빅데이터 담당자에게는 자료수집 및 분석현황을, 경영진에게는 직관적 시각화를 지원해 줄 수 있는 Zabbix는 훌륭한 오픈소스 모니터링 도구임. 오픈소스 모니터링 도구에는 이외에도 Nagios, WhaTap, Cacti, Zenoss 등이 존재하지만 무궁무진한 확장성을 가진 Zabbix는 최소의 비용으로 최대의 신뢰성과 안정성을 이끌어 낼 수 있는 완벽한 오픈소스 모니터링 도구라고 소개할 수 있음.
□ 맺음말
- 최근 개발 현장에서 APM의 필요성이 대두되면서, 오픈소스 APM 솔루션들도 인기를 얻고 있음. 이는 상용 APM 솔루션과 비교해 저렴한 비용으로 성능 모니터링을 가능케 하며, 커스터마이징이 자유롭기 때문임. 따라서, 오픈소스 APM의 성장은 계속될 것으로 보이며, 이에 따라 활용 범위도 더욱 확대될 것으로 예상됨.
- APM은 기존에 수작업으로 이뤄졌던 성능 모니터링 작업을 자동화함으로써 업무 효율성을 높이는 장점을 가지고 있음. 이러한 자동화 기술은 머신러닝, 딥러닝과 같은 AI 기술과 결합될 가능성이 크며, 이를 통해 더욱 정확한 예측과 대처가 가능해질 것으로 예상됨.
※ 출처
1)http://www.opennaru.com/apm/%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81/
2)https://www.openmaru.io/apm-applicaion-performance-management/
3)https://www.itworld.co.kr/news/142188
4)https://heeestorys.tistory.com/955
5)https://onestone-note.tistory.com/147
6)https://blog.outsider.ne.kr/1255
7)https://blog.outsider.ne.kr/1254
8)https://chanchan-father.tistory.com/3
9)https://www.datanet.co.kr/news/articleView.html?idxno=107637
10)https://team-platform.tistory.com/14
11)https://munin-monitoring.org/
12)https://dataonair.or.kr/db-tech-reference/d-story/data-story/?mod=document&uid=62831
13)https://dataonair.or.kr/db-tech-reference/d-story/data-story/?mod=document&uid=62831
번호 | 제목 | 작성자 | 조회수 | 작성 |
---|---|---|---|---|
공지 | [2024년] 오픈소스SW 라이선스 가이드 개정판 발간 file | support | 7235 | 2024-01-03 |
공지 | [2024년] 기업 오픈소스SW 거버넌스 가이드 개정판 발간 file | support | 5629 | 2024-01-03 |
공지 | [2024년] 공공 오픈소스SW 거버넌스 가이드 개정판 발간 file | support | 5587 | 2024-01-03 |
공지 | 공개 소프트웨어 연구개발(R&D) 실무 가이드라인 배포 file | support | 18179 | 2022-07-28 |
공지 | 공개소프트웨어 연구개발 수행 가이드라인 file | OSS | 16897 | 2018-04-26 |
454 | [5월 월간브리핑] 서비스 운영관리에 필수적인 성능관리 오픈소스 솔루션 | support | 1788 | 2023-05-25 |
453 | [기획] 암호화폐와는 다른 오픈소스 NFT의 잠재력과 가능성 | support | 5920 | 2023-04-24 |
452 | [기획기사] NFT 업계의 오픈소스 활용 | support | 2209 | 2023-04-24 |
451 | [4월 월간브리핑] 오픈소스 NFT 최근 산업 동향 | support | 6574 | 2023-04-24 |
450 | [기획] 3D 프린팅을 위한 오픈소스 소프트웨어 | support | 3878 | 2023-03-27 |
449 | [기획기사] 3D 프린터의 보안 위협과 오픈소스 해결책 | support | 1566 | 2023-03-27 |
448 | [3월 월간브리핑] 3D 프린팅의 흐름을 바꾼 오픈소스 프로젝트 | support | 6303 | 2023-03-27 |
447 | [기획] OpenAI-ChatGPT의 오픈소스 대안 | support | 8074 | 2023-02-20 |
446 | [기획기사] 최근 자연어 처리 (NLP) 오픈소스 기술 현황 | support | 7762 | 2023-02-20 |
445 | [2월 월간 브리핑] 한국어 자연어 처리(NLP) 오픈소스 프로젝트 | support | 11939 | 2023-02-20 |
0개 댓글