รู้จัก Grafana แดชบอร์ดสำหรับมอนิเตอร์ที่มีความยืดหยุ่นและใช้ง่าย

Nutmos
KBTG Life
Published in
3 min readSep 22, 2020

ระบบมอนิเตอร์ในปัจจุบันของ KBTG จะมีค่อนข้างหลากหลาย เพราะโจทย์สำคัญของเราคือแดชบอร์ดสำหรับแต่ละระบบจะต้องเห็นข้อมูลครบถ้วน ชัดเจน และรวดเร็ว ซึ่งหนึ่งระบบก็อาจจะมีอุปกรณ์ไว้ใช้มอนิเตอร์ระบบอย่างรอบด้าน

ทั้งนี้ระบบมอนิเตอร์ทุกอย่างก็ต้องมีเครื่องมือของตัวเอง จะดีกว่าไหมถ้าเรานำระบบทั้งหมดมาโชว์ไว้บนแดชบอร์ดเดียว ซึ่งสิ่งนี้ก็ทำได้จริงด้วย Grafana ครับ

Grafana คืออะไร

Grafana เป็นซอฟต์แวร์ทำแดชบอร์ดที่มีจุดเด่นคือเชื่อมต่อกับฐานข้อมูลได้หลายรูปแบบ มีปลั๊กอินทำแดชบอร์ดหลากหลายในตัว ทำให้เมื่อคิวรีข้อมูลแล้วก็จะสามารถนำมาทำ Presentation ที่ดูสวยงาม พร้อมนำไปใช้งานได้ทันที ซึ่งถ้าปลั๊กอินที่มีอยู่ไม่พอก็สามารถดาวน์โหลดหรือเขียนเพิ่มเข้าไปได้

ภาพจาก grafana.com

ทำไมต้อง Grafana?

เนื่องจากงานหลักของ Infra คือต้องมอนิเตอร์ระบบให้รอบด้านเพื่อวางแผนและจัดการ Incident เราจึงมีการใช้อุปกรณ์หลายอย่าง เพราะแต่ละตัวจะมีข้อดีข้อเสียที่เหมาะกับงานแต่ละประเภท เช่น

  • Elasticsearch ใช้เก็บ Log จากแอป
  • Prometheus ใช้เก็บเมตริก เช่น CPU, Memory, Network I/O
  • Jaeger เอาไว้ใช้เก็บข้อมูลเกี่ยวกับการ Tracing
  • ระบบมอนิเตอร์ของคลาวด์แต่ละค่าย เช่น ไว้ใช้เก็บเมตริกของ Cloud นั้นๆ

ความยากจึงบังเกิดขึ้นเมื่อเราต้องนำข้อมูลเหล่านี้มารวมกันแล้วแสดงออกมาเป็น Presentation ที่ต้องสวย ดูเข้าใจง่าย และเรียลไทม์ ทำให้เครื่องมือ Presentation ที่ติดมากับอุปกรณ์มอนิเตอร์ไม่ค่อยเวิร์คเพราะมักจะยึดติดกับระบบใดระบบหนึ่ง

และเราก็ได้ค้นพบ Grafana อุปกรณ์ที่สามารถคิวรีข้อมูลจาก Data Source หลายตัว ทำงานได้หลายรูปแบบ คอนฟิกง่าย หรือจะเขียนปลั๊กอินเองก็ได้ และยังเป็นรูปแบบที่ค่อนข้างสวยงามและตอบโจทย์เกือบทุกอย่างของเรา

ที่สำคัญ Grafana เวอร์ชันโอเพ่นซอร์สดาวน์โหลดฟรีครับ !!

เริ่มต้นใช้งาน Grafana

Grafana มีวิธีใช้งานที่หลากหลายมาก แต่วิธีหนึ่งที่ผมจะแนะนำคือรัน Grafana บน Docker เพราะเพียงแค่ Pull Image มารันก็ใช้งานได้เลย หรือจะนำไปรันบน Kubernetes ก็ได้นะ (แต่ในบทความนี้ขอเริ่มต้นรันบน Docker ก่อน)

สั่งรัน Grafana ด้วยคำสั่งนี้ (ในบทความนี้จะใช้เวอร์ชัน 7.0.3) โดยสั่ง Map Port บนเครื่องที่พอร์ต 3000 เข้ากับพอร์ต 3000 บน Docker เนื่องจากค่าเริ่มต้นของ Grafana จะ Listen ที่พอร์ต 3000

docker run -p 3000:3000 grafana/grafana:7.0.3

จากนั้นไปที่บราวเซอร์ เข้า localhost:3000 ใช้ Username และ Password ค่าเริ่มต้นเป็น Admin ทั้งคู่ และตั้งรหัสผ่านใหม่

