피드로 돌아가기
Dev.toDevOps
원문 읽기
lsof·ss·netstat를 대체하는 Rust 기반 통합 포트 분석 도구 portview
I replaced lsof, ss, and netstat with a single Rust binary
AI 요약
Context
OS별로 상이한 포트 확인 명령어와 옵션으로 인한 개발 생산성 저하. 프로세스 실행 시간 및 메모리 점유율 등 상세 정보 확인을 위한 추가 도구 사용의 번거로움. 복잡한 텍스트 출력 결과의 파싱 과정에서 발생하는 비효율성.
Technical Solution
- OS별 외부 쉘 명령어 실행 없이 커널 인터페이스에 직접 접근하여 서브프로세스 오버헤드 제거
- Linux 환경에서 /proc/net/tcp 파싱 및 /proc/*/fd/ 경로를 통한 Inode-PID 매핑 구조 설계
- macOS libproc FFI 및 Windows iphlpapi API를 활용한 크로스 플랫폼 데이터 수집 체계 구축
- 프로세스 간 부모-자식 관계를 시각화하는 Tree View 기반의 Interactive TUI 구현
- Docker 컨테이너 정보를 1차 시민(First-class citizen)으로 처리하여 컨테이너-호스트 포트 매핑 가시성 확보
- SSH binary를 통한 원격 호스트의 JSON 데이터 수집 및 로컬 렌더링 방식의 Agentless 원격 진단 설계
Impact
- 단일 바이너리 크기 약 1.3 MB
- 전체 코드 베이스 약 6K lines of Rust
Key Takeaway
기존의 파이프라인 기반 텍스트 처리 방식에서 벗어나 OS 시스템 호출(System Call) 수준에서 데이터를 직접 수집함으로써 성능 최적화와 사용자 경험을 동시에 개선한 사례.
실천 포인트
멀티 OS 환경의 인프라 진단 도구 설계 시 쉘 래퍼(Shell Wrapper) 대신 OS API/FFI를 직접 사용하여 성능과 이식성을 확보할 것