21.6.2.1 REST API 플러그인 활성화를 통한 Admin Space 세션 식별 및 통신량(Bytes) 추출

21.6.2.1 REST API 플러그인 활성화를 통한 Admin Space 세션 식별 및 통신량(Bytes) 추출

“현재 우리 클라우드 라우터에 몇 대의 로봇 엣지가 붙어있는가? 그리고 어느 로봇이 가장 악랄하게 트래픽(대역폭)을 갉아먹고 있는가?”
분산 통신망의 시스템 아키텍트라면 새벽 3시라도 1초 만에 이 질문에 대답할 수 있는 통제 눈(Monitoring Eye)을 쥐고 있어야 한다.
Zenoh 가 자랑하는 분산 Peer-to-Peer 메쉬망은 데이터 전송 레이턴시에는 극강이지만, 역으로 그 탈중앙성 때문에 중앙에서 인프라의 건전성을 한눈에 감시하기 어렵다는 극악의 ‘관측 불투명성(Observability Blindness)’ 을 내포하고 있다.

본 절에서는 이 깜깜이 메쉬망의 심장을 강제로 열어젖혀, 각 포트별 세션의 부하와 바이트 이동량을 수술대 위에 낱낱이 전시해 버리는 REST API 플러그인과 Admin Space 조회 전술을 갈파한다.

1. 망각의 라우터와 가시성(Visibility)의 실종

기본 설정으로 구동된 zenohd(라우터 デ몬) 는 트래픽을 처리하는 데에만 미친 듯이 연산을 쏟으며, 어떤 로봇이 들어와 있고 나갔는지 혹은 몇 기가바이트를 흘려보냈는지 기록을 남기지 않는다(망각).
장애가 터졌을 때 콘솔에 뜨는 [WARN] Link broken 따위의 텍스트 로그만 보고 1만 대의 로봇 중 어느 놈이 범인인지 추적하는 것은 원시림에서 바늘 찾기다.

2. Admin Space: 데몬의 뇌 공간 강제 노출

아키텍트는 데몬이 스스로 자신의 내장 상태(Internal States)를 바깥으로 토해내도록 관찰의 촉수를 박아넣어야 한다.
그 첫 번째 런북은, 데몬을 구동할 때 REST API 플러그인을 강제 활성화하고, 데몬의 뇌를 의미하는 Admin Space 예약어 영역(@/...)에 접속할 수 있도록 HTTP 백도어를 뚫어버리는 것이다.

// [Zenoh 데몬의 두개골(Admin Space) 오픈 강제 런북]
{
  plugins: {
    rest: {
      // 1. HTTP 8000번 포트로 내장 상태를 응답하는 REST 서버(도청기)를 켠다!
      http_port: 8000 
    }
  }
}

이 플러그인이 켜진 라우터를 향해 단순한 curl 타격(GET Request) 한 번 날리는 것만으로, 데몬은 숨기고 있던 모든 네트워크 세션 생체 정보를 JSON 덩어리로 쏟아낸다.

# [Admin Space 세션 밀착 도청]
# 라우터의 관리 번호(@) 밑에 달린 모든 연결(session)과 접속점(link)의 상태를 통째로 가져와라!
curl -X GET "http://localhost:8000/@/router/*/session/*/link/*"

3. 네트워크 바이트(Bytes) 추출과 악성 트래픽 진단

떨어져 나온 거대한 JSON 응답 값 안에는 시스템 아키텍트가 목말라하던 ‘혈류량(Traffic Volume)’ 의 절대적 진실이 들어있다.

// (Admin Space 응답 JSON 발췌본)
{
  "key": "@/router/00e1-bb.../session/client-7/link/tcp-2",
  "value": {
    "status": "connected",
    "remote_ip": "192.168.10.45",
    "tx_msgs": 450212,     // 내가 엣지한테 보낸 패킷 수
    "rx_msgs": 9884410,    // 엣지가 나한테 쏴댄 패킷 수 (어마어마하다!)
    "tx_bytes": 10204,     // 보낸 바이트 (10KB)
    "rx_bytes": 8450190220 // 받은 바이트 (무려 8.4GB!)
  }
}

이 숫자를 두 눈으로 확인하는 순간, 수사망은 단숨에 끝이 난다!
“IP 192.168.10.45 로 지정된 Client 7 (해당 로봇 엣지) 놈이 무려 8.4GB 나 되는 괴물 같은 패킷 쓰레기를 라우터로 무자비하게 퍼붓고 있다! 이놈 때문에 전체 대역폭이 짓눌리고 있는 것이다!”

개발자가 소켓 내부를 뜯어보고 C++ 네트워크 프로파일러(Wireshark, TCPDump)로 패킷 미러링을 뜨며 밤을 새우는 미련한 궤적을 찢어버려라. 인프라의 마스터피스는 언제나 데몬(L7) 그 자체가 스스로 자신이 호흡한 바이트(Bytes)의 영수증을 Admin Space 에 남기고, 그것을 HTTP 라는 가장 하찮고 직관적인 요청 1방으로 뽑아내는(Extract) 자가 진단(Self-Diagnostic) 아키텍처에서 비롯된다.