Чего я хочу добиться, так это получить информацию о том, насколько велики папки верхнего уровня в каталоге (который является томом NTFS) на сервере CentOS7. Эта информация помещается в файл Prometheus, который используется для отправки этой информации на панель управления Grafana.
Скрипт, выполняемый через задание cron каждый день, выглядит так:
#!/usr/bin/env bash
# Создание метрик коллекции Prometheus об использовании дискового пространства проектами Jenkins в системе.
# В настоящее время в байтах собирается только информация о папках верхнего уровня.
# Обрезать последнюю запись в текстовом файле, чтобы его можно было подготовить для ввода самых новых данных
echo -n > /var/lib/node_exporter/textfile_collector/jenkins_projects_disk_size.prom
cd /jenkins/jobs # Перейти в каталог NTFS, содержащий все данные о заданиях
для f в *; do # Проходим по каждой папке верхнего уровня
если [-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
фи
сделано
В настоящее время это работает на нескольких серверах, которые не имеют большого размера каталога по сравнению с сервером с проблемами (500 ГБ-1,5 Т), а также работает относительно быстро.
Текущая проблема, с которой я сталкиваюсь, заключается в том, что на проблемном сервере, в частности, размер папки довольно большой (50T). Конечно, как и следовало ожидать при таком размере, команды du/df очень медленные (думаю, мне потребуется более 15-20 часов для выполнения скрипта).
Есть ли способ еще больше оптимизировать этот процесс или использовать какой-то кеш или любой другой альтернативный способ (например, с другим инструментом)? я уже пробовал нкду
, но это графический интерфейс, и я не могу извлекать информацию так, как хочу, чтобы Prometheus работал.
Как упоминалось ранее, мне нужна только информация о размере папки верхнего уровня и ничего больше. Любая помощь или совет будут очень признательны! Заранее спасибо.