[Grafana] 온프레미스 인프라 네트워크 모니터링

Jaewon Lim·2026년 2월 1일
post-thumbnail

현재 회사에 많은 직원들이 네트워크 불안정성으로 고통받고 있음. 간헐적인 패킷 손실 및 네트워크 단절 현상 으로 업무에 대한 차질이 생기고 있는데 트래픽을 데이터화하여 실시간 관측 가능성을 확보하고 네트워크 병목 구간을 특정할 수 있는 정량적 데이터를 보고자 하는 개인 프로젝트

1. 스위치 모니터링

현재 사용되는 ASUS 라우터는 SNMP IP 를 지원해주는 장비가 아니기 때문에 전사 네트워크 트래픽에 대한 조사가 어려움. 직원들의 개인 컴퓨터 혹은 휴대폰에 대한 트래픽은 작을 것이라 판단하여, 사내 vm 네트워크 트래픽에 대한 전수조사 진행

1.1. 통신 프로토콜

  • Proxmox(API 방식)
    • pve-exporter 가 proxmox 의 현재 노드 상태(Json) 요청
    • 웹 브라우저로 통신하는 것과 비슷하여 TCP 기반이며 안정적
  • 스위치(SNMP 방식)
    • snmp-exporter 가 스위치에 1.3.6.1.2…. 의 값을 UDP 패킷으로 던짐
    • 스위치는 단순한 장비로써, 복잡한 API 대신 가볍고 빠른 SNMP 사용. UDP를 쓰기 때문에 네트워크가 불안정하면 데이터가 유실될 수 있음

1.2. Exporter 역할

  • pve-exporter : proxmox의 JSON 데이터를 prometheus 포맷으로 바꿈
  • snmp-exporter : 숫자(OID) 로 된 암호 같은 데이터를 우리가 알아볼 수 있는 이름(ifInOctets) 으로 매핑해줌. snmp.yml 이라는 설정파일 중요

1.3. 모니터링 목적

  • Proxmox : 내 서버가 죽지 않고 잘 활동하고 있는가?
  • 스위치 : 장애 초기 발견, 용량 계획(Capacity Planning). 데이터가 지나가는 길(Network)이 막히지 않는가? (대역폭 포화, 물리적 케이블 불량 감시)

1.4. 알림(Slack) 관점 차이

  • Proxmox : CPU 사용량이 90%를 넘었습니다.
  • 스위치 : 24번 포트(서버 연결 포트) 가 다운 되었습니다.(케이블 단선 의심) / 트래픽이 1Gbps 대역폭을 채웠습니다.(네트워크 병목)

2. 데이터 이동 흐름

  • Prometheus : 데이터 수집 및 저장 / 데이터 디스크 저장 / 데이터 소스(자체 수집한 메트릭 데이터) / 쿼리 언어(PromQL)
  • Grafana : 데이터 시각화 및 분석 / 데이터 저장 x, 외부에서 가져옴 / 데이터 소스(프로메테우스, MySQL..)
  • Exporter
    • Proxmox 는 JSON 형식으로 답하고, Prometheus 는 Metric Text 형식만 알아들음.
    • 중간에 Exporter 를 통해 변환. docker-compose.yml 에서 pve-exporter 를 띄움
  1. Grafana 요청(Query)
  2. Prometheus 데이터 제공
  3. Prometheus 데이터 Exporter 요청(scraping)
    • Prometheus.yml scrap_interval: 15s → 15초마다 PVE Exporter(:9221) 에 접속 후 데이터 전송 요청
  4. Exporter 가 Proxmox API 조회(API Call)
    • pve.yml API Token 을 이용해 Exporter 가 Proxmox API(:8006) 에 접속해서 JSON 형태의 원본 데이터 받음. 전송된 JSON 데이터를 Prometheus 의 텍스트 포맷(pve_cpu_usage 0.5 등) 으로 바꿔 prometheus 전달

3. 작업 순서

ASUS 공유기에 SNMP 메뉴가 없어, 하드웨어적으로 모니터링을 지원하지 않는 모델. 공유기 모니터링 불가능. snmpd 를 설치해서 테스트. 운영중인 204번 서버에 SNMP 에이전트(snmpd) 설치하면, 그 서버가 스위치인 것처럼 동작하여 SNMP 모니터링 파이프라인이 정상 작동하는지 검증

3.1. snmpd 설치

3.2. 서비스 재시작 및 확인

3.3. 서버 내용 수정 및 도커 실행

docker restart prometheus

3.4. 대시보드 생성

  • Import via grafana.com 입력창에 11169 입력(SNMP Interface Th

vmbr0

  • 가상 스위치. proxmox 서버 안에 있는 모든 vm들이 통하는 Bridge.
  • 트래픽 양 = 현재 204 서버가 처리하는 전체 트래픽 총합

tapXXXTi0

  • 규칙: tap + [VM ID 번호] + i0
  • 개별 vm. tap118i0: 118번 VM의 랜선

4. Exporter 종류

1. Proxy 형 Exporter

  • Prometheus 와 같은 서버(167)에 , 보통 Prometheus 설치할 때(Docker Compose) 같이 설치
  • snmp-exporter, pve-exporter, blackbox-exporter
  • 왜? Proxmox API 나 SNMP 장비(공유기)는 우리맘대로 프로그램을 깔 수 없는 경우 167 서버에 놓고, 다른 서버에 가서 대신 물어봄

2. Agent 형 Exporter

  • 모니터링 대상(202,204) 에 직접 설치
  • node-exporter, window-exporter, snmpd
  • 왜? 서버의 내장(CPU 온도, 디스크 내부 용량) 을 보려면 외부에서 요청하는데 한계가 있어 서버 내부에 설치하여 안에서 정보 가져와 prometheus 서버(167)로 보내줌

5. 기타

snmpd 를 root 에 설치하는 이유
1. 포트 번호
- 0 ~ 1023 번 포트는 오직 root 만 포트 생성 가능
- SNMP 의 표준 포트 : UDP 161번을 사용하기 때문에 root 권한이 없으면 Permission denied

2. 하드웨어 및 커널 정보 접근 권한
- snmpd 의 목적은 시스템 감시. 네트워크 인터페이스의 트래픽, CPU 온도, 디스크의 물리적 상태 등은 운영

0개의 댓글