
บทนำ
ในยุคของ Cloud-native และ Microservices ระบบมีความซับซ้อนมากขึ้น บริการต่าง ๆ เชื่อมต่อกันหลายชั้น ทำให้การติดตามปัญหาหรือวัดประสิทธิภาพของระบบไม่ใช่เรื่องง่ายอีกต่อไป นี่คือเหตุผลที่เราต้องเข้าใจแนวคิดของ Observability และเครื่องมือหลักบน AWS เช่น CloudWatch และ X-Ray

Observability คืออะไร?
Observability หมายถึง “ความสามารถในการสังเกตและเข้าใจการทำงานภายในของระบบ” โดยการวิเคราะห์จากข้อมูลภายนอก เช่น Logs, Metrics และ Traces ซึ่งเป็น 3 เสาหลักสำคัญที่ใช้ร่วมกัน
- 📊 Metrics – ตัวเลขบ่งบอกสถานะของระบบ เช่น CPU, Memory, Latency
- 🧾 Logs – รายละเอียดเหตุการณ์ที่เกิดขึ้นในระบบ เช่น Error, Request
- 🔍 Traces – เส้นทางการทำงานของคำขอ (Request Flow)

CloudWatch คืออะไร?
Amazon CloudWatch คือเครื่องมือหลักในการเก็บและวิเคราะห์ข้อมูล Metrics และ Logs ของระบบ AWS ไม่ว่าจะเป็น EC2, Lambda, ECS, RDS หรือบริการอื่น ๆ
CloudWatch ช่วยให้คุณสามารถ:
- ✅ ดู Metrics แบบเรียลไทม์
- ✅ เก็บและค้นหา Logs
- ✅ ตั้งค่า Alarm เพื่อแจ้งเตือนอัตโนมัติ
- ✅ สร้าง Dashboard รวมข้อมูลจากหลายบริการ
ตัวอย่างการเขียน Log จาก AWS Lambda
// index.mjs
export const handler = async (event) => {
console.log("Request Received:", event);
try {
const response = { status: "ok", timestamp: Date.now() };
console.log("Response:", response);
return { statusCode: 200, body: JSON.stringify(response) };
} catch (err) {
console.error("Error:", err);
throw err;
}
};
Logs เหล่านี้จะถูกเก็บใน CloudWatch Log Group ของ Lambda Function โดยอัตโนมัติ
การตั้งค่า CloudWatch Alarm
Alarm ใช้สำหรับตรวจสอบค่าต่าง ๆ เช่น Error Rate หรือ Latency และแจ้งเตือนผ่าน Email, SNS หรือ PagerDuty เมื่อถึงเงื่อนไข
aws cloudwatch put-metric-alarm \
--alarm-name HighErrorRate \
--metric-name Errors \
--namespace AWS/Lambda \
--statistic Sum \
--period 300 \
--threshold 10 \
--comparison-operator GreaterThanThreshold \
--evaluation-periods 1 \
--alarm-actions arn:aws:sns:ap-southeast-1:123456789012:NotifyMe
AWS X-Ray คืออะไร?
AWS X-Ray เป็นบริการที่ใช้สำหรับ Distributed Tracing ช่วยวิเคราะห์เส้นทางของคำขอในระบบ Microservices เช่น Lambda, API Gateway, ECS, และ DynamoDB เพื่อหาคอขวด (Bottleneck) หรือจุดที่เกิด Error
การเพิ่ม X-Ray ใน Lambda
เพียงเปิด X-Ray ใน Lambda Console หรือเพิ่ม Permission ต่อไปนี้:
{
"Effect": "Allow",
"Action": [
"xray:PutTraceSegments",
"xray:PutTelemetryRecords"
],
"Resource": "*"
}
ตัวอย่างโค้ด Node.js ใช้ SDK ของ X-Ray:
import AWSXRay from 'aws-xray-sdk';
import AWS from 'aws-sdk';
AWSXRay.captureAWS(AWS);
const dynamo = new AWS.DynamoDB.DocumentClient();
export const handler = async (event) => {
const result = await dynamo.scan({ TableName: "Orders" }).promise();
return { statusCode: 200, body: JSON.stringify(result) };
};
Distributed Tracing คืออะไร?
Distributed Tracing ใช้สำหรับติดตามการไหลของคำขอผ่านหลายบริการในระบบ Microservices เช่น เมื่อผู้ใช้เรียก API Gateway → Lambda → DynamoDB → S3 เราสามารถดูได้ว่าแต่ละจุดใช้เวลานานเท่าไร และจุดใดเป็น Bottleneck
การดู Trace ด้วย X-Ray Console
ใน X-Ray Console คุณสามารถดู Trace Map ซึ่งแสดงภาพรวมของระบบ แต่ละ Node จะแสดงบริการ เช่น Lambda หรือ DynamoDB พร้อมเวลาตอบสนอง
การเชื่อมต่อ X-Ray กับ ECS/EKS
สำหรับระบบที่รันบน ECS หรือ EKS สามารถติดตั้ง X-Ray Daemon เพื่อติดตามการทำงานของ Container ได้ ตัวอย่าง Dockerfile:
FROM public.ecr.aws/xray/aws-xray-daemon:3.3.7
ENTRYPOINT ["/xray", "-o"]
จากนั้นใน Task Definition ของ ECS ให้เพิ่ม Container สำหรับ X-Ray Daemon รันควบคู่กัน
รวม Observability เข้ากับ CI/CD
การผสาน Observability เข้ากับ CI/CD Pipeline ช่วยให้ทีม DevOps ตรวจสอบได้ทันทีหลัง Deploy โดยสามารถเพิ่มขั้นตอน CloudWatch Metric Export หรือ X-Ray Trace Export เข้าไปใน Pipeline ได้
stages:
- name: Deploy
actions:
- name: DeployToECS
- name: Monitor
run: aws cloudwatch get-metric-data ...
Best Practices สำหรับ Observability
- ✅ เก็บ Logs แบบรวมศูนย์ (Centralized Logging)
- ✅ ตั้ง Metric Alarm สำหรับบริการสำคัญ
- ✅ ใช้ X-Ray Trace ID ผูกกับ Log Request ID
- ✅ ทำ Visualization ด้วย CloudWatch Dashboard
- ✅ ใช้ Tag เพื่อจัดกลุ่ม Service และ Environment
สรุป
Observability เป็นหัวใจของระบบ Cloud-native ที่ต้องการความน่าเชื่อถือสูง ด้วยเครื่องมืออย่าง CloudWatch และ X-Ray ทีมพัฒนาสามารถมองเห็นภาพรวมของระบบได้ครบทั้ง Logs, Metrics และ Traces ช่วยให้ตรวจจับปัญหาและปรับปรุงประสิทธิภาพของระบบได้อย่างรวดเร็ว
เมื่อเข้าใจหลักการ Observability แล้ว คุณจะสามารถออกแบบระบบที่มีความเสถียร และรองรับการขยายตัวของผู้ใช้ได้อย่างมั่นใจ 🚀
📘 บทความโดย King Pool
ภาพประกอบ: CloudWatch Metrics, X-Ray Trace Map, Distributed Tracing Flow