Grafana CPU 정보 모니터링(ft. InfluxDB)

2026. 5. 27. 13:26Proxmox/Monitoring

 

들어가며.

오늘은 CPU 온도 정보를 함께 확인 및 저장하고 모니터링 툴(Grafana)에 추가하여 시각적으로 확인할 수 있도록 해보려고 한다.

해당 내용은 기존 InfluxDB 및 Grafana를 설치 이후 작업으로 필요시 아래 이전 설치정보를 참고해서 보도록 하자.

📌이전 모니터링 적용 정보는 아래 링크를 통해 확인해 보자.

CPU정보를 확인하여 모니터링하는 것은 다음 네 가지 핵심 구성 요소로 이루어져 있다.

  역할 설치 위치
lm-sensors 시스템의 하드웨어 센서 정보를 읽어오는 도구 Linux OS
Telegraf 센서 정보를 파싱하여 InfluxDB로 전송 Linux OS
InfluxDB 수집된 시계열 데이터를 저장하는 백엔드 별도의 서버 (또는 같은 서버)
Grafana InfluxDB에 저장된 데이터를 보기 좋게 시각화하는 대시보드 도구 별도의 서버 (또는 같은 서버)

💡 데이터 흐름도

이 아키텍처는 데이터의 수집 > 전송 > 저장 > 시각화의 4단계 순서로 진행됩니다

단계 구성 요소 주요 동작 사용 기술/언어 데이터 형태
1. 수집 lm-sensors 센서 정보 읽기 sensors command, Shell Script Plain Text > JSON/CSV
2. 전송 Telegraf 데이터 수집 및 전달 InfluxDB Protocol Structured Data
3. 저장 InfluxDB (Time-Series DB) 시간순 데이터 저장 Time-Series Data Structured Data
4. 시각화 Grafana (대시보드) 데이터 조회 및 표현 Flux/InfluxQL Visual Chart Data

이제 하나하나 설치하며 진행해 보도록 하자.

1단계: lm-sensors 설치 및 데이터 확인

첫 번째 단계는 시스템이 센서 정보를 인식하고, lm-sensors가 정상적으로 작동하는지 확인하는 단계이다.

1.1. lm-sensors 설치

사용하는 Linux 배포판에 맞춰 간단하게 패키지를 설치 가능하다.

sudo apt update
sudo apt install lm-sensors
sudo yum install lm_sensors
# 또는
sudo dnf install lm_sensors

1.2.(선택사항) 센서 감지 및 설정

시스템에 연결된 센서를 검색하고 모듈을 로드한다.

실제로 각자의 시스템별로 이 부분은 모두 다른 형태로 나타나기 때문에 필요에 따라 CPU정보를 가져올 수 있도록 설정해야 한다.

sudo sensors-detect

[Tip] 이 명령어는 모듈을 확인하기 위하여 여러 질문을 나오는데. 특별한 이유가 없다면, 대부분의 질문에 YES를 입력하여 모듈을 활성화하는 것이 좋다.

sensors-detect 명령어를 통한 정보확인

1.3. 데이터 확인

설정이 완료되었다면, sensors 명령어를 통해 현재 센서 값을 확인한다. 이 출력정보 InfluxDB로 전송하여 저장해 보도록 하자.

sensors

CPU온도 정보 확인


2단계: Telegraf 설정 및 데이터 수집 (Docker Compose)

Telegraf는 시스템 명령어의 출력을 읽어와 InfluxDB 형식에 맞춰 전송하는 역할을 한다. 여기서는 자세한 사용법은 기술하지 않을 예정이니 필요한 경우 자세한 사용법을 찾아보도록 하자. [링크]

참고로 기존 Docker를 활용하여 InfluxDB + Grafana를 세팅하였기 때문에 해당 Compose파일에 Telegraf를 추가해서 사용해 보도록 하려고 한다.

2.1 Telegraf.conf 파일 생성

기존에 Telegraf를 사용하는 경우에는 관련 내용만 별도로 추가해서 사용하면 된다.

