การวางแผนความจุของดิสก์สำหรับกระซิบ / กราไฟท์


14

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


2
ตรวจสอบให้แน่ใจว่าคุณกำลังวางแผนดิสก์ I / O อย่างถูกต้องเช่นกันไม่ใช่เฉพาะความจุดิสก์ ในช่วงหลายปีที่ผ่านมา rrdtool ได้สะสมการเพิ่มประสิทธิภาพขนาดเล็กจำนวนมากซึ่งทำให้เร็วขึ้น (2x เร็วกว่า?) ในการเขียนมากกว่ารูปแบบฐานข้อมูล Whisper ของ Graphite หากคุณวางแผนที่จะเก็บข้อมูลทั้งหมดของคุณไว้ใน SSD ที่ดีนั่นจะทำให้คุณได้รับประโยชน์มากที่สุดจากที่นั่น แต่ฉันจะไม่วางแผนที่จะเก็บ Whisper DB ทั้งหมดไว้ในดิสก์หมุน โดยทั่วไปแล้วมันไม่คุ้มค่าที่ระดับดิสก์ I / O ที่แกรไฟต์พ่น
jgoldschrafe

คำตอบ:


7

whisper-info.py ให้ข้อมูลเชิงลึกเกี่ยวกับสิ่งที่และวิธีการรวมไฟล์แต่ละไฟล์รวมถึงขนาดของไฟล์

อย่างไรก็ตามมันมีประโยชน์สำหรับไฟล์เสียงกระซิบที่มีอยู่เท่านั้น

เมื่อคุณต้องการเห็นขนาดที่คาดการณ์ไว้ของสคีมาก่อนที่จะวางไว้ลองใช้เครื่องคิดเลข Whisper เช่นที่มีอยู่ที่https://gist.github.com/jjmaestro/5774063

แก้ไข:

เมื่อถามถึงตัวอย่าง ...

storage_schema:

{
    :catchall => {
      :priority   => "100",
      :pattern    => "^\.*",
      :retentions => "1m:31d,15m:1y,1h:5y"
    }
}

มองไปที่ไฟล์ของฉันapplied-in-last-hour.wsp, ls -lอัตราผลตอบแทน

-rwxr-xr-x 1 root root 4415092 Sep 16 08:26 applied-in-last-hour.wsp

และwhisper-info.py ./applied-in-last-hour.wspผลผลิต

maxRetention: 157680000
xFilesFactor: 0.300000011921
aggregationMethod: average
fileSize: 4415092

Archive 0
retention: 604800
secondsPerPoint: 10
points: 60480
size: 725760
offset: 52

Archive 1
retention: 2678400
secondsPerPoint: 60
points: 44640
size: 535680
offset: 725812

Archive 2
retention: 157680000
secondsPerPoint: 600
points: 262800
size: 3153600
offset: 1261492

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


โอกาสใด ๆ ที่คุณมีหมายเลขตัวอย่างจากนั้น (จับคู่กับการตั้งค่าการเก็บรักษา) ตอนนี้ฉันกำลังคิดถึงแหล่งเก็บข้อมูลอนุกรมเวลาที่แตกต่างกันในแง่ของการใช้งานดิสก์ - ดังนั้นการทำให้แกรไฟต์มีชีวิตอยู่นั่นเป็นสิ่งที่ต้องทำ
Kyle Brandt

@KyleBrandt คำตอบอัพเดทแล้ว
gWaldo

ขอบคุณสำหรับสิ่งนี้. ดังนั้นขนาดไฟล์คือสิ่งที่จะเป็นหลังจากชั่วโมงในการรวบรวมข้อมูลหรือเป็นสิ่งที่ขนาดไฟล์จะสวยเสมอ? ดังนั้นตัวแทน 4415092 ของมูลค่าข้อมูล 5 ปีที่เก็บรักษานี้หรือเป็นตัวแทนของข้อมูลหนึ่งชั่วโมง 1 นาที? นอกจากนี้ไบต์หรือบิตนั้นคืออะไร?
Kyle Brandt

