2026. 5. 27. 13:26ㆍProxmox/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를 입력하여 모듈을 활성화하는 것이 좋다.

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

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


3. 생성할 Telegraf 이름 및 설명으로 본인이 확인하기 편하게 작성하면 된다.
참고로 [agent], [outputs] 정보는 기본적으로 작성되니 화면에 나와있는 [inputs] 정보에 대해서만 수정하면 된다.
4.Telegraf를 생성하게 되면 API Token 정보를 통해 원격으로 설정내용으로 호출이 가능하다.
여기서는 API를 사용할 것이 아니기 때문에 참고용으로만 확인하고 넘어 가자.


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


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

2.3. Telegraf를 통한 데이터 수집 확인
2.3.1 telegraf.conf 설정파일을 통한 수집 확인
기본적으로 Docker 가 실행되면 자동으로 미리 연결해 놓은 telegraf.conf 파일을 기준으로 자동으로 실행이 되는데
아래 명령어를 통해 정상적으로 수집이 되고 있는지 확인해 보자. 설정파일이 정상적이라면 문제없이 실행되었을 것이다.
--test 옵션은 정상적으로 수집되는 데이터를 확인하는 용도
docker exec -t telegraf telegraf --test

2.3.2 API를 통한 데이터 확인 ( 참고용으로 필요한 경우 사용 )
Telegraf를 생성했다면 Setup Instructions 항목에서 기본적인 정보 및 호출방법을 확인해 볼 수 있다.
기존 API Token정보가 있다면 `Telegraf Read` 권한을 부여해 사용해도 되고 팝업창에서 새로 생성해서 사용해도 된다.
(✅생성된 모든 API Token은 API TOKENS에서 확인 가능하다.)


그럼 순서대로 실행해 보도록 하는데 우리는 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를 통해서도 아래처럼 간단하게 확인가능하다.

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

3단계: Grafana 설정 및 대시보드 구성 (시각화)
이제 InfluxDB에 쌓인 데이터를 Grafana로 가져와 기존 생성했던 Proxmox 대시보드에 CPU 정보를 표시해 보도록 하자.
3.1 CPU정보 패널 추가
- 추가할 Dashboard > Edit > 표시할 패널 선택하여 Add Panel 선택


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


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를 호출하여 데이터가 정상적 조회가 되면 아래 화면과 같이 표현되는 것을 확인할 수 있다.


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 |
간단하게 위처럼만 수정을 해준다면 아래와 같은 화면을 볼 수 있는데 필요에 따라 원하는 데로 우측 옵션을 조절해 사용하면 된다.
이후 저장을 통해 화면에 적용이 된 것을 확인할 수 있다.


3.3 (선택사항) 모든 CPU 코어별 정보 확인
동일한 방식으로 나머지 CPU코어에 대한 정보도 표현해 보도록 하자.
Add Panel을 통해 Time serises 차트를 생성한다.


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 온도 정보 및 각각 CPU Core정보를 한눈에 파악할 수 있다.
사실 전체적으로 보면 크게 어렵지 않게 적용할 수 있으며 추가하고 싶은 다른 데이터가 있다면 같은 형태로 추가해 주면 된다.
ps. 추가로 해당 정보를 통해 Grafana에서 제공해 주는 Alerting 기능을 사용한다면 CPU사용량 온도 Disk용량등 특정 수치값 이상인경우 메시지를 보내주는 기능도 구현가능하다. 해당 항목은 추후 별도로 작성하도록 하겠다

'Proxmox > Monitoring' 카테고리의 다른 글
| InfluxDB + Grafana를 이용한 Proxmox 모니터링 적용 (1) | 2025.11.04 |
|---|