Grafana คืออะไร?

Grafana คือเครื่องมือ Open-Source ยอดนิยมที่ใช้สำหรับทำ Data Visualization และ Monitoring หน้าที่หลักของมันคือการนำข้อมูลตัวเลขสถิติ (Metrics), ข้อมูลบันทึกการทำงาน (Logs) หรือสถานะต่างๆ ของระบบมาแปลงและแสดงผลให้อยู่ในรูปแบบของ กราฟ, แผนภูมิ, และหน้าปัด (Dashboard) ที่สวยงามและเข้าใจง่าย

ถ้าเปรียบเทียบให้เห็นภาพ Grafana ก็เหมือนกับ “หน้าปัดเรือนไมล์ของรถยนต์” ครับ ตัวหน้าปัด (Grafana) ไม่ได้เป็นคนสร้างข้อมูลความเร็วหรือระดับน้ำมัน (เซ็นเซอร์ในรถเป็นคนเก็บ) แต่หน้าปัดมีหน้าที่เอาข้อมูลดิบเหล่านั้นมาแสดงผลให้คนขับดูและประเมินสถานการณ์ได้ทันที


หลักการทำงานของ Grafana

ข้อสำคัญที่สุดที่ต้องเข้าใจคือ Grafana ไม่ใช่ฐานข้อมูล (Database) มันไม่ได้มีหน้าที่เก็บข้อมูลด้วยตัวเองเป็นหลัก แต่มันทำงานเป็น “ตัวจัดการหน้าบ้าน” ที่ไปดึงข้อมูลจากหลังบ้านมาแสดงผล โดยมีขั้นตอนการทำงานและองค์ประกอบดังนี้ครับ:

1. การเชื่อมต่อแหล่งข้อมูล (Data Sources)

Grafana จะต้องถูกนำไปเชื่อมต่อกับระบบฐานข้อมูลที่ทำหน้าที่เก็บข้อมูล (มักจะเป็นข้อมูลแบบ Time-Series หรือข้อมูลที่มีเวลามากำกับ) เพื่อให้มันรู้ว่าจะต้องไปอ่านข้อมูลจากที่ไหน ตัวอย่างปลั๊กอินฐานข้อมูลที่นิยมใช้คู่กับ Grafana เช่น:

  • Prometheus: นิยมใช้สุดๆ ในการเก็บ Metrics ของการกินทรัพยากรเซิร์ฟเวอร์ (เช่น VPS Ubuntu) หรือ Docker Containers
  • InfluxDB: นิยมใช้เก็บข้อมูลเซ็นเซอร์ IoT หรือข้อมูลแอปพลิเคชันที่มีความถี่สูง
  • Loki: ใช้สำหรับเก็บและจัดการข้อมูล Logs (บันทึกข้อผิดพลาดต่างๆ)

2. การดึงข้อมูล (Querying)

เมื่อเราสร้างกรอบการแสดงผล 1 อัน (เรียกว่า Panel) บนหน้า Dashboard เราจะต้องเขียนคำสั่ง (Query) เพื่อบอก Grafana ว่าให้ดึงข้อมูลอะไรมา ตัวอย่างเช่น เขียนคำสั่งไปถาม Prometheus ว่า “ขอดูอัตราการใช้งาน RAM และ CPU ของโปรเจกต์ที่รันอยู่บน Docker ในช่วง 6 ชั่วโมงที่ผ่านมาหน่อย”

3. การแสดงผล (Visualization)

เมื่อฐานข้อมูลต้นทางส่งข้อมูลตัวเลขดิบๆ กลับมา Grafana จะนำข้อมูลนั้นมาวาดเป็นภาพตามประเภทที่เราตั้งค่าไว้ ซึ่งมีให้เลือกเยอะมาก เช่น:

  • Time series (กราฟเส้น): ใช้ดูเทรนด์การเปลี่ยนแปลงย้อนหลัง
  • Stat / Gauge (ตัวเลขเดี่ยว / หน้าปัด): ใช้ดูสถานะปัจจุบัน เช่น พื้นที่ Disk เหลือ 15%
  • Heatmap / Table: ดูความหนาแน่นของข้อมูล หรือลิสต์รายการ Error

4. ระบบแจ้งเตือน (Alerting)

นอกจากการเปิดหน้าเว็บเพื่อดูกราฟแล้ว Grafana ยังมีความสามารถในการเฝ้าระวัง (Monitoring) แบบอัตโนมัติ เราสามารถตั้งเงื่อนไข (Rules) ไว้ได้ เช่น “ถ้าระบบตรวจพบว่าเซิร์ฟเวอร์ไม่สามารถเข้าถึงได้ (Down) หรือ CPU วิ่งแตะ 100% ติดต่อกัน 5 นาที” ให้ Grafana ทำการยิง Webhook เพื่อส่งข้อความแจ้งเตือนไปยังแอปพลิเคชันต่างๆ เช่น ยิงข้อความเข้า Telegram Bot, Discord, หรือ Slack ทันที เพื่อให้เราเข้าไปแก้ปัญหาได้ทันท่วงที

สรุปการใช้งานจริง: ในการดูแลระบบหรือแอปพลิเคชัน (เช่น การทำ SaaS) นักพัฒนาจะไม่ค่อยมานั่งพิมพ์คำสั่งเช็คสถานะเซิร์ฟเวอร์ทีละเครื่องครับ แต่จะนิยมนำเครื่องมืออย่าง Prometheus ไปฝังไว้ตามเซิร์ฟเวอร์หรือ Container ต่างๆ เพื่อคอยดูดสถิติ แล้วใช้ Grafana เป็นศูนย์กลาง (Control Panel) สวยๆ เพื่อดูภาพรวมทั้งหมดของระบบและคอยแจ้งเตือนเวลามีสิ่งผิดปกติเกิดขึ้นนั่นเองครับ