Graphite คือระบบกราฟแบบเรียลไทม์ที่ปรับขนาดได้สูงและเครื่องมือตรวจสอบระดับองค์กร ใช้เพื่อรวบรวมข้อมูลเว็บไซต์แบบเรียลไทม์และจัดทำสถิติและสามารถรวบรวมข้อมูลสถานะการดำเนินงานบริการเว็บไซต์ต่างๆ
ใครควรใช้กราไฟท์?
ใครก็ตามที่ต้องการติดตามค่าตัวเลขใดๆ ในระยะยาว หากคุณมีตัวเลขที่อาจเปลี่ยนแปลงเมื่อเวลาผ่านไป และคุณอาจต้องการสร้างกราฟค่านั้นเมื่อเวลาผ่านไป กราไฟท์อาจเหมาะกับความต้องการของคุณ
โดยเฉพาะอย่างยิ่ง กราไฟท์ได้รับการออกแบบมาเพื่อจัดการข้อมูลอนุกรมเวลาที่เป็นตัวเลข ตัวอย่างเช่น กราไฟต์เหมาะอย่างยิ่งสำหรับการสร้างกราฟราคาหุ้น เนื่องจากเป็นตัวเลขที่เปลี่ยนแปลงไปตามกาลเวลา ไม่ว่าจะเป็นจุดข้อมูลไม่กี่จุด หรือตัววัดประสิทธิภาพหลายสิบตัวจากเซิร์ฟเวอร์นับพันตัว Graphite ก็เหมาะสำหรับคุณ เป็นโบนัส คุณไม่จำเป็นต้องทราบชื่อของสิ่งเหล่านี้ล่วงหน้า (ใครต้องการรักษาการกำหนดค่าขนาดใหญ่เช่นนี้) คุณเพียงแค่ส่งชื่อตัวชี้วัด การประทับเวลา และค่า แล้ว Graphite จะจัดการส่วนที่เหลือ
กราไฟท์สามารถปรับขนาดได้แค่ไหน?
จากมุมมองของ CPU Graphite จะปรับขนาดในแนวนอนทั้งส่วนหน้าและส่วนหลัง ซึ่งหมายความว่าคุณสามารถเพิ่มเครื่องจักรเพื่อรับปริมาณงานได้มากขึ้น นอกจากนี้ ยังทนต่อข้อผิดพลาด กล่าวคือ การสูญเสียเครื่องแบ็กเอนด์จะทำให้ข้อมูลสูญหายน้อยที่สุด (ไม่ว่าเครื่องนั้นจะแคชไว้ในหน่วยความจำก็ตาม) และจะไม่ทำให้ระบบเสียหายหากคุณมีความจุเหลือเพียงพอที่จะรองรับโหลด
จากมุมมองของ I/O ภายใต้โหลด Graphite จะดำเนินการ I/O เล็กๆ น้อยๆ จำนวนมากกับไฟล์ต่างๆ จำนวนมากอย่างรวดเร็ว เนื่องจากตัววัดต่างๆ ที่ส่งไปยัง Graphite จะถูกจัดเก็บไว้ในไฟล์ฐานข้อมูลของตัวเอง ซึ่งคล้ายกับจำนวนเครื่องมือที่สร้างบน RRD (draraw, Cacti, Centreon ฯลฯ) ที่ใช้งานได้ ในความเป็นจริง กราไฟท์ใช้ RRD ในการจัดเก็บในตอนแรกจนกระทั่งมีข้อจำกัดพื้นฐานเกิดขึ้นซึ่งจำเป็นต้องมีเครื่องมือจัดเก็บข้อมูลใหม่
ความจุสูง (ตัววัดต่างๆ นับพันที่อัปเดตต่อนาที) แทบจะต้องใช้อาร์เรย์ RAID และ/หรือ SSD ที่ดี หากดิสก์ไม่สามารถตามทันการเขียนเล็กๆ จำนวนมากที่เกิดขึ้น (เพียงไม่กี่ไบต์ต่อจุดข้อมูล แต่ดิสก์มาตรฐานส่วนใหญ่ไม่สามารถรองรับการดำเนินการ I/O ได้มากกว่าสองสามพันรายการต่อวินาที แม้ว่าจะ ขนาดเล็ก) ข้อมูลขาเข้าแบ็กเอนด์ของ Graphite จะถูกแคช เมื่อสิ่งนี้เกิดขึ้น ระบบฐานข้อมูลของ Graphite จะกระซิบโดยอนุญาตให้ Carbon เขียนจุดข้อมูลหลายจุดพร้อมกัน ดังนั้นจึงเป็นการเพิ่มปริมาณงานโดยรวม โดยต้องเสียค่าใช้จ่ายในการแคชข้อมูลส่วนเกินในหน่วยความจำจนกว่าจะสามารถเขียนได้
กราไฟท์ยังรองรับแบ็กเอนด์พื้นที่จัดเก็บข้อมูลทางเลือกที่สามารถเปลี่ยนคุณสมบัติเหล่านี้ได้อย่างมาก
กราฟเรียลไทม์เป็นอย่างไร?
เรียลไทม์มาก แม้จะอยู่ภายใต้ภาระงานหนัก เมื่อจำนวนตัววัดขาเข้าต่อช่วงเวลามากกว่าความเร็วที่ระบบจัดเก็บข้อมูลสามารถดำเนินการ I/O ได้อย่างมาก และจุดข้อมูลจำนวนมากถูกแคชไว้ในไปป์ไลน์การจัดเก็บข้อมูล (ดูคำอธิบายคำถามก่อนหน้า ) , Graphite ยังสามารถวาดกราฟแบบเรียลไทม์ได้ เคล็ดลับก็คือเมื่อ Graphite webapp ได้รับคำขอให้วาดกราฟ มันจะดึงข้อมูลจากดิสก์รวมถึงจากแคชก่อนการจัดเก็บ (แคชอาจถูกแจกจ่ายหากคุณมีเซิร์ฟเวอร์แบ็กเอนด์หลายเซิร์ฟเวอร์) และรวมแหล่งข้อมูลทั้งสองเข้าด้วยกัน รวมกันเพื่อสร้างกราฟแบบเรียลไทม์
ใครใช้กราไฟท์อยู่แล้วบ้าง?
Graphite ได้รับการพัฒนาภายในโดย Orbitz ซึ่งใช้เพื่อแสดงภาพข้อมูลการดำเนินงานที่สำคัญต่างๆ รวมถึงตัวชี้วัดการใช้งาน ตัวชี้วัดฐานข้อมูล การขาย และอื่นๆ ในขณะที่เขียนบทความนี้ ระบบการผลิตของ Orbitz สามารถประมวลผลเมตริกต่างๆ ได้ประมาณ 160,000 ตัววัดต่อนาที โดยทำงานบนเซิร์ฟเวอร์ niagra-2 Sun สองเครื่องบน SAN ความเร็วสูง
กราไฟท์เขียนด้วยอะไร?
เว็บแอป Graphite สร้างขึ้นบนเว็บเฟรมเวิร์ก Django และใช้ชุดเครื่องมือ ExtJS javascript GUI การเรนเดอร์กราฟิกทำได้โดยใช้ไลบรารีกราฟิกของไคโร แบ็กเอนด์และฐานข้อมูลเขียนด้วย Python ล้วนๆ
ใครจะเป็นผู้เขียนและดูแลรักษา Graphite?
Graphite ได้รับการพัฒนาโดย Chris Davis แห่ง Orbitz Orbitz เป็นส่วนหนึ่งของชุมชนโอเพ่นซอร์สมายาวนาน และได้เปิดตัวผลิตภัณฑ์ที่พัฒนาภายในอื่นๆ มากมาย
ปัจจุบัน Graphite ได้รับการพัฒนาโดยทีมอาสาสมัครภายใต้องค์กร Graphite-Project GitHub