การปรับใช้ statsd และ graphite บนเว็บที่พร้อมใช้งานสูงเข้าถึงได้และปรับขนาดได้


17

ฉันต้องการตั้งค่า statsd / graphite เพื่อให้ฉันสามารถบันทึกแอปพลิเคชัน JS ที่ทำงานบนอุปกรณ์ HTML (เช่นไม่ได้อยู่ในสภาพแวดล้อม LAN ที่มีอยู่และอาจมีข้อมูลขาเข้าจำนวนมากที่ฉันไม่ได้ควบคุมโดยตรง)

ข้อ จำกัด ของฉัน:

  • จุดเข้าใช้งานต้องพูด HTTP: สิ่งนี้ได้รับการแก้ไขโดยพร็อกซี HTTP-to-UDP-statsd อย่างง่าย (เช่น. httpstatsd บน github)
  • ต้องต่อต้านความล้มเหลวของเซิร์ฟเวอร์เดียว (เพื่อต่อสู้กับกฎของ Murphy :)
  • จะต้องปรับขนาดได้ในแนวนอน: webscale, baby! :)
  • สถาปัตยกรรมควรถูกเก็บไว้อย่างเรียบง่าย (และถูก) ที่สุด
  • เซิร์ฟเวอร์ของฉันเป็นเครื่องเสมือน
  • ไฟล์ข้อมูลจะถูกเก็บไว้ในเครื่อง filer (ด้วย NFS)
  • ฉันมีตัวปรับสมดุลโหลดฮาร์ดแวร์ tcp / udp เมื่อทำการกำจัด

ในระยะสั้นเส้นทางข้อมูล: [ลูกค้า] - (http) -> [http2statsd] - (udp) -> [statsd] - (tcp) -> [กราไฟท์] - (nfs) -> [filer]

การค้นพบของฉันจนถึงขณะนี้:

  • การปรับส่วน http2statsd เป็นเรื่องง่าย (daemons ไร้สัญชาติ)
  • การปรับสเกลส่วน statsd ดูเหมือนจะไม่ตรงไปตรงมา (ฉันเดาว่าฉันจะจบลงด้วยค่าที่ไม่ต่อเนื่องในกราไฟท์สำหรับข้อมูลรวมเช่น sum, avg, min, max ... ) นอกจากว่า HTTP daemon จะทำการแฮชที่สอดคล้องกันเพื่อตัดกุญแจ อาจเป็นความคิด ... (แต่แล้วมีคำถาม HA)
  • การปรับสเกลส่วนกราไฟท์สามารถทำได้ผ่านการใช้เศษ (ใช้การส่งผ่านคาร์บอน) (แต่นั่นก็ไม่ได้แก้ปัญหา HA ด้วย) เห็นได้ชัดว่าอินสแตนซ์ของ whisper หลายตัวไม่ควรเขียนไฟล์ NFS เดียวกัน
  • การปรับสเกลส่วน filer ไม่ใช่ส่วนหนึ่งของคำถาม (แต่ถ้า IO น้อยกว่าจะดีกว่า :)
  • การปรับขนาดของ webapp ดูเหมือนชัดเจน (แม้ว่าฉันยังไม่ได้ทดสอบ) เนื่องจากอ่านเฉพาะข้อมูล NFS ที่ใช้ร่วมกัน

ดังนั้นฉันจึงสงสัยว่าใครมีประสบการณ์และแนวปฏิบัติที่ดีที่สุดในการแบ่งปันการปรับใช้สถิติ / กราไฟท์ที่มั่นคงหรือไม่


อ่านความคิดเห็นในบล็อกของ Etsy เกี่ยวกับ StatsD พวกเขาเขียนว่าพวกเขาฟีด StatsD 10,000-30,000 ทุก 10 วินาที ฉันขอแนะนำให้เชื่อมโยงไคลเอนต์ http2statsd หนึ่งกับเซิร์ฟเวอร์ statsd หนึ่งรายการและหักลบหากจำนวนการวัดที่ส่งไปยัง statsd กลายเป็นคอขวด
pkhamre

คุณใช้สิ่งนี้ในที่สุดหรือไม่? ถ้าเป็นเช่นนั้นคุณแบ่งปันรายละเอียดได้ไหม
gf_

คำตอบ:


1

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

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

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

ฉันใช้ HostedGraphite มาระยะหนึ่งแล้วเพื่อหลีกเลี่ยงความเจ็บปวดเหล่านี้พวกเขาได้นำแบ็กเอนด์ Riak ของพวกเขามาใช้กับ Carbon และทำการปรับขนาดที่นั่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.