Grafana에서 CPU 사용률 시각화하는 쿼리 구성하는 과정

Category
log-central
Status
Published
Tags
Grafana
Description
Published
Slug
 

Elasticsearch에 저장된 Metricbeat 데이터를 기반으로
내 컴퓨터의 평균 CPU 사용률(system.cpu.total.norm.pct)
시간 축으로 시각화하는 라인 그래프 생성

전제 조건

  • Metricbeat는 내 PC에서 정상 작동 중
  • host.name = book-~~인 데이터가 Elasticsearch에 저장됨
  • 필드 system.cpu.total.norm.pct도 존재함
  • Grafana는 .ds-metricbeat-* 인덱스를 데이터 소스로 사용 중

 

전체 구성 절차 (실제 쿼리 설정)

1. 패널 만들기

  1. 대시보드 → + Add panel
  1. 새로운 시각화 패널이 생성됨

1. 쿼리 타입 설정

  • Query Type: Metrics 탭 그대로 사용 (→ 시계열 집계 쿼리를 만들기 위한 모드)
 

2. Lucene Query 입력

특정 PC에서 수집된 데이터만 보이게 하려면 필터 조건을 걸어야 함
host.name:"book-~~"
항목
설명
host.name
Metricbeat가 전송한 시스템의 이름 필드
"book-~~"
내 PC 이름 (정확히 일치해야 함)
Lucene 문법
: 뒤에 값은 "따옴표"로 감싸야 정확하게 동작함
조건
결과
Lucene Query 없음
모든 PC의 Metricbeat 데이터가 함께 출력됨
host.name:"book-~~" 있음
오직 내 PC에서 수집된 데이터만 보여줌
 

3. Metric (1) 수정

기본값은 Count로 되어 있음 → 클릭해서 수정
  1. Aggregation: Average (→ 평균값 계산)
  1. Field: system.cpu.total.norm.pct
이 설정은 "CPU 사용률 평균값"을 시계열로 표시하게 함
norm.pct는 CPU 사용률을 0~1 사이 값으로 제공하며,
0.012 = 1.2%, 0.5 = 50%, 1.0 = 100%
 

3. Group by 설정

기본적으로 아래처럼 구성되어 있음
Group By: Date Histogram > @timestamp > Interval: auto
이건 시계열 그래프의 핵심 설정
항목
설명
Date Histogram
X축을 시간 축으로 설정
@timestamp
수집된 Metricbeat 문서의 타임스탬프
Interval: auto
적절한 시간 간격 자동 설정 (예: 10s, 1m 등)
 
Group by > Terms > host.name를 상단에 추가하면,
컴퓨터마다의 값이 나오게 되는데, 해당 부분을 빼놓으면,
Metric을 group by 없이 평균만 한 상태라서
→ 결과가 전체 평균 1줄로 나옴
notion image
 
결과 화면
notion image