2025. 11. 4. 15:43ㆍProxmox/Monitoring
들어가며..
보통 클라우드를 통해 서버를 이용할 경우 본인이 선택한 서버의 스펙에 따라 가격이 책정되는데 사양이 올라갈수록 가격이 올라가는 만큼 적정 수준의 스펙을 선택하여 사용하는 것이 바람직하다.
또한 요즘 MiniPC가 많이 보급됨에 따라서 가성비 저전력 MiniPC에 서버를 구축하는 경우도 종종 있는데 해당 경우에도 서버 정보를 한눈에 본다면 좀 더 효율적으로 관리할 수 있지 않을까 한다.
결론적으로 서버의 정보를 모니터링하여 서버의 가동률 및 실사용률 등을 파악해 좀 더 효율적인 관리를 해 볼 수 있도록 해보자.
📌사전적으로 필요한 정보는 아래 링크를 통해 확인해 보자.
1. Proxmox 모니터링
1.1 항목별 Summary Dashboard
Proxmox Web UI에도 기본적으로 Summary 항목의 Dashboard 통해서 각각 서버의 기본정보 및 항목별로 모니터링할 수 있는 화면이 존재한다.
- Proxmox Datacenter > Summary
- Datacenter > Cluster > Summary
- Cluster > VM or CT > Summary
위와 같이 Proxmox 로컬 서버 및 클러스터, 클러스터 하위의 VM, CT 등 각 항목별로 Summary가 존재하며 해당 항목을 통해 기본적인 정보의 모니터링이 가능하며 이를 통해 서버의 정보 확인이 가능하다.



해당 정보로도 파악은 가능하지만 좀 더 직관적이고 시각적으로 한눈에 파악하기 좋도록 모니터링 툴을 적용해 보도록 할 텐데,
Proxmox에서는 서버의 정보를 파악하여 확인할 수 있도록 Metric Server를 제공하고 있다.
1.2 Metric Server
1.2.1 Metric Server란?
Metric Server란 간단하게 서버의 CPU 및 메모리 사용량 같은 리소스 메트릭정보를 수집하여 제공하는 서비스를 말한다.
보통은 쿠버네티스(Kubernetes) 시스템에서 각 클러스트의 메트릭정보를 수집하여 제공하는 모니터링 오픈소스 서비스로서 많이 사용되며, 추가적으로 Prometheus, Elastic Stack, DataDog 등과 같은 애플리케이션도 존재한다.
오늘은 이게 주제가 아니니 필요한 경우 별도로 확인해 보도록 하자.
1.2.2 Metric Server 설정
📌해당 Metric Server 설정은 InfuxDB설치 이후 가능함으로 미리 확인만 하고 넘어가자.
Dtacenter > Metric Server > Add > InfluxDB

Proxmox에서 제공하는 Metric Server는 Graphite, InfluxDB 두 가지 선택지가 존재하는데 이 두 가지 모두 Metric Server로부터 정보를 전달받아 저장할 시계열 DB를 세팅하는 것이다.
보편적으로 많이 사용되는 InfluxDB를 설치하여 적용해 보도록 하자.
2. InfluxDB
대표적인 시계열 데이터베이스(TSDB)로서 간단하게 설명하자면, 시계열 데이터(Time series data - 시간의 흐름에 따라 발생하는 데이터)를 저장하도록 고안된 데이터베이스이다.
📌InfluxDB 버전
참고로 여기서는 InfluxDB OSS v2 버전을 사용하였다.
굳이 해당내용을 설명한 이유는 두 가지 버전의 핵심 개념 및 용어가 크게 변경되어 다르기 때문이다.
- InfluxDB v1, v2버전 차이
구분 InfluxDB 1.x [링크] InfluxDB 2.x [링크] 아키텍처 단일 컴포넌트 아키텍처 마이크로서비스 아키텍처 핵심 개념/용어 Database, Retention Policy (DB/RP), User, Continuous Query Organization, Bucket, Token, Task (DB/RP 조합이 Bucket으로 변경됨) 인증 및 보안 사용자 이름/비밀번호 기반 인증 토큰(Token) 기반의 인증 및 권한 부여 시스템 도입 쿼리 언어 InfluxQL (SQL과 유사함) Flux(기본), InfluxQL 지원 데이터 모델 데이터 베이스, 태그(Tag)와 필드(Field)로 구분 태그와 필드 개념은 유지, 버킷(Bucket)에 저장 사용 편의성 CLI를 사용하여 관리 통합된 웹 UI 제공 (데이터 탐색, 시각화, 대시보드, 설정 등)
2.1 InfluxDB설치
설치는 Docker Compose를 통해서 간단하게 설치가 가능하다.
- (선택사항) influxdb 폴더 생성
mkdir -p /services/influxdb && cd /services
- compose.yaml 파일 생성 (Influx OSS v2 Docker-compose InstallGuide [링크])
공식 사이트에서는 설치 편의나 보안 이유로 secrets를 사용하는 방법으로 설정되어 있다.
설치 이후 해당 정보는 설정 가능하니 필요에 따라 설치하면 된다.
여기서는 간단하게 최소 설정만으로 설치를 진행해 보도록 하자.
# compose.yaml
services:
influxdb2:
image: influxdb:2
ports:
- 8086:8086
volumes:
- influxdb2-data:/var/lib/influxdb2
- influxdb2-config:/etc/influxdb2
volumes:
influxdb2-data:
influxdb2-config:
- Docker Compose를 통한 설치
docker compose up -d