นี่เป็นการใช้งานใหม่ของ บริษัท นี้และฉันไม่สามารถเข้าถึงเครื่องมือเก่าได้ เนื่องจากผลลัพธ์ขนาดไฟล์ระดับบนสุดตรงกับls -lผลลัพธ์ฉันจึงถือว่าเป็นไบต์ เมื่อฉันเพิ่มขนาดของไฟล์เก็บถาวรภายในไฟล์. wsp (ตามที่รายงานโดยwhisper-info.py) พวกเขาจะเข้ามาใกล้กับขนาดไฟล์. wsp โดยรวม (ส่วนที่เหลือที่ฉันถือว่าเป็นข้อมูลเมตาและควรเป็นขนาดของไฟล์ทั้งหมด เวลาเนื่องจากข้อมูลลดลงเหลือความละเอียดของข้อมูลที่ลดลงและจุดข้อมูลเก่าจะถูกทิ้ง
gWaldo

โอเคด้วยการตั้งค่าการเก็บรักษานี้ ประมาณ:ServerCount * MetricCount * 4.5MBytes
Kyle Brandt

2

ในเอกสารสำหรับstatsd พวกเขาให้ตัวอย่างสำหรับนโยบายการเก็บข้อมูล

คงทนมี10s:6h,1min:7d,10min:5yซึ่งเป็น 10080 + 2160 + 262,800 = 275,040 จุดข้อมูลและพวกเขาให้มีขนาดที่เก็บของ3.2 เอ็มไอ

สมมติว่ามีความสัมพันธ์เชิงเส้นนี้จะเป็นประมาณ 12.2 ไบต์ต่อจุดข้อมูล


ops-school.readthedocs.org/en/latest/monitoring_201.html (การประทับเวลาค่า) คู่จะถูกเก็บไว้เป็นคู่ที่มีความยาวและค่าคู่ 12 ไบต์ต่อคู่ อาจต่างกันที่ 0.2 เนื่องจากไฟล์ข้อมูลเมตาดาต้าโอเวอร์เฮด!
27465

1

ไม่มีประสบการณ์โดยตรงกับ Graphite แต่ฉันจินตนาการถึงตรรกะเดียวกับที่เราใช้กับ Cacti หรือสิ่งอื่นที่ใช้ RRD หรือการเลื่อนเวลาแบบใช้โรลโอเวอร์ (Graphite จะไม่ใช้ RRD ภายในอีกต่อไป แต่ตรรกะการจัดเก็บดูเหมือนกัน)

คำตอบอย่างรวดเร็วคือ "อาจจะไม่มากเท่าที่คุณคิดว่าคุณต้องการ"


คำตอบยาวเกี่ยวข้องกับคณิตศาสตร์เฉพาะไซต์ สำหรับระบบตรวจสอบของเรา (InterMapper) ฉันหาระยะเวลาการเก็บรักษาความละเอียดและขนาดดาต้าพอยต์ทำการคูณและเพิ่มค่าใช้จ่าย

ตัวอย่างเช่นฉันจะใช้พื้นที่ดิสก์ - เราเก็บตัวเลขที่มีความแม่นยำ 5 นาทีเป็นเวลา 30 วันความแม่นยำ 15 นาทีเป็นเวลา 60 วันและจากนั้นความแม่นยำรายชั่วโมงสำหรับอีก 300 วันและเราใช้ 64 จำนวนเต็ม (8 ไบต์) เพื่อจัดเก็บ:

  • ตัวอย่างทั้งหมด 21600 แบ่งเป็น:
    • ตัวอย่าง 8640 สำหรับความแม่นยำ 30 วัน 5 นาที
    • ตัวอย่าง 5760 รายการสำหรับความแม่นยำ 60 วัน 15 นาที
    • 7200 ตัวอย่างสำหรับความแม่นยำ 300 ชั่วโมงใน 1 วัน

ที่ 8 ไบต์ต่อตัวอย่างที่ประมาณ 173KB บวกค่าใช้จ่ายที่ดีต่อสุขภาพสำหรับการจัดทำดัชนีการจัดเก็บและสิ่งที่คล้ายกันจะนำไปสู่ประมาณ 200KB สำหรับข้อมูลการใช้งานดิสก์ของพาร์ติชันหนึ่ง (ข้อผิดพลาดใด ๆ

จากตัวชี้วัดพื้นฐานฉันสามารถหาขนาด "ต่อเครื่อง" โดยเฉลี่ย (พาร์ติชั่นดิสก์ 10 ตัวพื้นที่สว็อปหน่วยความจำโหลดเฉลี่ยการถ่ายโอนเครือข่าย

ฉันยังเพิ่มสุขภาพที่ดีขึ้น 10% จากจำนวนสุดท้ายและปัดเศษดังนั้นฉันจึงกำหนดขนาดสิ่งที่ 6MB ต่อเครื่อง

จากนั้นฉันดูพื้นที่ 1TB ที่ฉันวางไว้เพื่อเก็บข้อมูลตัวชี้วัดสำหรับการทำแผนภูมิและพูดว่า "ใช่ฉันอาจจะไม่ได้ใช้พื้นที่เก็บข้อมูลหมดในช่วงชีวิตของฉัน :-)


1
เพื่อโยนตัวเลขจากการปฏิบัติจริงโดยใช้นโยบายการเก็บข้อมูลการผลิตของฉัน (9 เดือนที่ 5 นาที; 1 ปีต่อชั่วโมง; 5 ปีต่อวัน) และประมาณ 20 เครื่องที่มีตัวชี้วัด ~ 8 8 ไบต์ต่อ 20 รวมทั้งคำเตือน / สัญญาณเตือน / critical / outage history history เป็นเวลา 5 ปีฉันใช้พื้นที่ดิสก์ 1.5G นั่นคือด้วย InterMapper การแทรกทุกอย่างลงในฐานข้อมูล Postgres อีกครั้ง - คำตอบอย่างรวดเร็วคือ "อาจจะไม่มากเท่าที่คุณคิดว่าคุณจะต้องมี" :-)
voretaq7

Ya, คณิตศาสตร์นั้นตรงไปตรงมา, ฉันแค่ดูเพิ่มเติมเกี่ยวกับวิธีที่ Graphite เก็บข้อมูล - สามารถสร้างความแตกต่างที่สำคัญในระดับ สิ่งเดียวที่ฉันได้พบก็คือตามเอกสารนั้นมันไม่ได้มีประสิทธิภาพในพื้นที่ (อาจเป็นเพราะมันขึ้นอยู่กับการเปิดตัวที่ค่อนข้างก้าวร้าว)
Kyle Brandt

เสียงกระซิบ (Graphite End-End Storage ใช้)มีบางรายการที่เคี้ยวในอวกาศ - คุณอาจเห็นหน้านั้นแล้ว ส่วนเกี่ยวกับ "ช่วงเวลาการทับซ้อนของจดหมายเหตุ" โดดเด่นสำหรับฉันเพราะมันหมายถึงจดหมายเหตุใหญ่กว่าตัวอย่างของฉันเพราะพวกเขากลับไปที่จุดเริ่มต้นของเวลา (การเก็บถาวร 60 วันนาน 90 วันจริงการเก็บถาวร 300 วันคือ ความยาว 390 วัน) เสียงกระซิบยังเก็บบันทึกเวลา (4 หรือ 8 ไบต์) พร้อมกับแต่ละจุดข้อมูลที่จะต้องเพิ่มด้วย ไม่ได้ดูยุ่งยาก แต่ป่อง :)
voretaq7

0

ฉันมี 70 โหนดที่สร้างข้อมูลจำนวนมาก การใช้ Carbon / Whisper หนึ่งโหนดสร้างไฟล์ 91k เพียงอย่างเดียว (โหนดสร้างหลายสกีมาแต่ละไฟล์มีหลายตัวนับและฟิลด์ตัวแปรซึ่งจำเป็นต้องเลือกได้เช่น: (ชื่อโหนด). (สคีมา). (ตัวนับ) (subcounter) (เป็นต้น) ) .... และอื่น ๆ )

