18 điểm bởi GN⁺ 2025-02-21 | 2 bình luận | Chia sẻ qua WhatsApp
  • Công cụ giúp theo dõi mọi yêu cầu mạng phát sinh trong container Docker
    • Áp dụng khả năng của Wireshark vào môi trường container
  • Nhờ đó có thể phân tích lưu lượng mạng của máy chủ backend theo thời gian thực và khắc phục sự cố trong môi trường production nhanh hơn

Tính năng chính

  • Có thể dùng ngay mà không cần cấu hình riêng
    • Chỉ cần thêm subtrace run vào trước lệnh chạy máy chủ backend
  • Không cần sửa mã nguồn
  • Hỗ trợ mọi ngôn ngữ lập trình (Python, Node.js, Go, v.v.)
  • Có thể xem toàn bộ payload, header, mã trạng thái và độ trễ của yêu cầu
  • Overhead hiệu năng dưới 100µs
  • Dựa trên Clickhouse
  • Mã nguồn mở

Cách Subtrace hoạt động

  • Chặn mọi system call Linux liên quan đến mạng bằng Seccomp BPF
  • Proxy kết nối TCP để phân tích yêu cầu HTTP, rồi truyền chúng tới trình duyệt qua WebSocket
  • Có thể quan sát trực quan các yêu cầu bằng tab Network của Chrome DevTools
  • Không dựa trên log như Sentry hay OpenTelemetry, mà cho phép xem nguyên trạng mọi yêu cầu theo thời gian thực

Về việc đóng góp mã

  • Subtrace là mã nguồn mở nhưng hiện chưa nhận Pull Request
  • Do đặc thù startup, dự án được vận hành bởi một nhóm nhỏ và chưa đủ nguồn lực để quản lý cộng đồng mã nguồn mở một cách hiệu quả
  • Chính sách này có thể thay đổi trong tương lai, và các yêu cầu tính năng cùng báo cáo lỗi luôn được hoan nghênh

2 bình luận

 
codemasterkimc 2025-02-21

Phát hiện vấn đề bằng Falco hoặc linkerd, rồi khi cần thì phân tích bằng subtrace là được nhỉ~ :)

 
GN⁺ 2025-02-21
Ý kiến trên Hacker News
  • Đọc tài liệu thì có vẻ như tiến trình subtrace gửi toàn bộ dữ liệu lên máy chủ. Tôi không muốn làm vậy trong môi trường production xử lý API key và dữ liệu cá nhân
    • Tôi muốn biết có cách nào chạy hoàn toàn self-hosted không. Nếu chưa có thì có kế hoạch không? Tôi cũng tò mò họ sẽ kiếm tiền từ tùy chọn self-hosted như thế nào
  • Gọi là Wireshark thì hơi dễ gây hiểu lầm. Nó gần với một "trình kiểm tra mạng" kiểu tab Network của trình duyệt hơn
    • Trông thực sự hữu ích, tôi nhất định sẽ thử để xem có nên thêm vào bộ công cụ hay không
  • Có vẻ chỉ áp dụng cho các HTTP request. Nếu vậy thì so sánh với Wireshark là không phù hợp
  • Trong Docker networking, kịch bản debug đau đầu nhất luôn là xử lý lưu lượng không phải TCP. Dù vậy nó vẫn có vẻ hữu ích. Điều tôi không hiểu là tại sao lại cần token tài khoản. subtrace có cần kết nối mạng không? Tất cả chuyện này nên chạy cục bộ, và những chi tiết kết nối kiểu này tuyệt đối không nên rời khỏi host
  • Xin chúc mừng với cơ chế chặn dựa trên seccomp. Đây là một cách giải quyết vấn đề thật sự rất gọn. Chúng tôi từng làm một số thứ thú vị trong mitmproxy với eBPF BPF_PROG_TYPE_CGROUP_SOCK, nhưng trong container thì hoàn toàn không hoạt động. Thật hay khi thấy việc chặn mọi system call liên quan lại hoạt động tốt
  • Tôi tò mò liệu nó có thể giải mã TLS hay không. Có lẽ là được nếu hook vào các lời gọi thư viện phổ biến
  • Xem video thì có vẻ dashboard được host trên sibtrace.dev. Tôi muốn biết dữ liệu của tôi có bị gửi tới đó không. Điều đó thì tuyệt đối không được
  • Tôi chưa dùng thử, nhưng điều tôi tò mò là làm sao debug một request/session cụ thể trong production. Không rõ có thể lọc theo thứ như request trace ID hay không
  • Tôi luôn muốn có một công cụ như thế này. Lần tới khi cần kiểm tra lưu lượng của Docker container, tôi sẽ thử dùng nó