Những gì tôi muốn đạt được là lấy thông tin về mức độ lớn của các thư mục cấp cao nhất trong một thư mục (là ổ đĩa NTFS) trên máy chủ CentOS7. Thông tin này được đặt trong tệp Prometheus, được sử dụng để gửi thông tin này vào bảng điều khiển Grafana.
Kịch bản được thực thi thông qua một công việc định kỳ hàng ngày trông như thế này:
#!/usr/bin/env bash
# Tạo số liệu bộ sưu tập Prometheus về việc sử dụng đĩa của các dự án Jenkins trên hệ thống.
# Hiện tại, chỉ có thông tin thư mục cấp cao nhất được thu thập theo byte.
# Cắt bớt mục nhập tệp văn bản cuối cùng để có thể chuẩn bị cho việc nhập dữ liệu mới nhất
echo -n > /var/lib/node_exporter/textfile_collector/jenkins_projects_disk_size.prom
cd /jenkins/jobs # Vào thư mục NTFS, chứa tất cả dữ liệu công việc
cho f trong *; làm # Đi qua từng thư mục cấp cao nhất
nếu [ -d "$f" ]; sau đó
# Sẽ không chạy nếu không có thư mục
prometheus_entry=$(du ${f} --block-size=1 --summarize "$@" | \ # thực thi lệnh `du` cho từng thư mục cấp cao nhất để có thể tính toán kích thước của thư mục đó và lưu đầu ra ở định dạng Prometheus
sed -ne 's/\/\/;s/"/\"/g;s/^\([0-9]\+\)\t\(.*\)$/jenkins_directory_size_bytes {thư mục="\2"} \1/p')
tiếng vang $prometheus_entry >> /var/lib/node_exporter/textfile_collector/jenkins_projects_disk_size.prom
fi
xong
Điều này hiện đang hoạt động trên một số máy chủ không có kích thước thư mục lớn so với máy chủ gặp sự cố (500GB-1,5T) và cũng hoạt động tương đối nhanh.
Vấn đề hiện tại tôi đang gặp phải là trên máy chủ có vấn đề, cụ thể là kích thước của thư mục khá lớn (50T). Tất nhiên, như dự kiến với kích thước đó, các lệnh du/df rất chậm (tôi nghĩ rằng tôi sẽ cần hơn 15-20 giờ để thực thi tập lệnh).
Có cách nào để tối ưu hóa hơn nữa quy trình này hoặc sử dụng một số loại bộ đệm hoặc bất kỳ cách thay thế nào khác (ví dụ: bằng một công cụ khác) không? tôi đã thử rồi ncdu
, nhưng nó là GUI và tôi không thể trích xuất thông tin theo cách tôi muốn để Prometheus hoạt động.
Như đã đề cập trước đây, tôi chỉ cần thông tin kích thước thư mục cấp cao nhất và không cần gì khác. Bất kỳ trợ giúp hoặc lời khuyên nào sẽ được đánh giá rất cao! Cảm ơn trước.