NetBox 플러그인으로 구현하는 자동 네트워크 토폴로지 시각화

자동 생성된 네트워크 토폴로지로 효율적인 인프라 관리하기

대규모 네트워크 환경에서는 장비 간 연결 상태를 파악하고, 물리적·논리적 구조를 직관적으로 이해하는 것이 중요한 과제입니다. NetBox는 IPAM 및 DCIM 기능을 제공하는 오픈소스 도구로, 여기에 netbox-topology-views 플러그인을 추가하면 별도의 설정 없이도 실시간 네트워크 맵을 생성할 수 있습니다.

기존 방식의 한계점

  • 표 형식 데이터의 비시각성: 케이블 연결 정보가 테이블로만 존재하면 전체 아키텍처 파악이 어렵습니다.
  • 장애 진단 지연: 문제 발생 시 관련 장비를 추적하려면 수작업 리뷰가 필요합니다.
  • 설계 의사결정 어려움: 확장 또는 리팩터링 시 시각적 근거 부족으로 판단 오류 가능성이 높아집니다.

해결책: netbox-topology-views 소개

이 플러그인은 NetBox 내에서 이미 구성된 케이블, 전원, 회로 정보를 기반으로 다이어그램을 자동 생성합니다. 사용자는 장비 이름, 사이트, 역할, 태그 등을 기준으로 필터링하여 특정 영역만 시각화할 수 있으며, 다양한 디스플레이 옵션을 통해 목적에 맞는 뷰를 구성할 수 있습니다.

빠른 설치 및 활성화 절차

source /opt/netbox/venv/bin/activate
cd /opt/netbox/netbox
pip install netbox-topology-views
python manage.py migrate netbox_topology_views
python manage.py collectstatic --noinput
systemctl restart netbox

기본 플러그인 설정 (configuration.py)

PLUGINS = [
    "netbox_topology_views",
]

PLUGINS_CONFIG = {
    "netbox_topology_views": {
        "static_image_directory": "topology_images",
        "allow_coordinates_saving": True,
        "always_save_coordinates": False,
        "preselected_device_roles": ["core-switch", "firewall", "router"]
    }
}

이 설정을 통해 아이콘 저장 경로를 지정하고, 사용자 조정 위치를 유지할 수 있도록 하며, 초기 필터링 대상을 정의할 수 있습니다.

주요 기능 및 활용 사례

  • 데이터센터 맵핑: 서버, 토르 스위치, 엣지 라우터 간의 물리적 연결을 한눈에 확인.
  • 멀티사이트 연결 분석: 원격 지사와 본사 간 WAN 링크 상태 시각화.
  • 하이브리드 클라우드 통합 모델링: 온프레미스 장비와 클라우드 게이트웨이 간의 경로 표현.

시각화 옵션 비교표

옵션 설명 사용 목적
미연결 장비 표시 케이블이 없는 독립 장비 노출 누락된 연결 검토
물리적 케이블 표시 직선으로 연결된 인터페이스 표현 실제 배선 검증
논리적 인터페이스 링크 LACP, LAG 등 그룹 연결 표현 논리 아키텍처 분석
회로 종단점 표시 파란색 점선으로 서비스 공급망 연결 외부 링크 관리
전원 공급 경로 PDU → 서버 또는 UPS 연결 트리 전력 계획 및 장애 대응

필터링 전략과 운영 팁

다음과 같은 필터 조합을 통해 효율적인 네트워크 감시가 가능합니다:

  • 역할 기반 필터: "distribution-switch"만 표시하여 계층별 분석
  • 지역 필터: site=SEOUL_DC1로 특정 지역 집중
  • 태그 기반 필터: env=production으로 운영망만 추출

아이콘 및 시각 스타일 커스터마이징

플러그인은 각 장비 역할에 따라 다른 이미지를 매핑할 수 있는 기능을 제공합니다. 예를 들어:

  • 라우터 → router-icon.svg
  • 방화벽 → fw-device.png
  • 서버 → server-rack.svg

이러한 설정은 문서 작성이나 발표 자료 제작 시 일관된 그래픽 표현을 보장합니다.

고급 기능: 좌표 그룹과 레이아웃 관리

사용자는 여러 개의 좌표 그룹(Coordinate Groups)을 생성하여 동일한 장비 세트를 다양한 관점에서 표현할 수 있습니다:

  • 물리적 레이아웃: 실제 랙 위치 기반 배열
  • 논리적 흐름도: 트래픽 흐름 중심 재배열
  • 보안 존 뷰: DMZ, 내부망, 외부망 분리 표시

또한, d3.js 기반 물리 엔진이 장비 간 최적 거리를 자동 계산하며, 사용자가 특정 장비를 고정하면 나머지 요소가 이를 기준으로 재배치됩니다.

문제 해결 가이드

토폴로지에 장비가 나타나지 않을 경우

  1. 장비 간 케이블 연결이 NetBox에 등록되었는지 확인
  2. 해당 장비 역할(role)이 필터에 의해 제외되지 않았는지 점검
  3. 사용자 권한에서 topology 메뉴 접근이 허용되어 있는지 검토

플러그인이 로드되지 않는 경우

  • NetBox 버전이 3.5.1 이상인지 확인 (Python 3.8+ 필요)
  • plugins 설정 문법 오류 유무 확인 (콤마, 중괄호 누락 등)
  • 정적 파일 수집 후 웹 서버 재시작 여부 확인

성능 최적화 팁

  • 노드 수가 100개를 초과하면 필터를 사용해 범위 축소
  • 불필요한 좌표 데이터는 주기적으로 정리
  • 빈번한 레이아웃 변경 시 always_save_coordinates = False 권장

유용한 단축키 및 내보내기 기능

인터랙티브 뷰에서 다음 조작이 가능합니다:

  • Shift + 드래그: 다중 선택
  • 스크롤 휠: 확대/축소
  • 클릭 및 드래그: 개별 장비 이동

생성된 맵은 다음과 같은 형식으로 내보낼 수 있습니다:

  • PNG: 보고서 첨부용 고해상도 이미지
  • XML (draw.io 호환): 후속 편집 가능한 포맷

태그: NetBox network-visualization topology-plugin DCIM IPAM

6월 9일 17:20에 게시됨