เมื่อเข้ามาได้แล้ว จะพบกับหน้าแรก Welcome to Grafana

เรามาลองเพิ่ม Data Source กัน เข้าไปที่ Configuration > Data Sources และเลือก Data Source ที่ต้องการเพิ่ม ครั้งนี้ผมจะใช้ Prometheus ทดสอบเป็นตัวอย่าง

ใส่รายละเอียดของ Prometheus เข้าไป

เลื่อนลงไปด้านล่าง กด Save & Test เมื่อขึ้นสีเขียวว่า “Data source is working” ก็เป็นอันเสร็จสิ้นการสร้าง Data Source

ขั้นต่อไปเราจะมาสร้างแดชบอร์ดกัน โดยครั้งนี้ผมจะคิวรีการใช้เมมโมรีโดยรวมของโหนดทุกโหนดบนคลัสเตอร์ Kubernetes ทั้งหมด โดยจะคิวรีจาก Prometheus

วิธีใช้งานคือให้กดปุ่มบวกทาง Sidebar เลือก Dashboard และแดชบอร์ดใหม่จะปรากฏขึ้นมา กดปุ่ม Add new panel ก็จะสร้าง Panel ใหม่ให้เรียบร้อย

จากนั้นใส่ข้อมูลต่างๆ ลงใน Panel

  • Query ใส่ในฟอร์แมตของแต่ละแพลตฟอร์ม อย่างเช่น Prometheus ก็ใส่ PromQL
  • เลือกรูปแบบของ Visualization ว่าจะให้เป็นอะไร เช่น Stat, Gauge ซึ่งตรงนี้เราสามารถลงปลั๊กอินเพิ่มได้
  • กำหนดหน่วยของข้อมูลและอื่นๆ

เพียงเท่านี้ เราก็จะได้กราฟสวยๆ ที่อัพเดตได้แบบเรียลไทม์แล้ว

ข้อเสียของ Grafana

สิ่งหนึ่งที่เห็นได้ค่อนข้างชัดคือ Grafana เป็นเครื่องมือที่ถูกออกแบบมากลางๆ ไม่ยึดติดกับ Data Source เพียงแหล่งเดียว จึงทำให้เราสามารถทำ Presentation โดยการคิวรีข้อมูลจากหลาย Data Source มารวมกันในแดชบอร์ดเดียวได้ง่ายๆ ดังที่กล่าวไปในส่วนของข้อดีข้างต้น

แต่ความที่ไม่ยึดติดนี้ก็มองได้ว่าเป็นข้อเสียอีกรูปแบบหนึ่งของ Grafana ที่อาจจะไม่สามารถคิวรีข้อมูลที่เป็นฟอร์แมตเฉพาะมากๆ ของ Data Source แต่ละตัว หากปลั๊กอินของ Grafana ไม่รองรับฟอร์แมตนั้น รวมทั้งตัวปลั๊กอินของ Data Source บน Grafana เองก็อาจจะอัพเดตไม่ทันกับฟีเจอร์ใหม่ๆ ของ Data Source

ข้อเสียทั้งหมดที่ว่าอาจจะไม่ใช่ประเด็นสำคัญมาก ถ้าเราแค่ต้องการนำ Grafana มาใช้ทำ Presentation ให้คนเข้าใจง่ายๆ ส่วนที่เหลืออาจจะนำเครื่องมือเฉพาะของ Data Source ไปใช้ในการบริหารจัดการก็ได้ครับ

สรุป

ในปัจจุบัน Grafana เป็นแดชบอร์ดสำหรับการมอนิเตอร์ระบบที่ค่อนข้างครบถ้วนในการมอนิเตอร์เรียลไทม์ ประกอบกับการใช้งานที่ง่าย UI ที่สวยงาม ทำให้ Grafana ค่อนข้างเป็นที่นิยมในปัจจุบัน

ถ้าใครกำลังมองหาแดชบอร์ดสำหรับมอนิเตอร์ที่เข้าถึงผู้ใช้งานได้ในวงกว้าง ฟรี ใช้งานง่าย และทำงานตามความสามารถขั้นพื้นฐานได้ครบถ้วน ผมมองว่า Grafana คือตัวเลือกที่ควรนำมาพิจารณาและลองใช้ดูกันสักครั้งครับ

สำหรับชาวเทคคนไหนที่สนใจเรื่องราวดีๆแบบนี้ หรืออยากเรียนรู้เกี่ยวกับ Product ใหม่ๆ ของ KBTG สามารถติดตามรายละเอียดกันได้ที่เว็บไซต์ www.kbtg.tech

--

--