참고로 사용하는 파일 없는 경우 아래 명령어를 통해 기본 Telegraf.conf 파일도 생성이 가능하다.

  • Docker를 통한 신규 파일 생성
docker run --rm telegraf:latest telegraf config > ./telegraf.conf

그럼 InfluxData에서 제공하고 있는 sensors plugin 항목을 사용하여 데이터를 저장해 보도록 하자.

2.1.1 Inputs.sensors Plugin (센서 데이터 수집) 설정 [링크]

Plugin으로 lm-sensors를 통한 데이터를 기본적으로 제공해 주고 있기 때문에 [[inputs.sensors]] 를 추가해 주자.

필요에 따라 remove_numbers (Default : true) 설정만 수정해 주면 되는데 주석에 나와 있듯이 각각의 코어 항목에 일련번호를 넣을지 설정하는 것이다.

# Monitor sensors, requires lm-sensors package
[[inputs.sensors]]
  ## Remove numbers from field names.
  ## If true, a field name like 'temp1_input' will be changed to 'temp_input'.
  # remove_numbers = true

  ## Timeout is the maximum amount of time that the sensors command can run.
  # timeout = "5s"

2.1.2 Output Plugin (InfluxDB 전송) 설정 [링크]

Telegraf가 데이터를 InfluxDB로 전송하도록 본인의 정보를 설정한다.

[[outputs.influxdb_v2]]
  urls = ["http://influxdb:8086"] # influxdb server url
  token = "<Change Here!!>" #API Token Info
  organization = "<Change Here!!>" #Organinzation Info
  bucket = "<Change Here!!>" #Bucket Info

2.1.3 최종 telegraf.conf 파일

사설이 길었지만 결국 최종적으로 아래와 같은 telegraf.conf 파일을 생성하고, 각각 필요에 따라 수정해서 사용하면 된다.

# Configuration for telegraf agent
[agent]
  interval = "10s"
  round_interval = true
  metric_batch_size = 1000
  metric_buffer_limit = 10000
  collection_jitter = "0s"
  flush_interval = "10s"
  flush_jitter = "0s"
  precision = ""
  hostname = ""
  omit_hostname = false

[[outputs.influxdb_v2]]
  urls = ["http://influxdb:8086"] # influxdb server url
  token = "<Change Here!!>" #API Token Info
  organization = "<Change Here!!>" #Organinzation Info
  bucket = "<Change Here!!>" #Bucket Info

[[inputs.sensors]]
  ## Remove numbers from field names.
  ## If true, a field name like 'temp1_input' will be changed to 'temp_input'.
  # remove_numbers = true

  ## Timeout is the maximum amount of time that the sensors command can run.
  # timeout = "5s"

추가로 아래는 InfluxDB의 WEB UI를 통해 Telegraf.conf 파일을 간단히 생성할 수 있는데 이렇게 생성한 Telegraf 설정파일을 다운로드도 하고 API를 통한 호출도 가능하니 이 부분은 필요한 사람만 보면 될 듯하다.

📌InfluxDB WEB Telegraf.conf 생성방법

더보기

1. LoadData > Telegraf > CREATE CONFIGURATION

2. Sensors정보를 저장할 Bucket 선택 > LM Sensors Plugin 선택 > CONTINUE CONFIGURING

Sensors Telegraf.conf 파일생성

3. 생성할 Telegraf 이름 및 설명으로 본인이 확인하기 편하게 작성하면 된다.

참고로 [agent], [outputs] 정보는 기본적으로 작성되니 화면에 나와있는 [inputs] 정보에 대해서만 수정하면 된다.

4.Telegraf를 생성하게 되면 API Token 정보를 통해 원격으로 설정내용으로 호출이 가능하다.

여기서는 API를 사용할 것이 아니기 때문에 참고용으로만 확인하고 넘어 가자.

Sensors Telegraf.conf 파일생성

