그라파나란 ?
저장된 위치에 상관없이 데이터를 쿼리하고, 시각화하고, 경고하는 유연한 대시보드를 제공한다. 사용자가 원하는 대시보드를 구성하고 다양한 데이터를 통합하여 시스템의 상태를 모니터링 할 수 있게 도와주는 도구이다.
Grafana Labs에서 제공하는 오픈 소스 데이터 시각화 및 모니터링 툴이다. 2014년에 처음 출시할 당시에는 InfluxDB, OpenTSDB, Prometheus와 같은 시계열 데이터베이스를 대상으로 했지만, MySQL, PostgreSQL, MS SQL와 같은 관계형 데이터베이스를 지원하도록 발전되었다.
Grafana는 시간에 따라 변화하는 데이터를 분석하고 시각화하는데 유용하며, 시스템 자원 상태, 서버 성능, 네트워크 트래픽, 애플리케이션 동작 등을 시각화하여 실시간으로 모니터링하고 중요한 메트릭을 추적하는데 사용한다.
오픈소스인 만큼 무료로 사용이 가능하며, Grafana Labs 클라우드 서비스 계정을 통해 판매되는 엔터프라이즈 유료 버전도 제공하고 있다.
➡
최근에는 Grafana Labs에서 LGTM을 밀고 있다. LGTM이란, Loki(로그 수집 저장소), Grafana(시각화), Tempo(분산 추적 저장소, APM), Mimr(시계열 메트릭 저장소) 이다. 보통 시스템 모니터링, 로깅, 애플리케이션 성능 모니터링을 구성하기 위해 여러가지 오픈소스 및 SaaS를 구성하여 사용하는데, 이는 리소스를 확인하기 위해 A를 확인하고, 애플리케이션 로그를 확인하기 위해 B를 확인하고 APM을 확인하기 위해서는 C를 확인해야 한다. 이를 해결하기 위해 LGTM을 밀고 있으며 단일 대시보드에서 조회하고 끝나는게 아니라 3가지(시스템 메트릭, 로그, 분산 트레이싱)를 서로 유기적으로 상호 연결하여 디버깅을 할 수 있도록 밀고 있다고 한다.
그라파나 대시보드를 사용하는 이유
✔ 데이터 중앙 집중화
Grafana 대시보드는 다양한 데이터 소스로부터 데이터를 통합하여 사용자가 한 곳에서 여러 데이터를 쉽게 액세스하고 분석할 수 있도록 도와준다.
✔ 데이터 시각화
사용자는 복잡한 데이터를 시각적으로 표현된 차트, 그래프, 표 등을 통해 쉽게 이해할 수 있도록 변환하여 데이터의 통찰력과 의사 결정을 돕는다.
✔ 실시간 모니터링
중요한 시스템과 서비스를 실시간으로 모니터링하여 성능 지표를 종합적으로 파악하고 문제를 빠르게 식별하고 해결할 수 있도록 한다.
✔ 성능 분석
애플리케이션, 서버, 네트워크의 성능을 분석하여 병목 현상, 대기 시간 등의 성능 이슈를 식별하여 최적화할 수 있도록 돕는다.
✔ 문제 해결
Grafana 대시보드를 통해 전반적인 시스템 동작을 살펴보고 리소스 사용량, 오류 등의 문제를 진단하고 해결하는 데 도움을 준다.
✔ 기록 분석
대시보드를 통해 데이터의 추세를 분석하여 데이터 기반의 결정을 내리고 향후 동작을 예측할 수 있다.
✔ 사용자 친화성
사용자 친화적인 인터페이스를 제공하여 쉽게 대시보드를 구성하고 필요에 따라 커스터마이징할 수 있다.
그라파나의 주요 기능
1. 다양한 패널(대시보드 구성)
- 시계열 그래프 및 차트. 테이블, 계량기, 히트맵 등 다양한 시각화 유형을 제공한다.
- 사용자가 원하는 대시보드를 생성할 수 있다.
- 공식 사이트와 커뮤니티에서 제공하는 대시보드를 가져와 커스텀하여 사용할 수 있다.
2. 다양한 플러그인 지원
- 30가지 이상의 다양한 수집 도구 및 DB들과 연계를 지원한다.
- 플러그인을 통해 더 많은 기능을 확장할 수 있다.
3. 알림 기능
- 인프라 운영 관점에서 굉장히 중요한 시스템 모니터링 및 경고 기능을 제공한다.
- 이는 성능 문제나 상태를 신속하게 파악하고 대응할 수 있다.
4. 그 외
- Transformations 기능을 제공해 이름 명명, 요약, 결합, 집계 등이 가능하다.
- 그래프에 주석을 달 수 있어서 메타데이터와 태그를 표시할 수 있다.
- 변수를 사용하여 동적 대시보드 생성이 가능해서 재사용성과 구성 단순화, 유지 관리 용이성이 좋다.
사용 사례
- 시간에 따라 변화하는 데이터를 분석하고 시각화하는데 유용하다. 예를 들어 네트워크 트래픽 패턴 분석 등이 있다.
- 시스템 자원 상태, 서버 성능, 네트워크 트래픽, 애플리케이션 동작 등을 시각화하여 실시간으로 모니터링하고 중요한 메트릭을 추적하는데 사용한다.
- 기업의 핵심 성과 지표 모니터링 BI 툴, IoT 디바이스 모니터링 및 분석
메트릭과 시계열 데이터 베이스
메트릭(Metric)
메트릭(Metric)은 일반적으로 수치적인 값으로 표현되며, 현재 시스템의 상태를 알 수 있는 측정값이다.
일반적으로 일정 시간 간격으로 수집되어 시간에 따라 변하는 데이터이다.
- 서버의 CPU 사용률, 메모리 사용량, 네트워크 트래픽 등
그리고 컨테이너 인프라 환경에서는 크게 2가지 상태로 메트릭을 구분한다.
- 시스템 메트릭(System Metric)
- 파드 같은 오브젝트에서 측정되는 CPU와 메모리 사용량을 나타냄
- 서비스 메트릭(Service Metric)
- HTTP 상태 코드 같은 서비스 상태를 나타내는 지표
메트릭은 시간별로 데이터가 수집되기에 그 양이 많다. 그래서 외부에 메트릭을 저장하는 DB를 두는데, 대표적으로 프로메테우스(Prometheus)와 함께 많이 쓰인다.
- 메트릭 수집 방식
- Push : 모니터링 주체가 서버에 정보를 보내는 것. CMDB 및 수집 서버 정보가 필요함.
- Pull : 수집 서버 정보를 몰라도 서버에서 필요한 메트릭을 수집하는 방식시계열 데이터베이스(TSDB)
시계열 데이터베이스는 주로 시간을 기반으로 데이터를 저장하고 관리합니다. 이는 시간의 흐름에 따라 발생하는 데이터를 효율적으로 저장하고 쿼리할 수 있도록 최적화된 데이터베이스이다. 예를 들어 네트워크 흐름을 파악하기 위한 패킷 데이터, IoT 센서로부터 수집된 센서 값, 시스템 로그 등이 시계열 데이터베이스에 저장된다.
Grafana와 같은 모니터링 도구는 이러한 시계열 데이터베이스를 통해 메트릭 데이터를 시각화하고 분석하여 시스템 및 서비스의 상태를 모니터링하고, 문제를 신속하게 식별하고 해결할 수 있도록 도와준다.
Grafana는 주로 InfluxDB, Prometheus, Graphite를 백엔드로 사용한다.
💡 TSDB 종류 : Prometheus, InfluxDB, OpenTSDB, Graphite, VictoriaMetrics,TimescaleDB
프로메테우스(Prometheus)
사운드 클라우드에서 자사 서비스의 모니터링을 위해 개발한 도구. 현재는 오픈소스로 운영되고 있다.
일정시간 간격으로 App에 접근하여 메트릭 데이터를 수집한다. 중앙 서버에서 에이전트의 데이터를 수집하는 풀(Pull) 방식을 사용한다.
PromQL 이라는 쿼리 언어를 사용하여 데이터를 쿼리하고 시각화 할 수 있다.
시각화에 특화되어 있지 않기 때문에 프로메테우스 DB에 원격으로 쿼리를 날려 데이터를 가져와 그라파나(Grafana)를 이용해 시각화 한다.
출처: https://prometheus.io/docs/introduction/overview/#architecture
클라우드 네이티브 환경에 적합하며, 쿠버네티스 클러스터의 모니터링에 용이하다.
- 쿠버네티스 환경에서 설치된 에이전트를 통해 노드와 컨테이너 상태를 모두 수집해 모니터링 가능
InfluxDB
2013년 인플럭스데이터(InFluxdata)에서 개발한 시계열 데이터베이스이다.
인플럭스DB는 push 기반 시스템으로 주기적으로 데이터를 수집하여 서버에 직접 전송한다.
데이터 쓰기 및 읽기 성능을 최적화하여 대규모 시계열 데이터를 효율적으로 저장하고 분석할 수 있다.
간단한 구성으로 데이터를 받아오는 프로메테우스보다 상대적으로 구성이 어렵다는 단점이 존재한다.
그라파나 설치
- 초기 ID / Password : admin / admin
- 기본 Port : 3000
- Windows, macOS, Linux 등 다양한 운영체제를 지원
✔ windows 환경
바이너리 파일을 다운받아 설치 완료 후 www.localhost:3000 로 접속하면 브라우저에서 그라파나를 사용할 수 있다.
✔ Docker 환경
grafana/grafana - Docker Hub 도커를 사용하면 그라파나에서 제공하는 공식 이미지를 통해 그라파나를 바로 실행할 수 있다.
- Docker 실행 방법에 대한 추가 문서 http://docs.grafana.org/installation/docker/
$ docker run -d -p 3000:3000 grafana/grafana
정리
- 그라파나는 다양한 데이터들을 시스템 운영환경에 적합한 중앙 모니터링 시스템을 구축할 수 있다.
- 그라파나는 다양한 기능과 옵션이 존재해서 원하는 대시보드를 구성할 수 있다.
- 처음에는 모든 기능을 활용하기 어려움이 존재하지만, 공식 가이드와 온라인 자료, 커뮤니티를 적극적으로 활용하면 빠르게 사용법을 학습할 수 있다.
- 대시보드를 구성하는 것이 어렵다면 샘플 대시보드나 사용자들이 공유한 대시보드를 통해 확장하거나 커스터마이징하여 사용자가 원하는 모니터링 시스템을 구축할 수 있다.