Ce vreau să obțin este să obțin informații despre cât de mari sunt folderele de nivel superior dintr-un director (care este un volum NTFS) pe un server CentOS7. Aceste informații sunt plasate într-un fișier Prometheus, care este utilizat pentru a trimite aceste informații într-un tablou de bord Grafana.
Scriptul executat printr-un job cron în fiecare zi arată astfel:
#!/usr/bin/env bash
# Generați valorile de colecție Prometheus despre utilizarea discului proiectelor Jenkins pe sistem.
# În prezent, numai informațiile de nivel superior ale folderului sunt colectate în octeți.
# Trunchiați ultima intrare de fișier text, astfel încât să poată fi pregătită pentru introducerea celor mai noi date
echo -n > /var/lib/node_exporter/textfile_collector/jenkins_projects_disk_size.prom
cd /jenkins/jobs # Accesați directorul NTFS, care conține toate datele despre joburi
pentru f în *; face # Parcurgeți fiecare folder de nivel superior
dacă [ -d "$f" ]; atunci
# Nu va rula dacă nu sunt disponibile directoare
prometheus_entry=$(du ${f} --block-size=1 --summarize "$@" | \ # executați o comandă `du` pentru fiecare folder de nivel superior, astfel încât dimensiunea acestuia să poată fi calculată și salvați ieșire în format Prometheus
sed -ne 's/\/\/;s/"/\"/g;s/^\([0-9]\+\)\t\(.*\)$/jenkins_directory_size_bytes {directory="\2"} \1/p')
echo $prometheus_entry >> /var/lib/node_exporter/textfile_collector/jenkins_projects_disk_size.prom
fi
Terminat
Acest lucru funcționează în prezent pe câteva servere, care nu au o dimensiune mare de director în comparație cu serverul cu probleme (500GB-1.5T), și funcționează, de asemenea, relativ rapid.
Problema actuală pe care o am este că pe serverul problematic, în special, dimensiunea folderului este destul de mare (50T). Desigur, așa cum se poate aștepta cu această dimensiune, comenzile du/df sunt foarte lente (cred că voi avea nevoie de mai mult de 15-20 de ore pentru a executa scriptul).
Există o modalitate de a optimiza în continuare acest proces sau de a utiliza un fel de cache sau orice altă modalitate alternativă (de exemplu, cu un alt instrument)? Am incercat deja ncdu
, dar este o interfață grafică și nu pot extrage informațiile în același mod în care vreau ca Prometheus să funcționeze.
După cum am menționat anterior, am nevoie doar de informații de nivel superior privind dimensiunea dosarului și nimic altceva. Orice ajutor sau sfat va fi foarte apreciat! Mulțumesc anticipat.