5. Telegraf 화면에서 방금 작성한 항목을 선택할 경우 DOWNLOAD CONFIG 버튼으로 설정파일을 다운로드 가능

Telegraf.conf 설정파일 다운로드

2.2 Telegraf Docker-Compose 생성 및 실행

이제 생성한 telegraf.conf 파일을 기반으로 Docker-compose를 생성하여 실행해 보도록 하자.

  • 기존 Influxdb + Grafana 설치를 위한 Compose.yaml 파일에 추가
#Influxdb + grafana + telegraf compose.yaml
services:
  grafana:
    image: grafana/grafana
    container_name: grafana
    restart: always
    ports:
      - 3000:3000
    volumes:
      - grafana-data:/var/lib/grafana
  influxdb:
    image: influxdb:latest
    container_name: influxdb
    restart: always
    ports:
      - 8086:8086
    volumes:
      - influxdb2-data:/var/lib/influxdb2
      - influxdb2-config:/etc/influxdb2
  telegraf:
    image: telegraf:latest
    container_name: telegraf
    restart: always
    volumes:
      - ./telegraf.conf:/etc/telegraf/telegraf.conf:ro # 본인의 telegraf.conf파일 연결
      - /var/run/docker.sock:/var/run/docker.sock:ro
volumes:
  grafana-data:
  influxdb2-data:
  influxdb2-config:
  • Docker Compose 적용 및 실행
docker compose up -d telegraf

Telegraf Docker compose 적용

2.3. Telegraf를 통한 데이터 수집 확인

2.3.1 telegraf.conf 설정파일을 통한 수집 확인

기본적으로 Docker 가 실행되면 자동으로 미리 연결해 놓은 telegraf.conf 파일을 기준으로 자동으로 실행이 되는데

아래 명령어를 통해 정상적으로 수집이 되고 있는지 확인해 보자. 설정파일이 정상적이라면 문제없이 실행되었을 것이다.

--test 옵션은 정상적으로 수집되는 데이터를 확인하는 용도

docker exec -t telegraf telegraf --test

Telegraf 를 통한 CPU정보 수집확인

2.3.2 API를 통한 데이터 확인 ( 참고용으로 필요한 경우 사용 )

Telegraf를 생성했다면 Setup Instructions 항목에서 기본적인 정보 및 호출방법을 확인해 볼 수 있다.

기존 API Token정보가 있다면 `Telegraf Read` 권한을 부여해 사용해도 되고 팝업창에서 새로 생성해서 사용해도 된다.

(✅생성된 모든 API Token은 API TOKENS에서 확인 가능하다.)

Telegraf 설정 확인 및 API 실행

그럼 순서대로 실행해 보도록 하는데 우리는 Docker에 설치했으니 Docker로 진입해서 API호출을 실행해 보자.

  • Telegraf Docker 진입
docker exec -it telegraf /bin/bash
  • Token 정보 export ( Token을 별도로 관리하는 게 아니라면 Influxdb Web의 Telegraf 설정파일에 직접 지정해도 됨 )
export INFLUX_TOKEN=<본인 API Token정보입력>
  • API를 통한 telegraf 실행
telegraf --config http://192.168.0.145:8086/api/v2/telegrafs/10cc8c63fe987000 --test

이처럼 API를 통해서도 아래처럼 간단하게 확인가능하다.

API를 통한 Telegraf 수집 확인

2.3.3 Influxdb WEB UI에서 수집 데이터 확인

WebUI > Data Explorer 항목에서 본인의 정보에 맞춰 확인해 보면 정상적으로 데이터가 수집되고 있는 것을 확인할 수 있다.

InfluxDB WebUI 수집데이터 확인


3단계: Grafana 설정 및 대시보드 구성 (시각화)

이제 InfluxDB에 쌓인 데이터를 Grafana로 가져와 기존 생성했던 Proxmox 대시보드에 CPU 정보를 표시해 보도록 하자.

3.1 CPU정보 패널 추가

  • 추가할 Dashboard > Edit > 표시할 패널 선택하여 Add Panel 선택

