เมื่อวันศุกร์ที่ผ่านมา ระบบ Production ของผมล่มสลายกลางดึก — Dashboard แสดงข้อผิดพลาดสีแดงโต้ตอบรัวๆ ผู้ใช้งานต่างโทรศัพท์มาหาทีม แต่ไม่มีใครรู้ว่าเกิดอะไรขึ้น เมื่อเช็ค Log พบว่ามี Error หลายรูปแบบปนกัน: ConnectionError: timeout after 30s, 429 Too Many Requests และ 500 Internal Server Error หลังจากแก้ไขปัญหาได้แล้ว ผมตัดสินใจว่าต้องสร้างระบบ Observability ที่เข้มแข็ง เพื่อไม่ให้เหตุการณ์แบบนี้เกิดขึ้นอีก
ทำไมต้องมี API Observability
AI API ต่างจาก API ทั่วไป เพราะมีต้นทุนที่สูง ใช้เวลาตอบสนองที่ยาวนาน และมีโอกาสเกิดข้อผิดพลาดหลายรูปแบบ การมีระบบ Observability ช่วยให้เราสามารถ:
- ตรวจจับปัญหาได้ก่อนที่ผู้ใช้จะแจ้ง
- วิเคราะห์สาเหตุของข้อผิดพลาดได้อย่างรวดเร็ว
- ปรับปรุงประสิทธิภาพและลดต้นทุนการใช้งาน
- วางแผนความจุ (Capacity Planning) ได้แม่นยำ
การตั้งค่า Observability Framework
เราจะใช้ OpenTelemetry ร่วมกับ Prometheus และ Grafana เพื่อสร้างระบบ Observability ที่ครอบคลุม ก่อนอื่นให้ติดตั้ง Library ที่จำเป็น:
pip install opentelemetry-api opentelemetry-sdk \
opentelemetry-exporter-prometheus \
prometheus-client aiohttp
จากนั้นสร้าง Base Client ที่มีระบบ Tracing และ Metrics ในตัว:
import time
import logging
from typing import Optional, Dict, Any
from dataclasses import dataclass, field
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.resources import Resource
from opentelemetry.trace import Status, Status