สิ่งนี้ให้ความละเอียดที่ฉันต้องการในการพล็อตกราฟที่ฉันต้องการ หลังจากรันสคริปต์เพื่อเติมข้อมูลโหนดที่เหลือ 69 โหนดฉันมีข้อมูล 1.3Tb บนดิสก์ และนั่นคือข้อมูล / โหนดเพียง 6 ชั่วโมงเท่านั้น สิ่งที่ทำให้ฉันเป็นไฟล์ flat csv จริงสำหรับข้อมูล 6 ชั่วโมงมีค่าประมาณ 230Mb / node 70 โหนดคือ ~ 16Gb ของข้อมูล พื้นที่เก็บข้อมูลของฉันคือ 120s: 365d

ฉันค่อนข้างใหม่กับฐานข้อมูลดังนั้นฉันอาจทำสิ่งผิดปกติ แต่ฉันเดาว่ามันเป็นค่าใช้จ่ายทั้งหมดสำหรับแต่ละตัวอย่าง

ดังนั้นมันจึงเป็นการทดลองที่สนุก แต่ฉันไม่คิดว่ามันสมเหตุสมผลที่จะใช้เสียงกระซิบสำหรับประเภทข้อมูลที่ฉันจัดเก็บ MongoDB ดูเหมือนจะเป็นโซลูตันที่ดีกว่า แต่ฉันต้องหาวิธีใช้เป็นแบ็กเอนด์ของ Grafana

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