Dashboard 에 패널 추가

  • Configure visualization 선택 후 > All visualizations > Gauge 선택( ※해당항목은 본인이 원하는 스타일을 선택하면 됨 )

CPU정보에 대한 상세 패널 선택

3.2 데이터 확인 및 패널 상세설정

3.2.1 CPU정보 데이터 확인

  • Flux 문법을 이용한 Query를 호출하여 데이터가 정상적으로 호출되는지 확인
  • 해당 조건은 각자의 조건에 맞게 수정해서 사용하면 된다.
from(bucket: "${Bucket}")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r._measurement == "sensors")
  |> filter(fn: (r) => r._field == "temp_input")
  |> filter(fn: (r) => r.feature == "package_id_0")
  • 해당 Query를 호출하여 데이터가 정상적 조회가 되면 아래 화면과 같이 표현되는 것을 확인할 수 있다.

Influxdb CPU정보 데이터 확인

3.2.2 (선택사항) 패널 상세설정

위처럼 데이터 시각화 되었다면 끝이긴 하지만 가시성 있도록 패널에 몇 가지만 추가로 수정해 보도록 하자.

대메뉴 하위메뉴
Panel options Title : 화면에 표시되는 타이틀 지정
Standard options  Unit : Temperature > Celsius(℃)
Min  : 0
Max : 100
Thresholds Add threshold : 60%, 70%, 80% 90% 추가
Thresholds mode : percentage

간단하게 위처럼만 수정을 해준다면 아래와 같은 화면을 볼 수 있는데 필요에 따라 원하는 데로 우측 옵션을 조절해 사용하면 된다.

이후 저장을 통해 화면에 적용이 된 것을 확인할 수 있다.

CPU정보 패널 상세정보 설정

3.3 (선택사항) 모든 CPU 코어별 정보 확인

동일한 방식으로 나머지 CPU코어에 대한 정보도 표현해 보도록 하자.

Add Panel을 통해 Time serises 차트를 생성한다.

Time serise 챠트 생성

3.3.1 CPU Core정보 데이터 확인

  • Package를 제외한 나머지 core 정보만 가져오도록 한다.
from(bucket: "${Bucket}")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r._measurement == "sensors")
  |> filter(fn: (r) => r._field == "temp_input")
  |> filter(fn: (r) => r.feature != "package_id_0")

3.3.2 (선택사항) 패널 상세설정

이번에도 기존 CPU정보와 동일하게 가시성 있도록 패널에 몇 가지만 추가로 수정해 보도록 하자.

대메뉴 하위메뉴
Panel options Title : 화면에 표시되는 타이틀 지정
Tooltip Tooltop mode : All
Graph Styles Fill opacity : 60
Gradient mode : Opacity
Standard options  Unit : Temperature > Celsius(℃)
Min  : 0
Max : 100
Thresholds Add threshold : 60%, 70%, 80% 90% 추가
Thresholds mode : percentage

해당 패널 역시 필요에 따라 원하는 데로 우측 옵션을 조절해 사용하면 된다.

CPU Core Time Serises 정보 패널 설정


마치며...

이로서 길고 길었던 모든 적용이 완료되면 아래와 같이 CPU 온도 정보 및 각각 CPU Core정보를 한눈에 파악할 수 있다.

사실 전체적으로 보면 크게 어렵지 않게 적용할 수 있으며 추가하고 싶은 다른 데이터가 있다면 같은 형태로 추가해 주면 된다.

ps. 추가로 해당 정보를 통해 Grafana에서 제공해 주는 Alerting 기능을 사용한다면 CPU사용량 온도 Disk용량등 특정 수치값 이상인경우 메시지를 보내주는 기능도 구현가능하다. 해당 항목은 추후 별도로 작성하도록 하겠다

CPU 온도 정보가 추가된 모니터링 화면

'Proxmox > Monitoring' 카테고리의 다른 글

InfluxDB + Grafana를 이용한 Proxmox 모니터링 적용  (1) 2025.11.04