05 ClickStack
บันทึกสำหรับผู้สอนของโมดูล 05 — เวลา, แนวการบรรยาย, ปัญหาที่พบบ่อย และขั้นตอนรีเซ็ต
macOS terminal: Run workshop commands in Terminal using zsh or bash.
คู่มือประกอบของผู้ดำเนินเวิร์กช็อปสำหรับบทเรียนผู้เรียน 05 ClickStack
เวลา
ประมาณ 15 นาที telemetry ต้องสะสมก่อนแล็บ incident ในโมดูล 07 ดังนั้นให้เริ่ม collector ให้เร็วที่สุดเท่าที่โมดูลนี้เอื้อ และปล่อยให้มันทำงานต่อไป
แนวการบรรยาย
- Managed ClickStack เก็บ telemetry ไว้ใน ClickHouse Cloud โดย HyperDX เป็น UI ที่โฮสต์ให้
ตัว collector ในเครื่องเพียงส่งต่อข้อมูล แสดงทั้ง trace ของคำขอแบบ end-to-end และเรกคอร์ด
DEBUG ... ClickHouse query okที่เพิ่งเข้ามาใน Log source - ให้ผู้เรียนเริ่ม collector ในขั้นที่ 1 ก่อนที่จะเปิด Managed ClickStack ใน ขั้นที่ 2 วิธีนี้ให้เวลา telemetry ทยอยเข้ามา และทำให้มุมมองแรกใน UI ที่โฮสต์มีประโยชน์
- แสดง trace ของคำขอแบบ end-to-end หนึ่งรายการบนโปรเจกเตอร์
ปัญหาที่พบบ่อย
- พอร์ต OTLP ของ host 4317/4318 ถูกใช้อยู่แล้ว: ให้เขาตั้ง
OTEL_GRPC_HOST_PORT/OTEL_HTTP_HOST_PORTใน.env.workshop(preflight จะแนะนำค่า เช่น 24317/24318) และรันจากที่ใดก็ได้ภายใน repository ที่ clone มาcd "$(git rev-parse --show-toplevel)/workshops/build_workshop/app" && ./preflight.shโดย back end เข้าถึง collector ภายในเครือข่ายเดียวกัน ดังนั้นการเปลี่ยนพอร์ตปลอดภัย - ไม่ได้เริ่ม overlay ของ collector (ลืม
-f docker-compose.otel.ymlตัวที่สอง) จึงไม่มี อะไรเข้ามาใน HyperDX OTLP_AUTH_TOKENไม่ตรงกัน หรือไม่มีCLICKHOUSE_*ใน.env.workshop(collector ใช้CLICKHOUSE_HOST/PORT/USER/PASSWORDซ้ำเพื่อเข้าถึง Cloud service)- ยังไม่มี traffic เกิดขึ้น ให้เขาคลิกดูทั้งสอง dashboard
- บน Docker Desktop ตัว scraper
--profile container-logsที่เป็นทางเลือกไม่สามารถ mount path ของ log บน host ได้ (daemon อยู่ใน VM) ซึ่งเป็นเรื่องปกติ log ของ backend ยังเดินทางผ่าน OTLP ใช้docker compose ... logsเพียงเพื่อวินิจฉัยตัวส่งต่อเมื่อ HyperDX ว่างเปล่าเท่านั้น - หลังจาก overlay สร้าง backend ใหม่ แอปเคยตอบ 502 (nginx ของ frontend แคช IP เดิมของ backend ไว้) ตอนนี้ frontend resolve ใหม่ทุกคำขอ จึงหายเองภายในราว 10 วินาที และไม่ต้องรีสตาร์ตด้วยมือ ยืนยันว่าแก้แล้วในการซ้อม
- อ้างอิงจากการซ้อม: ตรวจสอบ pipeline ของ telemetry แบบ end to end แล้ว — trace ของ
nyc-taxi-backendพร้อม child spanclickhouse.queryที่มีdb.statement/db.elapsed_ms/db.rows_returnedยืนยันแล้วในการซ้อมแบบ clean-room เดือน 2026-07
ขั้นตอนรีเซ็ต
- รีสตาร์ตด้วยไฟล์ compose ทั้งสองไฟล์:
docker compose --env-file .env.workshop -f docker-compose.workshop.yml -f docker-compose.otel.yml up -d --build - ใน Cloud console ให้เปิด service เลือก ClickStack แล้วเปิด UI ที่โฮสต์ใหม่ ถ้า session ของ SSO หมดอายุ