2.2 InfluxDB 설정
2.2.1 Web UI접속
Influxdb를 설치하였으면 이제 Web관리 페이지에 접속해 보자
http://<본인의 서버 IP>:8086 정보로 접속하여 확인가능하다.

2.2.1 Influxdb 관리계정 생성
최초 접속 시 아래처럼 초기 관리자 정보를 세팅하는 화면이 나오게 된다.
위에서 생성한 compose.yaml 작성 시 environment 부분을 미리 입력한 경우 해당 화면은 스킵되게 된다.
참고만 하고 넘어가도록 하자.
#compose.yaml 작성시 초기설정값 지정
....
environment:
DOCKER_INFLUXDB_INIT_MODE: setup
DOCKER_INFLUXDB_INIT_USERNAME_FILE: /run/secrets/influxdb2-admin-username
DOCKER_INFLUXDB_INIT_PASSWORD_FILE: /run/secrets/influxdb2-admin-password
DOCKER_INFLUXDB_INIT_ADMIN_TOKEN_FILE: /run/secrets/influxdb2-admin-token
DOCKER_INFLUXDB_INIT_ORG: <Initial Organization 항목>
DOCKER_INFLUXDB_INIT_BUCKET: <Initial Bucket 항목>
....
계정생성 시 본인의 admin 계정에 대한 Token 정보를 확인할 수 있다. 해당 Token은 별도로 저장해 놓고 사용하도록 하면 된다.
하단에 버튼 3개 중 필요에 따라 누르면 계정생성은 마무리된다. 참고로 3가지는 메뉴이동이니 크게 신경 쓰지 않아도 된다.



📌API Token 정보 확인방법
가끔 생성한 Token정보를 기록해 놓지 않고 잊어버리는 경우기 존재하기에 influx cli를 통해 확인하는 방법을 알아보도록 한다.
1. 서버접속 후 docker로 실행 중인 influxdb container에 접속
docker exec -it influxdb /bin/bash2. 서버접속 후 influx 명령어를 통해 config 정보 생성
- config는 Influxdb 인증정보를 세팅하기 위하여 실행 (해당과정을 하지 않을 경우 403 에러 발생)#Default CLI Guide influx config create \ -n CONFIG_NAME \ -u http://localhost:8086 \ -p USERNAME:PASSWORD \ -o ORG아래처럼 본인의 ID/PW정보를 세팅하여 config를 생성해 주면 해당 계정으로 활성화된다.
참고로 -a 옵션은 해당 Config를 생성하면서 활성화해 주는 항목이며 패스워드에 특수문자 가존재하는 경우 '' 로 감싸주도록 하면 된다.influx config create -a -n confName -u http://localhost:8086 -p admin:'12345678'3. influx auth list 명령어를 통한 Token 정보 확인
influx auth listInfulx CLI Token 정보확인
3. Proxmox와 Influxdb 연동
3.1 Influxdb Bucket 생성 및 API Token 발급
최초 계정생성 시 만들었던 Bucket 및 API Token정보가 존재하긴 하지만 권한설정이나 모니터링만을 위한 별도의 Bucket 및 API Token을 생성해 보도록 하자.
3.1.1 Bucket생성
Influx WEB > Load Data > Buckets > CREATE BUCKET

3.1.2 API Token 생성
Custom API Token생성을 클릭하여 위에서 생성한 Bucket에 Read/Write 권한을 부여한다.
해당 API를 통해서 생성된 Bucket에 Proxmox 정보를 저장하도록 하는 것이다.
API를 생성하면 별도의 API Token이 생성되는데 해당 Token정보를 저장해 놓도록 한다.
Influx WEB > Load Data > API Tokens > GENERATE API TOKEN


3.2 Proxmox Metric Server 설정 및 데이터 확인
3.2.1 Proxmox Metric Server 설정
이제 InfluxDB에 새로 생성한 Bucket을 Proxmox의 Metric Server로 연결해 보도록 하자.
- Server : 본인 Influxdb 서버 IP
- Port : 8086 (변경한 경우 본인 포트 입력)
- Protocol : HTTP
- Organization : Influxdb Organization 명
- Bucket : 생성한 Bucket명
- Token : 생성한 API Token정보 입력
Dtacenter > Metric Server > Add > InfluxDB

연결이 정상적으로 완료되면 아래와 같이 등록된 것을 확인할 수 있다.

