Назад | Перейти на главную страницу

Сервер Jenkins CI заполнил дисковое пространство

Сегодня я понял, что мой сервер не отправляет почту с лог-проверкой, как это должно делаться каждую ночь. Я вошел в свой ящик с помощью ssh, и первые набранные мной команды вернулись no disk space left. В панели администрирования моего хостера (Virtuozzo power panel) было такое же предупреждение, используется 99%. Это было довольно странно, потому что коробка довольно новая (6 недель назад) и должна иметь использование диска 2% (как было сказано в письме logcheck накануне). С помощью du -sh Я попытался найти большой файл, но ничего не вышло. Ни файлов, ни больших папок.

Прочитав о случае, когда плохая обработка сеанса привела к заполнению диска определенным набором php, я решил закрыть все свои веб-приложения одно за другим (php не установлен на моем сервере). Моим первым предположением был мой сервер Jenkins, и сразу после того, как я остановил службу, мой инструмент администрирования показал 2% disk usage очередной раз. Итак, я нашел ошибку, но не знаю, что ее вызвало. Jenkins был первым, что я установил 6 недель назад, и до сих пор проблем не возникало. Я не видел подозрительного доступа к Jenkins, через день в моих журналах было несколько неудачных попыток входа в систему с помощью ботов, но я не вижу, что это необычно. Я не смог погуглить такое поведение и (конечно) немного обеспокоен этим. Что я могу / должен сделать, чтобы этого не произошло?

Обратите внимание, что на моем сервере Jenkins в настоящее время есть одна сборка с проверкой и одна сборка ночью, оба являются небольшими приложениями Java-EE.

Чтобы проверить свободное место как Дженкинс Джоб:

Параметры

  • FREE_SPACE: Требуется свободное место в ГБ.

Работа

#!/usr/bin/env bash

free_space="$(df -Ph . | awk 'NR==2 {print $4}')"

if [[ "${free_space}" = *G* ]]; then
  free_space_gb=${x/[^0-9]*/}

  if [[ ${free_space_gb} -lt ${FREE_SPACE} ]]; then
    echo "Warning! Low space: ${free_space}"
    exit 2
  fi
else
  echo "Warning! Unknown: ${free_space}"
  exit 1
fi


echo "Free space: ${free_space}"

Плагины

Установить описание сборки

Действия после сборки

  • Регулярное выражение: Free space: (.*)
  • Описание: Free space: \1

  • Регулярное выражение для неудачных сборок: Warning! (.*)

  • Описание неудачных сборок: \1