actuator เปิดอะไรไว้จริง ไม่ใช่อะไรที่คุณคิดว่ามันเปิด
ห้าบทที่ผ่านมาเราคุยกันเรื่องคำขอกับคำตอบ · บทนี้กับบทหน้าถามคำถามคนละแบบ คือ จากข้างนอกระบบ เราเห็นอะไรอยู่บ้าง
ใส่เข้าไปหนึ่งบรรทัด
หัวข้อที่มีชื่อว่า “ใส่เข้าไปหนึ่งบรรทัด”แล้วคนส่วนใหญ่ก็เชื่อว่าจากนี้ดูอะไรก็ได้
implementation("org.springframework.boot:spring-boot-starter-actuator")actuatorSpring Boot Actuatorชุดปลายทางสำหรับดูสถานะของโปรแกรมจากข้างนอก · ใส่ไว้แล้วเปิดให้น้อยกว่าที่คนส่วนใหญ่คิด · ค่าตั้งต้นให้สาม link เท่านั้น คือชุดปลายทางสำหรับดูสถานะของโปรแกรมจากข้างนอก · สตาร์ตขึ้นมาแล้วยิงไปที่รากของมัน
health · health-path · selfสาม link · ไม่ใช่สิบ ไม่ใช่ยี่สิบ
และในสามอันนั้น มีปลายทางจริงอยู่อันเดียวคือ health
· self คือ link ที่ชี้กลับมาที่ตัวรายการเอง และ health-path คือรูปที่รับส่วนต่อท้าย
ของปลายทางเดิม
ประกาศสิ่งที่อยากเปิด
หัวข้อที่มีชื่อว่า “ประกาศสิ่งที่อยากเปิด”endpoint exposureendpoint exposureการประกาศว่าปลายทางไหนของ actuator ให้เรียกผ่าน HTTP ได้ · สิ่งที่ไม่ได้ประกาศจะไม่มีอยู่สำหรับผู้เรียก ถึงจะติดตั้งไว้แล้วก็ตาม คือรายการที่ต้องเขียนเอง ไม่ใช่ค่าที่มีให้อยู่แล้ว
management.endpoints.web.exposure.include=health,info,metricsยิงไปที่รากอีกครั้ง
health · health-path · info · metrics · metrics-requiredMetricName · selfหก link · เพิ่มขึ้นสาม
| ทรง | จำนวน link |
|---|---|
| ค่าตั้งต้น | 3 |
| ประกาศสามชื่อ | 6 |
เราประกาศไปสามชื่อ แต่ link เพิ่มขึ้นสามอัน ทั้งที่ health มีอยู่แล้วตั้งแต่ต้น
เพราะ metrics ให้ link มาสองอัน · อันหนึ่งคือรายการชื่อทั้งหมด
อีกอันคือรูปที่รับชื่อของตัววัดต่อท้าย
การนับ link แล้วสรุปว่าเปิดกี่ปลายทาง จะนับเกินเสมอ · ถ้าต้องรายงานตัวเลขนี้ ให้บอกว่านับอะไรอยู่ ไม่ใช่บอกแค่ตัวเลข
สิ่งที่ค่าตั้งต้นเลือกให้ และเหตุผลของมัน
หัวข้อที่มีชื่อว่า “สิ่งที่ค่าตั้งต้นเลือกให้ และเหตุผลของมัน”ปิดไว้เป็นค่าตั้งต้น เพราะปลายทางพวกนี้ตอบคำถามที่ไม่ควรตอบให้ใครก็ได้
รายการปลายทางที่ actuator มีให้ ยาวกว่าที่เราเปิดไปมาก · บางอันบอกค่าตั้งค่าทั้งหมด บางอันบอกรายชื่อ bean ทุกตัว บางอันสั่งให้โปรแกรมทำอะไรบางอย่างได้ด้วย
ค่าตั้งต้นจึงเปิดแค่ health · ของที่ไม่ได้ประกาศ ไม่มีอยู่สำหรับผู้เรียก
ถึงจะติดตั้งไว้แล้วก็ตาม
บทนี้ตอบคำถามเดียวคือ อะไรถูกเปิดไว้บ้าง · มันไม่ได้ตอบว่าใครควรเรียกได้
สองคำถามนี้ต้องแยกให้ขาด · ปลายทางที่เปิดไว้บนช่องทางที่ทุกคนเข้าถึงได้ กับปลายทางเดียวกันที่เปิดบนช่องทางภายใน เป็นคนละเรื่องกันโดยสิ้นเชิง
คอร์สนี้ไม่แตะเรื่องการยืนยันตัวตนกับสิทธิ์เลย ตามที่ประกาศไว้ในหน้าแรก · สิ่งที่คอร์สนี้ยืนยันได้คือรายการที่เปิด ไม่ใช่ความปลอดภัยของมัน
สรุปสิ่งที่วัดได้ในบทนี้
หัวข้อที่มีชื่อว่า “สรุปสิ่งที่วัดได้ในบทนี้”สามข้อ · ทุกข้อนับจาก link ที่รากของ actuator ตอบกลับมา
- ค่าตั้งต้นให้สาม link และมีปลายทางจริงอยู่อันเดียว
- ประกาศสามชื่อแล้วได้หก link เพิ่มขึ้นสาม ไม่ใช่เพิ่มขึ้นสองตามจำนวนชื่อใหม่
- ปลายทางเดียวมี link ได้หลายอัน การนับ link จึงนับเกินจำนวนปลายทาง
บทที่ 7 จะเปิดปลายทางที่ชื่อ metrics แล้วถามว่าใช้มันตอบอะไรได้บ้าง
โดยเริ่มจากคำถาม ไม่ใช่เริ่มจากรายการ
- นับจากคีย์ใน
_linksที่รากของ actuator ตอบกลับมา ไม่ได้นับจากเอกสาร - สองทรงต่างกันที่บรรทัด
management.endpoints.web.exposure.includeบรรทัดเดียว - Spring Boot 4.1.1 · Kotlin 2.4.10
- รันซ้ำเองได้ด้วย
npm run verify:clinic-http - Spring Boot — Endpoints (เข้าถึง 2026-09-02) — รายการปลายทางทั้งหมด และค่าตั้งต้นของการเปิด
เช็กความเข้าใจ — บทที่ 6
ข้อ 1 / 3ค่าตั้งต้นของ actuator เปิดอะไรไว้