3.2.2 InfluxDB 데이터 확인
정상적으로 연동이 되었다면 일정주기로 InfluxDB Bucket에 자동 저 정 된다.
InfluxDB의 Data Explorer항목을 통해 Bucket에 저장되는 정보를 확인할 수 있다.

4. Grafana
시계열 데이터 베이스와 연동하여 데이터를 시각화하여 보여주기 위한 애플리케이션으로 데이터를 통합하여 시스템 상태를 실시간 모니터링 할 수 있게 도와주며 다양한 대시보드를 제공하여 사용자가 원하는 유연한 형태의 화면 구성이 가능하다.
4.1 Grafana 설치
Grafana 역시 Docker를 통해 간단하게 설치해 보자.
- Compose.yaml 수정 - 기존 InfluxDB 파일에 추가해 보자
compose.yaml에 grafana를 추가하고 기존 생성된 볼륨을 연결하여 사용할 수 있도록 external: true 옵션을 추가해 준다.
#Influxdb + grafana 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
volumes:
grafana-data:
external : true
influxdb2-data:
external : true
influxdb2-config:
external : true
- Docker Compose를 통한 설치
docker compose up -d

4.2 Grafana 설정
4.2.1 Grafana Web UI 접속
Grafana 역시 Web UI에 접속해 보자.
http://<본인의 서버 IP>:3000 정보로 접속하여 확인가능하다.
📌초기 아이디 / 패스워드 : admin / admin


4.2.2 InfluxDB Data 연동
이제 InfluxDB에 적재된 데이터를 가져와 Grafana와 연동해 보도록 하자.
Grafana Home > Connections > Data Sources > InfluxDB
- Query language : Flux 선택 (Influxdb 2.x 버전 SQL)
- HTTP > URL : 본인의 influxDB Web 접속 URL (ex. http://192.168.0.119:8086)
- InfluxDB Details : InfluxDB정보 입력
- Organization : 본인의 Organization 정보 입력
- Token : 생성한 Bucket API Token정보 입력
- Default Bucket : 생성한 Bucket정보 입력



정상적으로 입력이 된 경우 Save & test 버튼 클릭 시 다음과 같이 정상적으로 연동된 것을 확인할 수 있다.


생성된 influxdb Data Source에서 대시보드생성(Build a dashboard) 및 데이터확인(explorer)이 가능하다.
좌측메뉴에 대한 링크정보이니 참고만 하고 이제 그럼 데이터를 시각적으로 보여줄 대시보드를 생성하러 가보자.
4.2.2 Grafana Dashboard 생성
실제로 생성에 가면 한 땀 한 땀 생성을 해야 하지만 이미 다른 유능하신 분들이 만들어 놓은 대시보드들이 존재함으로 이미 만들어진 대시보드를 가져와 보도록 하자.
- Grafana Dashboards : https://grafana.com/grafana/dashboards/?search=Proxmox&dataSource=influxdb
Proxmox에서 Influxdb를 사용하는 대시보드들을 확인할 수 있다.
대시보드에 들어가면 우측에 Copy ID to clipboard 버튼을 클릭하여 해당 대시보드 ID를 복사한다
참고로 Grfana 회원가입은 따로 하지 않아도 된다.
🚨주의사항 - 대시보드 Influx2.x 버전 지원여부 확인
각 대시보드는 결국 Influxdb에 조회를 해서 데이터를 보여줘야 하는데 버전별로 문법이 차이가 있기 때문에 Influxdb 2.x버전 문법인 Flux 지원여부를 확인해야 함.
따로 확인방법이 있는 건 아니지만 제목에서 [Flux]라고 정의된 대시보드들은 대부분 Influxdb 2.x버전의 문법을 사용하는 것이기 때문에 해당 대시보드는 지원된다고 보면 된다.


이제 다시 Grafana 사이트로 돌아와서 선택한 대시보드를 적용해 보자.
Home > Dashboards > Create dashboard
- 대시 보드를 가져올 것이기 때문에 Import a dashboard를 선택한다.
- 복사한 대시보드 ID를 입력 후 Load 버튼을 클릭한다.
- 정상적으로 로드된 경우 자신의 Influxdb를 선택하고 Import를 한다.



4.2.3 Grafana Dashboard 확인
대시보드가 정상적으로 연동되었다면 다음과 같이 대시보드가 표시되는 것을 확인할 수 있다.👏👏👏

5. 마치며
이로서 길고 길었던 InfluxDB + Grafana를 연동한 Proxmox 모니터링 페이지가 완성되었다.
본인이 필요한 정보가 있다면 Infulxdb에 데이터를 입력하고 Grafana에서는 해당 대시보드에 추가해서 보여줄 수도 있으며 Alerting을 이용하여 특정 Rule을 생성하여 해당 Rule에 해당하는 경우 Push 알람서비스까지 제공하고 있다.
늘 그렇듯 이제 시작이다. 이제 한 발짝 내디딘 것일 뿐...ㅎ
