สิ่งที่ฉันต้องการบรรลุคือการได้รับข้อมูลเกี่ยวกับขนาดของโฟลเดอร์ระดับบนสุดในไดเร็กทอรี (ซึ่งเป็นไดรฟ์ข้อมูล NTFS) บนเซิร์ฟเวอร์ CentOS7 ข้อมูลนี้อยู่ในไฟล์ Prometheus ซึ่งใช้เพื่อส่งข้อมูลนี้ไปยังแดชบอร์ดของ Grafana
สคริปต์ที่ดำเนินการผ่านงาน cron ทุกวันมีลักษณะดังนี้:
#!/usr/bin/env ทุบตี
# สร้างเมตริกคอลเลกชัน Prometheus เกี่ยวกับโครงการ Jenkins การใช้ดิสก์บนระบบ
# ขณะนี้ ข้อมูลโฟลเดอร์ระดับบนสุดเท่านั้นที่รวบรวมเป็นไบต์
# ตัดทอนรายการไฟล์ข้อความล่าสุด เพื่อให้สามารถเตรียมพร้อมสำหรับการป้อนข้อมูลใหม่ล่าสุด
เสียงสะท้อน -n > /var/lib/node_exporter/textfile_collector/jenkins_projects_disk_size.prom
cd /jenkins/jobs # ไปที่ไดเร็กทอรี NTFS ซึ่งมีข้อมูลงานทั้งหมด
สำหรับ f ใน *; ทำ # ผ่านแต่ละโฟลเดอร์ระดับบนสุด
ถ้า [ -d "$f" ]; แล้ว
# จะไม่ทำงานหากไม่มีไดเร็กทอรี
prometheus_entry=$(du ${f} --block-size=1 --summarize "$@" | \ # รันคำสั่ง `du` สำหรับแต่ละโฟลเดอร์ระดับบนสุด เพื่อให้สามารถคำนวณขนาดได้ และบันทึก เอาต์พุตในรูปแบบ Prometheus
sed -ne 's/\/\/;s/"/\"/g;s/^\([0-9]\+\)\t\(.*\)$/jenkins_directory_size_bytes {ไดเรกทอรี="\2"} \1/p')
echo $prometheus_entry >> /var/lib/node_exporter/textfile_collector/jenkins_projects_disk_size.prom
ไฟ
เสร็จแล้ว
ขณะนี้ใช้งานได้กับเซิร์ฟเวอร์ไม่กี่เครื่อง ซึ่งไม่มีไดเร็กทอรีขนาดใหญ่เมื่อเทียบกับเซิร์ฟเวอร์ที่มีปัญหา (500GB-1.5T) และยังทำงานได้ค่อนข้างเร็วอีกด้วย
ปัญหาปัจจุบันที่ฉันพบคือบนเซิร์ฟเวอร์ที่มีปัญหา โดยเฉพาะอย่างยิ่งขนาดของโฟลเดอร์นั้นค่อนข้างใหญ่ (50T) แน่นอนว่าด้วยขนาดที่คาดหวังได้ คำสั่ง du/df จึงช้ามาก (ฉันคิดว่าต้องใช้เวลามากกว่า 15-20 ชั่วโมงในการดำเนินการสคริปต์)
มีวิธีเพิ่มประสิทธิภาพกระบวนการนี้เพิ่มเติม หรือใช้แคชบางประเภทหรือวิธีอื่น (เช่น ด้วยเครื่องมืออื่น) หรือไม่ ฉันพยายามแล้ว เอ็นดู
แต่มันเป็น GUI และฉันไม่สามารถแยกข้อมูลในแบบเดียวกับที่ฉันต้องการให้ Prometheus ทำงาน
ตามที่กล่าวไว้ก่อนหน้านี้ ฉันต้องการเพียงข้อมูลขนาดโฟลเดอร์ระดับบนสุดเท่านั้น และไม่ต้องการอย่างอื่นอีก ความช่วยเหลือหรือคำแนะนำใด ๆ จะได้รับการชื่นชมอย่างมาก! ขอบคุณล่วงหน้า.