한 줄 요약
Grafana와 Kibana는 모두 뛰어난 오픈소스 시각화 도구이다. "어느 쪽이 더 좋은가"가 아니라 "내 데이터가 무엇이고, 무엇을 보고 싶은가"로 접근하는 것이 맞다. 시계열 메트릭이라면 Grafana, Elasticsearch에 담긴 로그와 텍스트라면 Kibana가 기본 선택지다.
Grafana는 시계열(time-series) 데이터를 시각화하고 인프라를 모니터링하는 데 더 적합하고, Kibana는 Elasticsearch에 저장된 데이터를 검색·탐색·분석하는 데 더 적합하다. 특히 로그(log) 분석의 영역에서는 Kibana가, 메트릭(metric) 모니터링의 영역에서는 Grafana가 전통적인 강자로 자리매김해 왔다.
1. Kibana — Elastic(ELK) Stack의 "K"
Kibana는 Elasticsearch와 함께 사용하는 시각화·분석 도구로, Elastic(ELK) Stack의 일부이며 ELK의 K에 위치한다. (E=Elasticsearch, L=Logstash, K=Kibana)
Kibana의 핵심 기능은 데이터 쿼리와 분석이다. 사용자는 다양한 방법으로 Elasticsearch에 인덱싱된 데이터를 검색하여 근본 원인 분석(RCA, Root Cause Analysis)이나 진단을 위한 특정 이벤트나 문자열을 찾을 수 있다. 이렇게 쿼리한 결과를 차트, 테이블, 지리 지도(geo map) 등 다양한 시각화로 표현할 수 있다.
Kibana가 제공하는 주요 기능
- Discover: 원시 로그를 인덱스 단위로 탐색하고 필터링
- Visualize / Lens: 드래그 앤 드롭 방식의 시각화 편집기
- Dashboard: 여러 시각화를 조합한 대시보드
- Canvas: 프리젠테이션형 데이터 시각화
- Maps: 지리 정보 시각화
- Machine Learning (X-Pack): 이상 탐지(anomaly detection), 예측(forecasting)
- APM, SIEM, Uptime: Observability와 보안 영역의 전문 앱
쿼리 언어
Kibana는 KQL(Kibana Query Language), Lucene, 그리고 Elasticsearch의 쿼리 DSL(JSON 기반)을 지원한다. 텍스트 기반 풀텍스트 검색(full-text search)이 매우 강력하다.
2. Grafana — 범용 시각화·모니터링 플랫폼
Grafana는 다양한 종류의 데이터 소스로부터 데이터를 가져올 수 있으며, 특히 시계열 데이터에 최적화되어 있다. Prometheus, Graphite, InfluxDB, Elasticsearch, Loki, MySQL, PostgreSQL, CloudWatch, Tempo 등 수많은 데이터 소스와 통합하여 시계열 데이터를 시각화하고 모니터링할 수 있다.
Grafana는 특정 스토리지에 종속되지 않고 "데이터 소스 플러그인"을 통해 거의 모든 데이터 유형을 지원한다는 것이 가장 큰 특징이다.
Grafana가 제공하는 주요 기능
- Dashboard & Panel: 드래그 앤 드롭 기반 대시보드
- 다양한 시각화 패널: Graph, Gauge, Heatmap, Histogram, Stat, Bar chart, Geomap 등
- Templating & Variables: 변수 기반의 동적 대시보드 (환경/서비스별로 같은 대시보드를 재활용)
- Alerting: 내장 알림 엔진
- Annotations: 대시보드에 이벤트 표시
- Explore: 즉석 쿼리 및 로그 탐색 모드
- 풍부한 플러그인 생태계
3. 주요 차이점
3-1. 주된 용도가 다르다: Logs vs Metrics
| 구분 | Kibana | Grafana |
|---|---|---|
| 핵심 데이터 유형 | 로그, 텍스트, 이벤트 | 시계열 메트릭 |
| 주된 용도 | 로그 분석, 검색, 보안 분석, 디버깅 | 인프라 모니터링, APM, 대시보드 |
| 대표 사용자 | SecOps, 개발자, DevOps | SRE, DevOps, 인프라 엔지니어 |
예를 들어 DevOps 팀이 여러 서비스에 걸쳐 로그 항목을 검색·분석하며 애플리케이션 오류를 트러블슈팅할 때는 Kibana를, SRE 팀이 Kubernetes 클러스터의 CPU·메모리·네트워크 사용량을 모니터링하면서 리소스 경고를 받아야 할 때는 Grafana를 사용하는 것이 전형적인 시나리오다.
3-2. 텍스트 기반 쿼리와 시각화
Grafana의 중요한 제약 중 하나는 텍스트 기반 쿼리/시각화에 약하다는 것이다. Grafana는 CPU, RAM, Network In/Out 같은 메트릭에 대해 매우 훌륭한 그래프를 생성할 수 있지만, 텍스트 그래프나 풀텍스트 검색 기반 시각화는 거의 불가능하다. 완전히 불가능한 것은 아니지만 매우 제한적이다.
반면 Kibana는 텍스트 데이터를 시각화하고 풀텍스트 검색을 수행하는 데 탁월하다. 따라서 텍스트 기반 정보를 쿼리하고 특정 매개변수를 기반으로 정보를 찾으려면 Kibana가 더 나은 선택이다.
참고로, Grafana에서도 Loki를 로그 소스로 붙이면 로그 탐색이 어느 정도 가능하지만, Elasticsearch와 Grafana 조합은 Elasticsearch와 Kibana 조합처럼 키워드 검색이나 정밀한 검색어로 로그를 검색하는 것이 불가능하다. 이 시나리오에서 Elasticsearch를 Loki로 대체하면 그러한 기준으로 로그 검색이 가능해진다.
3-3. Alerting — ⚠️ 최신 버전(2021년 2월 이후)에서 바뀐 부분
여기에 대한 정보가 과거 블로그 글들에 여전히 오래된 내용으로 남아있는 경우가 많다.
과거 (Kibana 7.10 이전)
Kibana에서는 Alerting을 사용자가 스스로 설정할 수 없었다. Kibana에 알림을 추가하려면 Logz.io와 같은 호스팅 ELK Stack을 선택하거나, ElastAlert를 구현하거나, X-Pack(유료)을 사용해야 했다.
현재 (Kibana 7.11+, 2021년 2월 이후)
Kibana 7.11에서 Elastic Stack의 알림 기능이 정식 GA(Generally Available)로 출시되었고, Microsoft Teams용 새로운 커넥터도 추가되었다. 이제 Kibana에서도 UI 기반으로 알림 규칙(Rule)을 생성하고, email·Slack·PagerDuty·ServiceNow·Jira·Microsoft Teams·Webhook 등 다양한 채널로 알림을 보낼 수 있다.
그럼에도 여전히 남아있는 차이점: - Grafana는 무료 버전에서도 더 강력한 기본 알림 기능을 제공하는 반면, Kibana의 고급 알림은 보통 Elasticsearch의 유료 기능을 필요로 한다. - Grafana의 알림은 어떤 데이터 소스에서든 동작한다 (Prometheus, MySQL, InfluxDB 등 모두 가능). - Kibana의 알림은 기본적으로 Elasticsearch 데이터에 한정된다. - Kibana 무료 버전은 연결 가능한 알림 커넥터가 제한적이다(주로 email, index, server log). Slack, PagerDuty 등 상당수의 외부 커넥터는 구독(subscription)이 필요하다.
따라서 "Kibana는 Alerting을 스스로 설정할 수 없다"는 명제는 오늘날 사실이 아니며, 정확히는 "Kibana도 이제 내장 Alerting을 제공하지만, 고급 기능과 다수의 외부 연동은 유료이며 여전히 Grafana가 이 영역에서 더 범용적·개방적"이라고 표현하는 것이 맞다.
3-4. 데이터 소스
Kibana는 Elasticsearch 전용이다. 이것이 Kibana의 강점이자 한계다. Elasticsearch에 저장된 데이터만 시각화할 수 있다는 것은 곧 모든 데이터를 Elasticsearch에 색인시켜야 한다는 의미다.
Grafana는 앞서 말한 대로 멀티 데이터 소스를 지원한다. 하나의 대시보드에서 Prometheus의 메트릭, Loki의 로그, Elasticsearch의 색인 데이터를 동시에 시각화하는 "단일 유리판(single pane of glass)" 대시보드를 구성할 수 있다.
3-5. 설치와 학습 곡선
Grafana - Docker로 10분 이내에 설정 가능 - 드래그 앤 드롭 기반 UI로 직관적 - 데이터 소스 추가 → 대시보드 생성 → 패널 만들기의 단순한 흐름 - 새로운 사용자도 기본 대시보드는 쉽게 만들 수 있다
Kibana - Elasticsearch에 익숙하지 않은 사용자에게는 학습 곡선이 더 가파르지만, Elastic 생태계 안에서는 직관적이다. - 대부분의 Kibana 기능이 Elasticsearch와 연동되므로 인덱스, 매핑, 쿼리 DSL 등 Elasticsearch에 대한 기본 지식이 필요하다 - Kibana만 독립적으로 설치할 수 없고 Elasticsearch(+선택적으로 Logstash/Beats) 같이 구성해야 한다
3-6. 라이선스 및 비용
| 구분 | Kibana | Grafana |
|---|---|---|
| 라이선스 | Elastic License (Elastic Stack의 일부). 기본 기능은 무료이지만 머신러닝·고급 알림·보안 기능·특정 통합 등 많은 고급 기능은 유료 티어에서만 사용 가능 | 오픈소스 버전은 Apache 2.0 라이선스. 시각화 엔진, 다양한 데이터 소스 지원, 내장 알림 등 대부분의 핵심 기능이 무료 |
| 클라우드 | Elastic Cloud | Grafana Cloud (Free / Pro / Advanced 티어) |
3-7. Machine Learning
- Kibana: X-Pack 기능을 통해 이상 탐지, 예측 등 더 강력한 out-of-the-box 머신러닝 기능을 제공 (단, 유료 구독 필요)
- Grafana: 머신러닝 기능은 일반적으로 플러그인이나 외부 ML 서비스와의 통합을 통해 사용 가능
3-8. 커뮤니티와 플러그인 생태계
- Grafana: 더 다양하고 활발한 커뮤니티 생태계, 광범위한 플러그인 옵션 제공. 공식 플러그인 카탈로그에서 수백 개의 데이터 소스 플러그인, 패널 플러그인, 앱 플러그인을 받을 수 있다.
- Kibana: 강력한 커뮤니티를 갖고 있지만 Elasticsearch 중심의 사용 사례에 더 집중된 편
4. 한눈에 보는 비교표
| 항목 | Kibana | Grafana |
|---|---|---|
| 주요 용도 | 로그/이벤트 검색·분석·시각화 | 메트릭·시계열 모니터링·시각화 |
| 데이터 소스 | Elasticsearch 전용 | 50+ 데이터 소스 (Prometheus, InfluxDB, MySQL, ES, Loki, CloudWatch 등) |
| 풀텍스트 검색 | 매우 강력 (KQL/Lucene/Query DSL) | 제한적 (Loki 연동 시 가능) |
| 시계열 시각화 | 가능 (Lens, TSVB, Timelion) | 최적화됨, 가장 뛰어남 |
| Alerting | 7.11+ GA, 단 고급 기능은 유료 | 무료 버전에도 강력한 내장 Alerting |
| 학습 곡선 | Elasticsearch 지식 필요, 가파른 편 | 완만, 드래그 앤 드롭 중심 |
| 머신러닝 | 내장 (유료) | 플러그인/외부 연동 |
| 라이선스 | Elastic License (일부 유료) | Apache 2.0 (대부분 무료) |
| 설치 | ES와 함께 구성해야 함 | Docker로 10분 |
| 플러그인 생태계 | 제한적 | 매우 풍부 |
5. 언제 무엇을 선택해야 하는가
Kibana를 선택하는 경우 - 이미 Elasticsearch를 사용하고 있거나 ELK 스택을 도입하려는 경우 - 로그 중심 분석, 보안 이벤트 분석(SIEM), 풀텍스트 검색이 주요 요구사항인 경우 - 비구조화 텍스트 데이터에서 특정 문자열/패턴을 추출해야 하는 경우 - APM, Uptime, Security 등 Elastic의 통합 솔루션을 함께 쓰려는 경우
Grafana를 선택하는 경우 - Prometheus, InfluxDB 등 시계열 DB 기반의 인프라/애플리케이션 모니터링이 주 목적인 경우 - 여러 이종 데이터 소스를 하나의 대시보드로 통합하고 싶은 경우 - 무료로 강력한 Alerting을 구축하고 싶은 경우 - DevOps/SRE 팀의 운영 대시보드가 필요한 경우
둘 다 사용하는 경우 (꽤 흔한 패턴)
실제로 많은 조직이 두 도구를 상호 보완적으로 사용한다. Logz.io와 같은 일부 회사는 자신들의 프로덕션 환경을 모니터링하기 위해 Grafana를 Graphite, Prometheus, Elasticsearch와 연결하여 두 도구를 모두 사용한다. 대개 메트릭 모니터링·알림은 Grafana로, 로그 탐색·디버깅은 Kibana로 역할 분담하는 식이다.
