18 คะแนน โดย GN⁺ 2025-02-21 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • เครื่องมือที่ช่วยให้สามารถติดตามคำขอเครือข่ายทั้งหมดที่เกิดขึ้นภายในคอนเทนเนอร์ Docker ได้
    • เป็นการนำความสามารถของ Wireshark มาใช้กับสภาพแวดล้อมคอนเทนเนอร์
  • ทำให้สามารถวิเคราะห์ทราฟฟิกเครือข่ายของเซิร์ฟเวอร์แบ็กเอนด์แบบเรียลไทม์ และแก้ปัญหาในสภาพแวดล้อมโปรดักชันได้รวดเร็วยิ่งขึ้น

ฟีเจอร์หลัก

  • ใช้งานได้ทันทีโดยไม่ต้องตั้งค่าเพิ่มเติม
    • เพียงเพิ่ม subtrace run ไว้หน้าคำสั่งรันเซิร์ฟเวอร์แบ็กเอนด์
  • ไม่ต้องแก้ไขโค้ด
  • รองรับทุกภาษาโปรแกรมมิง (Python, Node.js, Go เป็นต้น)
  • ตรวจสอบ payload ทั้งหมดของคำขอ, header, status code และ latency ได้
  • มี performance overhead ต่ำกว่า 100µs
  • พัฒนาบนพื้นฐานของ Clickhouse
  • โอเพนซอร์ส

วิธีการทำงานของ Subtrace

  • ดักจับ Linux system call (syscall) ที่เกี่ยวข้องกับเครือข่ายทั้งหมดด้วย Seccomp BPF
  • ทำ proxy ให้กับการเชื่อมต่อ TCP เพื่อวิเคราะห์คำขอ HTTP และส่งต่อไปยังเบราว์เซอร์ผ่าน WebSocket
  • สามารถดูคำขอในรูปแบบภาพได้ผ่านแท็บ Network ของ Chrome DevTools
  • ไม่ใช่แบบอิงล็อกเหมือน Sentry หรือ OpenTelemetry แต่สามารถเห็นทุกคำขอได้แบบเรียลไทม์ตามจริง

เกี่ยวกับการมีส่วนร่วมในโค้ด

  • Subtrace เป็นโอเพนซอร์ส แต่ขณะนี้ยังไม่รับ Pull Request
  • เนื่องจากเป็นสตาร์ทอัพที่ดำเนินงานด้วยทีมขนาดเล็ก จึงยังไม่มีทรัพยากรเพียงพอในการดูแลชุมชนโอเพนซอร์สอย่างมีประสิทธิภาพ
  • นโยบายนี้อาจเปลี่ยนแปลงได้ในอนาคต และยินดีรับ feature request กับ bug report เสมอ

2 ความคิดเห็น

 
codemasterkimc 2025-02-21

ถ้าเจอปัญหาด้วย Falco หรือ linkerd แล้วค่อยวิเคราะห์ด้วย subtrace ตอนจำเป็น ก็ดูเข้าท่าดีนะ~ :)

 
GN⁺ 2025-02-21
ความคิดเห็นจาก Hacker News
  • พออ่านเอกสารแล้ว ดูเหมือนว่าโปรเซส subtrace จะส่งข้อมูลทั้งหมดไปยังเซิร์ฟเวอร์ แบบนั้นคงไม่อยากใช้ในสภาพแวดล้อมโปรดักชันที่จัดการ API key และข้อมูลส่วนตัว
    • สงสัยว่ามีวิธีรันแบบโฮสต์เองทั้งหมดหรือไม่ ถ้าไม่มี มีแผนจะทำหรือเปล่า? แล้วจะทำรายได้จากตัวเลือกโฮสต์เองอย่างไรด้วย
  • คำว่า Wireshark อาจทำให้เข้าใจผิดเล็กน้อย มันใกล้เคียงกับ "ตัวตรวจสอบเครือข่าย" ที่ใช้แท็บ network ของเบราว์เซอร์มากกว่า
    • ดูมีประโยชน์มาก และจะลองใช้แน่นอนเพื่อดูว่าควรใส่ไว้ในชุดเครื่องมือหรือไม่
  • ดูเหมือนว่าจะใช้ได้เฉพาะกับคำขอ HTTP ถ้าอย่างนั้นการเปรียบเทียบกับ Wireshark ก็ไม่ค่อยเหมาะนัก
  • ใน Docker networking สถานการณ์ดีบักที่เจ็บปวดที่สุดมักเป็นการจัดการทราฟฟิกที่ไม่ใช่ TCP ถึงอย่างนั้นก็ดูมีประโยชน์ สิ่งที่ไม่เข้าใจคือทำไมต้องใช้ account token subtrace ต้องมีการเชื่อมต่อเครือข่ายด้วยหรือ? ทั้งหมดนี้ควรรันในเครื่อง และรายละเอียดการเชื่อมต่อแบบนี้ไม่ควรออกจากโฮสต์เด็ดขาด
  • ขอชื่นชมสำหรับการดักจับแบบ seccomp นี่เป็นวิธีแก้ปัญหาที่เรียบร้อยมาก เราเคยทำอะไรสนุก ๆ ใน mitmproxy โดยใช้ BPF_PROG_TYPE_CGROUP_SOCK eBPF แต่มันใช้กับคอนเทนเนอร์ไม่ได้เลย น่าทึ่งที่การดักจับ system call ที่เกี่ยวข้องทั้งหมดทำงานได้ดี
  • สงสัยว่าสามารถถอดรหัส TLS ได้หรือไม่ น่าจะทำได้โดยการ hook การเรียกใช้ไลบรารีทั่วไป
  • ดูจากวิดีโอแล้ว เหมือนว่าแดชบอร์ดจะโฮสต์อยู่ที่ sibtrace.dev เลยสงสัยว่าข้อมูลของฉันถูกส่งไปที่นั่นหรือเปล่า แบบนั้นรับไม่ได้เด็ดขาด
  • ยังไม่ได้ลองใช้ แต่สงสัยว่าในโปรดักชันจะดีบักคำขอ/เซสชันเฉพาะเจาะจงได้อย่างไร กรองด้วยอะไรอย่าง request trace ID ได้หรือไม่
  • อยากได้เครื่องมือแบบนี้มาตลอด ครั้งหน้าที่ต้องตรวจสอบทราฟฟิกของ Docker คอนเทนเนอร์จะลองใช้ดู