การมอนิเตอร์ AI Agents ด้วย CloudWatch

การบันทึก (Logging) ทุกการเรียกใช้งาน agent ลงในฐานข้อมูลไม่ใช่การมอนิเตอร์ แต่มันเป็นเพียงแค่การจัดเก็บข้อมูลเท่านั้น

หากคุณต้องรัน SQL query ตอนตี 2 เพื่อดูว่าตัวสรุปความ (summarizer) ของคุณทำงานช้าหรือไม่ แสดงว่าคุณล้มเหลวในเรื่อง observability คุณต้องการ dashboard และการแจ้งเตือน (alarms) ไม่ใช่แค่แถวข้อมูลในฐานข้อมูล

ผมพบสองวิธีในการมอนิเตอร์ AI agents โดยไม่เพิ่ม latency หรือทำให้โค้ดซับซ้อนขึ้น

𝟭. ใช้ Metric Filters สำหรับรูปแบบความล้มเหลว (Failure Modes)

รูปแบบความล้มเหลว เช่น การติดเพดานงบประมาณ (budget caps) หรือการถูกจำกัดการใช้งานบริการ (service throttling) ไม่ควรเป็นสิ่งที่มองไม่เห็น อย่าเขียนโค้ดใหม่เพื่อเรียก API แต่ให้ใช้ log ที่มีอยู่แล้วแทน

เมื่อถึงเพดานงบประมาณ โค้ดของคุณจะบันทึก error ไว้ คุณสามารถตั้งค่า CloudWatch Metric Filter เพื่อสแกน log เหล่านั้น หากรูปแบบตรงกัน CloudWatch จะเพิ่มค่า metric ให้โดยอัตโนมัติ

วิธีนี้มีราคาถูก ไม่ต้องใช้สิทธิ์ IAM เพิ่มเติม และไม่เพิ่ม latency ให้กับ agent ของคุณเลย

ใช้สิ่งนี้สำหรับ:

  • เมื่อถึงเพดานค่าใช้จ่ายรายเดือน
  • Error จากการถูก Bedrock throttling
  • ความล้มเหลวทั่วไปของ agent

𝟮. ใช้ EMF สำหรับข้อมูลประสิทธิภาพ (Performance Data)

หากคุณต้องการติดตาม latency, การใช้งาน token หรือต้นทุนต่อ agent ลำพังแค่ Metric Filters นั้นไม่เพียงพอ คุณจำเป็นต้องมี dimensions

อย่าใช้ PutMetricData เพราะมันเป็นการเรียกเครือข่ายแบบ synchronous ซึ่งจะเพิ่มเวลา 30ms ถึง 80ms ให้กับ request ของคุณ และอาจล้มเหลวได้หากตัว CloudWatch เองกำลังทำงานหนัก

ให้ใช้ Embedded Metric Format (EMF) แทน

คุณเพียงแค่เขียน JSON บรรทัดเดียวลงใน stdout แล้ว CloudWatch จะดึงข้อมูลเหล่านี้ออกมาเป็น metrics พร้อม dimensions ให้โดยอัตโนมัติ

ด้วย JSON เพียงบรรทัดเดียว คุณจะได้:

  • จำนวนการเรียกใช้งานทั้งหมด (Total invocations)
  • อัตราข้อผิดพลาด (Error rates)
  • Latency (P95)
  • Input และ output tokens
  • ต้นทุนต่อโมเดลและต่อ agent

กฎของการทำ Observability อย่างมีประสิทธิภาพ

  • ส่งข้อมูลออกมาเพียงบรรทัดเดียวแล้วปล่อยให้ CloudWatch ทำงาน
  • อย่าปล่อยให้ telemetry ทำให้ agent ของคุณพัง ควรครอบการเรียก metric ด้วย try-except blocks
  • ตั้งการแจ้งเตือน (alarm) เมื่อเกิดเหตุการณ์ผิดปกติแบบต่อเนื่อง (bursts) ไม่ใช่แค่เหตุการณ์เดียว การถูก throttle หนึ่งครั้งเป็นเรื่องปกติ แต่ถ้าถูก throttle สิบครั้งภายในห้านาที นั่นคืออุบัติการณ์ (incident)
  • ใช้ dimensions สำหรับ agent เฉพาะเจาะจง แต่ใช้ค่ารวม (aggregates) สำหรับ latency ในระดับระบบ
  • จับคู่ error ด้วย code ไม่ใช่ด้วยข้อความ (text strings)

คุณสามารถสร้างระบบ monitoring ระดับมืออาชีพได้ด้วยต้นทุน $0 โดยใช้เพียงแค่ logs และ EMF

Source: https://dev.to/aws-builders/monitorear-agentes-de-ia-con-cloudwatch-45c4

Optional learning community: https://t.me/GyaanSetuAi