Snitch: Debug network trên Linux nhanh và trực quan

Trên linux có các câu lệnh anh em vẫn hay dùng để debug network là ss, netstat, lsof. Nhưng lúc on-call, đọc một màn hình output dài rồi tự lọc bằng mắt khá là bất tiện, thế là mình nghĩ giờ có công cụ nào chỉ cần giúp mình trả lời ngay port này process/app nào đang dùng không cần phải grep, không cần nhớ flag.

019b6b1d-bfc7-7f22-859d-e461f596017a

Snitch là tool làm được điều đó nó sẽ cho biết process nào đang mở kết nối, và xử lý sao cho nhanh mà không bấm nhầm, nhìn connection theo dạng bảng/TUI, lọc nhanh, ra quyết định nhanh.

Snitch là gì và dùng trong trường hợp nào?

Snitch là công cụ giúp anh em thấy network connections của máy một cách trực quan hơn

Nó vẫn xoay quanh mấy thứ quen thuộc:

  • Port này đang LISTEN hay không? thằng nào đang giữ port đó?
  • Process này có đang mở nhiều connection không?
  • Connection đang ở trạng thái gì? (LISTEN / ESTABLISHED /…)

Khác biệt là Snitch:

  • Gom mấy thông tin đó vào một bảng rõ ràng
  • Nó có chế độ TUI xem realtime
  • Không cần nhớ flag hay phải grep thủ công

Quan trọng là anh em đừng hiểu nhầm:

  • Snitch không đo traffic, không thay iftop hay nethogs
  • Snitch không phải firewall
  • Snitch chỉ giúp anh nhìn nhanh giữa port – connection – process

Nếu bạn hay SSH vào server để debug network hoặc process, Snitch là kiểu tools mì ăn liền cho anh em.

Cài đặt Snitch

Cách 1: Cài bằng Go

go install github.com/karol-broda/snitch@latest
snitch --help

Cách 2: Dùng binary release

Tải binary đúng OS/arch từ release của repo, rồi:

chmod +x snitch
sudo mv snitch /usr/local/bin/
snitch --help

Cách 3: Homebrew (macOS / Linux)

brew install karol-broda/tap/snitch
snitch --help

Lưu ý về quyền hạn

  • Linux: để thấy đầy đủ mapping process và socket, thường cần root hoặc CAP_NET_ADMIN
  • MacOS: đôi lúc cần sudo

Không đủ quyền vẫn chạy được, nhưng có thể thiếu process name/PID trong một số dòng.

Cách dùng cơ bản

Snitch có nhiều options, bạn sử dụng 2 mode này là chính.

TUI realtime

Mode này Anh em sử dụng khi chưa biết vấn đề nằm ở đâu?

snitch

Mở lên là thấy ngay: port nào đang mở, process nào đang giữ, connection nào đang active.

One-shot table

snitch ls

In ra bảng gọn để soi nhanh, filter, hoặc copy lại xem cho kỹ.

Snitch giúp mình debug nhanh hơn thế nào?

Tình huống 1: service không start vì port đã bị chiếm

Case kinh điển rất hay gặp: deploy xong, service restart loop. Log:

bind: address already in use

Câu hỏi lúc đó rất đơn giản: Port này đang bị thằng nào chiếm?.

Dùng Snitch

snitch

Mình không filter trước. Màn hình hiện ra danh sách socket + process, mình nhìn vào cột port và state là thấy ngay:

java   14233   tcp   LISTEN   0.0.0.0   8080

-> đúng port, đúng process. Không cần grep, không cần nhớ flag.

Trước khi kill, mình nhìn thêm một bước: process này có connection ESTABLISHED nào không?

Trong Snitch, mình thấy:

  • không có client nào đang kết nối
  • chỉ giữ socket LISTEN

Thấy rõ ngay: giữ port nhưng không phục vụ gì.

Xử lý ngay, trong Snitch:

  • chọn process -> kill (có confirm) -> restart service.

Service lên lại, xong việc. Không phải copy PID, không phải đổi tab, không phải chạy thêm lệnh kiểm tra.

Tình huống 2: nghi ngờ outbound connection bất thường

Lần khác, service không chết nhưng response chậm bất thường. Chưa tới mức bật tracing hay profiler, mình chỉ muốn biết nhanh:

  • Có process nào đang mở quá nhiều connection outbound không?

Ở đây mình không cần bandwidth, chỉ cần count connection.

snitch ls -e

Mình nhìn thấy một PID có rất nhiều dòng cùng remote :443:

node   23145  tcp  ESTABLISHED  10.0.0.5:52341 -> 34.117.x.x:443
node   23145  tcp  ESTABLISHED  10.0.0.5:52342 -> 34.117.x.x:443
node   23145  tcp  ESTABLISHED  10.0.0.5:52343 -> 34.117.x.x:443
...

Không cần đếm chính xác, chỉ cần nhìn là đủ hiểu: process này đang mở outbound connection nhiều bất thường.

Ngay lúc đó mình đủ thông tin để bước tiếp theo:

  • kiểm tra code (pool/keep-alive/retry)
  • check config upstream
  • lúc này mới bật tool traffic như iftop/nethogs

Snitch không thay các tool kia. Nó giúp mình biết có đáng bật hay không.

Tình huống 3: debug nhanh “ai đang nói chuyện với ai”

Có những lúc mình không có một lỗi cụ thể, chỉ thấy hệ thống có gì đó không ổn. Lúc này mình hay mở Snitch ở chế độ TUI:

snitch

Rồi:

  • Lọc theo protocol (TCP/UDP)
  • Nhìn state (LISTEN/ESTABLISHED)
  • Khoanh vùng theo process name/PID

Kết

Snitch không thay thế được mấy tool chuyên sâu kia đâu, nhưng nó giúp anh em tiện debug mấy việc lặt vặt. Lúc đang gấp, thay vì phải nhớ flag hay mò log, bật Snitch lên cái là thấy ngay port nào kẹt, process nào đang giữ. Đơn giản, được việc, anh em dùng thử nhé.

Thông tin nổi bật

Sự kiện phát trực tiếp​

Event Thumbnail

Báo cáo quan trọng

Article Thumbnail
Article Thumbnail
Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận

Tiêu điểm chuyên gia