เลือกตัววัดจากคำถาม ไม่ใช่จากรายการที่มีให้
เปิด metrics ตามบทที่แล้ว แล้วยิงไปดูรายการชื่อ · สิ่งที่ได้คือชื่อหลายสิบชื่อ
และนั่นคือจุดที่คนส่วนใหญ่เริ่มผิด
เริ่มจากรายการ แล้วไปไม่ถึงไหน
หัวข้อที่มีชื่อว่า “เริ่มจากรายการ แล้วไปไม่ถึงไหน”คำถามว่า “มีอะไรให้วัดบ้าง” ไม่มีคำตอบที่ผิด จึงไม่มีคำตอบที่ถูกด้วย
รายการยาวๆ ชวนให้เลือกของที่ชื่อดูสำคัญ แล้วเอาไปขึ้นหน้าจอ · ผ่านไปหนึ่งเดือน หน้าจอเต็มไปด้วยเส้นที่ไม่มีใครดู เพราะไม่มีเส้นไหนตอบอะไร
ทางที่ใช้ได้คือเริ่มจากคำถาม · ขอบของเราตอบอะไรออกไปให้ผู้เรียกบ้าง
คำถามนี้ตอบได้ก็ต่อเมื่อเราแยกคำตอบตามรหัสได้ · เพราะ 200 กับ 400 กับ 409 กับ 500 เป็นคนละเรื่องกันหมด และเป็นเรื่องที่หกบทแรกของคอร์สนี้พูดถึงทั้งหมด
ตัววัดที่ตอบคำถามนั้น
หัวข้อที่มีชื่อว่า “ตัววัดที่ตอบคำถามนั้น”ตัวเดียว ไม่ใช่หลายสิบตัว
MicrometerMicrometerชั้นที่เก็บตัวเลขของโปรแกรมไว้ให้อ่าน · คอร์สนี้ใช้มันตอบคำถามเดียวคือผู้เรียกได้รหัสอะไรบ้าง · เรื่องหน้าจอกับการแจ้งเตือนเป็นของคอร์สอื่น คือชั้นที่เก็บตัวเลขของโปรแกรมไว้ให้อ่าน · ตัวที่ตอบคำถามข้างบนได้ชื่อ http.server.requestshttp.server.requestsชื่อของตัวนับคำขอที่เข้ามา · ตัวเดียวที่ตอบคำถามว่าขอบของเราตอบอะไรออกไปบ้าง เพราะมันแยกตามรหัสได้
มันไม่ได้เก็บเป็นตัวเลขตัวเดียว · มันแยกออกเป็นหลายช่องด้วย tagtagป้ายที่แยกตัวนับหนึ่งตัวออกเป็นหลายช่อง เช่นแยกตามรหัสตอบกลับ · ค่าของป้ายจะโผล่ก็ต่อเมื่อเคยมีคำขอที่ได้ค่านั้นจริง
และช่องที่เราสนใจคือช่องที่ชื่อ status
วัดก่อน แล้ววัดหลัง
หัวข้อที่มีชื่อว่า “วัดก่อน แล้ววัดหลัง”ยิงคำขอที่สำเร็จก่อน อ่านค่า แล้วยิงคำขอที่ชน แล้วอ่านอีกครั้ง
ก่อน 200หลัง 200 · 409ระหว่างสองครั้งนั้นเรายิงคำขอที่ทับเวลากันเข้าไปหนึ่งใบ ซึ่งบทที่ 4 ทำให้มันตอบ 409
409 โผล่เข้ามาในรายการหลังจากที่มันเกิดขึ้นจริงครั้งแรก
นี่คือข้อที่คนพลาดกันมากที่สุดเวลาอ่านตัววัด
หน้าจอที่ไม่มีเส้นของ 409 อยู่เลย แยกสองอย่างข้างล่างนี้ไม่ออก
- ยังไม่เคยมีคำขอไหนได้ 409 ซึ่งเป็นข่าวดี
- มีคนถอดการแปลงในบทที่ 4 ออกไปแล้ว ซึ่งเป็นข่าวร้ายมาก
สองอย่างนี้ให้ภาพเดียวกันเป๊ะ · ความว่างเปล่าไม่ใช่หลักฐาน
ทางแก้คือยิงคำขอที่ควรได้ 409 เข้าไปเองเป็นระยะ แล้วดูว่าป้ายนั้นยังอยู่ ซึ่งเป็นหลักเดียวกับ marker ในบทที่ 3 · ถามว่าใครตอบ ไม่ใช่ถามว่ามีคนตอบไหม
ทำไมบทนี้ไม่บอกจำนวนชื่อทั้งหมด
หัวข้อที่มีชื่อว่า “ทำไมบทนี้ไม่บอกจำนวนชื่อทั้งหมด”เพราะมันเป็นตัวเลขที่ข้ามเครื่องไม่ได้
รายการชื่อของ metrics ยาวเท่าไร ขึ้นอยู่กับว่าอะไรอยู่ใน classpath ของ build นั้น
· เพิ่มของเข้าไปหนึ่งอย่าง ตัวเลขก็เปลี่ยน
ตอนวัดจริง รอบทดลองนับได้ค่าหนึ่ง แล้ว probe ของคอร์สนับได้อีกค่าหนึ่ง บนเครื่องเดียวกัน เพราะสอง build มีของไม่เหมือนกัน
probe จึงขึ้นบัญชีตัวเลขนี้ไว้ว่าเป็นค่าที่ไม่ต้องเทียบ และบทนี้ไม่พิมพ์มันลงไป
ข้ออ้างที่กว้างกว่าเครื่องที่วัด คือข้ออ้างที่ผิดในที่ที่ไม่มีใครไปตรวจ
สรุปสิ่งที่วัดได้ในบทนี้
หัวข้อที่มีชื่อว่า “สรุปสิ่งที่วัดได้ในบทนี้”สามข้อ · ทุกข้อเป็นค่าของป้าย ไม่ใช่ตัวเลขของการวัด
- ตัววัดที่ตอบคำถามของขอบมีตัวเดียว คือ
http.server.requestsที่แยกตามstatus - ป้าย 409 ไม่มีอยู่ก่อนที่ 409 จะเกิดขึ้นจริง แล้วโผล่มาหลังจากนั้น
- จำนวนชื่อทั้งหมดผูกกับ classpath จึงไม่ใช่ค่าที่เอาไปเทียบข้ามเครื่องได้
บทที่ 8 จะรวบทุกอย่างเป็นตารางเดียว แล้วทำให้ตารางนั้นบังคับตัวเองได้
- อ่านค่าของป้ายสองครั้งในการรันเดียว โดยมีคำขอที่ชนคั่นอยู่ตรงกลาง · ลำดับของการอ่านเป็นส่วนหนึ่งของข้ออ้าง อ่านสลับกันแล้วข้ออ้างเปลี่ยนความหมาย
- probe บังคับทั้งสองทิศ คือก่อนหน้าต้องไม่มี 409 และหลังต้องมี
- Spring Boot 4.1.1 · Micrometer ที่มากับรุ่นนั้น
- รันซ้ำเองได้ด้วย
npm run verify:clinic-http - Spring Boot — Metrics
(เข้าถึง 2026-09-02) —
http.server.requestsและป้ายที่มากับมัน
เช็กความเข้าใจ — บทที่ 7
ข้อ 1 / 3ทำไมการเริ่มจากรายการชื่อของตัววัด จึงเป็นทางที่ไปไม่ถึงไหน