오픈소스(InfluxDB, Grafana, Elastic) 사용 모니터링 대시보드 개발 사례
이번 시간에는 저희 회사에서 다양한 오픈소스를 활용하여 모니터링 대시보드나 보안 관제에 필요한 대시보드를 어떤 방식과 어떤 오픈소스를 조합하여 구성하고 실제 운영시 고려해야할 사항들에 대해서 사례를 통해 소개해 드리는 시간을 갖도록 하겠습니다. 비용이 들어가는 상용 모니터링 솔루션도 많지만, 커스터마이징이 좀 어려운데요. 유연하게 입맛에 맛게 우리 팀이 원하는 방향대로 구축할수 있는 오픈소스 형태의 솔루션으로 구성하는 방법입니다.
모니터링 대시보드 개발시 고려했던 사항들
전체 인프라를 한눈에 관리할 수 있는 통합 모니터링 페이지와 직관적인 대시보드가 필요합니다. 이를 통해 다양한 데이터를 그래프 형태로 시각화하고, 운영자가 원하는 지표를 효율적으로 확인할 수 있어야 합니다.
데이터 시각화 측면에서 많은 오픈소스 모니터링 도구가 존재하지만, 운영자가 특정 지표를 그래프로 시각화하려면 플러그인 미지원, 복잡한 설정, 소스 코드 수정 등의 어려움이 발생합니다. 따라서 보다 유연하고 사용자 친화적인 시각화 기능이 요구됩니다.
오픈소스 활용 고려했던 사항들
- 운영의 안정성, 문제 발생 시 트러블슈팅의 용이성 확보
- 지속적인 업데이트와 커스터마이징 기능 유지
- Apache 2.0, MIT 등 무료 라이선스 사용을 우선시 (과거 비용을 지불한 상업 솔루션 만족도가 낮았음)
- 확장성: 모니터링 대상 노드 수 증가에도 시스템 부하를 효과적으로 처리할 수 있는 구조가 필요합니다.
- 사용자 경험 개선: 트렌드를 반영하여 시계열 데이터베이스와 최신 자바스크립트 기반 GUI 지원을 통해 직관적이고 가시성이 높은 UI를 제공해야 합니다.
- 알림 기능: 실시간 문제 발생 시 다양한 형태의 알림(Notification)과 장애 대응(Alert) 기능을 제공해야 합니다.
- 라이선스 및 기능 제약 해결: 현존하는 다수의 모니터링 솔루션이 노드(Agent) 수에 따라 과금을 요구하거나 핵심 요구 기능을 지원하지 않는 경우가 많아, 이를 타개할 방안이 필요합니다.
Legacy 방식의 모니터링 솔루션의 한계를 최대한 극복 가능하며, RAW 데이터만 확보되면 고객 요구를 95% 이상 충족할 수 있습니다. 이는 커스터마이징 기능과 스크립트 개발을 통해 이루어지며, 지속적인 유지보수도 가능합니다.
INFLUX DATA 오픈소스 개요
TELEGRAF
OS(Linux, Windows)에 설치되는 에이전트로 모니터링 데이터(metric)를 수집하는 역할을 담당합니다. 다양한 플러그인을 선택하거나 추가 및 삭제할 수 있으며, 예를 들어 CPU 정보, Netstat, Nginx 및 MySQL 상태를 모니터링할 수 있습니다. 최소 1초 단위의 데이터 수집이 가능하여 실시간 모니터링이 가능합니다.
INFLUXDB
구글에서 개발한 GO 언어 기반의 분산 시계열 데이터베이스(Time Series Data DB)로, 스키마가 필요 없는 구조입니다. 클러스터링, 샤딩, 스냅샷 기능을 제공하여 높은 가용성과 확장성, 백업 기능을 지원합니다. 기본적으로 데이터를 압축 저장하며(TSM Tree 엔진 사용), REST API를 통해 HTTP 메소드를 활용한 데이터 처리도 가능합니다.
CHRONOGRAF
데이터베이스에 저장된 데이터를 그래프로 시각화하는 도구입니다. 현재 라이선스 정책상 비용이 발생하지 않으며 무료로 사용 가능합니다. 그러나 현재 버전에서는 Grafana보다 기능이 제한적이며 플러그인 지원이 부족해(예: Pie Chart, Table Chart 등) 활용도가 낮은 편입니다.
KAPACITOR
모니터링 기능을 담당하는 데몬으로 TICK 스크립트를 사용하여 데이터베이스에 저장된 데이터를 실시간으로 감시합니다. 특정 임계치 조건 충족 시 알림(alert)을 전송하며, 이메일, 로그 파일, Slack, Alerta, Talk 등의 다양한 통합 방식을 제공합니다.
운영상의 주요 이슈
- 모니터링 서버 리소스 사이징은 중요합니다. 노드 수와 일일 데이터 처리량에 따라 적절한 리소스를 산정해야 합니다.
- 모니터링 데이터(metric)가 증가함에 따라 디스크 용량과 데이터베이스 확장이 가능해야 합니다. 이를 위해 데이터베이스의 클러스터링과 샤딩 기능을 효율적으로 활용해야 합니다.
GRAFANA 오픈소스 소개
다양한 데이터 소스(DB)에 연결하여 실시간 그래프로 데이터를 시각화하는 오픈소스 대시보드입니다. 다음 스크린샷은 저의 팀에서 Grafana 오픈소스를 통해 스토리지 주요 자원 사용량에 대해 모니터링하는 실제 화면입니다.
- 다양한 플러그인을 지원합니다 (예: Table, Pie, Text, Zabbix, Cacti 등).
- 그래프 생성 및 표현 방식이 간단하며, 기본적인 SQL 문법 지식이 필요합니다.
ELK 스택 소개
Elasticsearch
아파치 루씬(Apache Lucene)을 기반으로 한 확장성 높은 Java 기반 분산 검색 엔진입니다.
- Logstash 등 외부에서 수신된 데이터를 저장하는 역할을 합니다.
- JSON 형식의 REST API를 제공합니다.
- 데이터를 INDEX(DB), TYPE(Table), DOCUMENT(Row), FIELD(Column) 구조로 저장합니다.
Logstash
다양한 형태의 시스템 로그를 수집 및 분석하여 ElasticSearch와 같은 대상으로 전송하는 오픈소스 도구입니다.
- 비정형 데이터를 input → filter → output 단계로 효율적으로 처리할 수 있도록 지원합니다.
Kibana
Elasticsearch를 DB로 활용하여 데이터를 다양한 형태의 그래프로 시각화해주는 도구입니다.
- HTML 및 JavaScript 엔진을 기반으로 동작합니다.
운영 이슈
Elasticsearch
- JSON 형식에 대한 높은 이해도가 필요합니다.
- 대용량 데이터를 수집할 경우 인덱싱 성능 조정이 필수적이며, SSD 사용, 인덱스 버퍼 크기 조정 등의 튜닝 작업이 요구됩니다.
- 무료 플러그인도 다양하지만, 실제로 꼭 필요한 고급 기능 플러그인은 유료화된 경우가 많습니다.
Logstash
- 입력과 출력 패턴을 파싱할 때, Logstash의 문법을 숙지해야 효과적으로 활용할 수 있습니다.
Grafana
- SQL 문법에 대한 기본적인 이해가 필요합니다.
현재 저희 회사에서는 본문 내용에서 소개해드린 오픈소스를 활용하여 모니터링 대시보드를 구축하여 지금 까지도 큰 문제 없이 잘 사용중에 있습니다. 큰 비용을 들이지 않고도 조금의 노력만 기울인다면 상용 솔루션을 충분히 대체 할수 있을거라 생각됩니다. 적극적으로 검토해보시고 비용을 줄이시기 바랍니다.
댓글