Проверяемые знания учащихся

  • Знание концепции текущего рабочего каталога.
  • Умение формировать абсолютные и относительные пути в GNU/Linux.
  • Умение изменять текущий рабочий каталог.
  • Знание о типах команд в интерпретаторе Bash.
  • Умение получать информацию о работе встроенных команд в Bash.
  • Умение получать и читать руководства о приложениях.
  • Умение использовать справочную систему man.
  • Знание о поиске исполняемых файлов в Bash.
  • Знание о стандартной структуре файловой системы GNU/Linux и о структуре файловой системы Debian GNU/Linux.
  • Умение формировать физические и логические ссылки.
  • Умение просматривать, формировать и изменять структуру файловой системы.
  • Знание о структуре потоков ввода-вывода приложений.
  • Умение перенаправлять потоки вывода в файл, потоки ввода из файлов, формировать конвейеры по обработке потоков данных.
  • Знание о предназначении приложений-фильтров sort, uniq, grep, tail, head, awk.
  • Умение использовать консольные текстовые редакторы vim или emacs.
  • Знание о структуре скриптовых файлов на языке Bash.
  • Умение написания скриптовых файлов на языке Bash для автоматизации действий.
  • Умение использования расширения команд в языке Bash: пути, скобок, арифметическое, переменных, команд.
  • Знание о способах установки новых приложений в GNU/Debian: система dpkg и apt.
  • Умение находить пакеты, устанавливать и удалять пакеты из системы.
  • Знание о системе прав доступа в Linux.
  • Умение узнавать права доступа к файлам и каталогам.
  • Умение узнавать права доступа учётных записей в Linux.
  • Умение повышать привилегии для выполнения действий уровня системного администрирования.
  • Умение использовать приложение find для поиска документов согласно различным правилам.
  • Знание о структуре файловых хранилищ (файловых систем).
  • Умение создавать новые файловые хранилища.
  • Умение подключать файловые хранилища к виртуальной файловой системе.
  • Знание о способе управления службами с помощью системы SystemD.
  • Умение просматривать статус служб SystemD.
  • Умение настраивать службы SystemD: добавлять службы, удалять службы.

Задача

Реализуйте систему мониторинга доступного файлового пространства на файловых хранилищах. Система должна состоять из следующих компонентов:

  • Служба регистрации занятости жёсткого диска.
  • Служба детектирования критических ситуаций.
  • Скрипты для установки и настройки служб.

Технические требования к реализации:

  • Скрипты по установке служб должны запускаться с правами суперпользователя.
  • Службы должна работать под учётной записью system-monitoring.
  • Службы должны сохранять данные в каталог /var/lib/system-monitoring.
  • Службы должны запускаться с помощью SystemD по расписанию.
  • Все зависимости скриптов службы должны устанавливаться с помощью скриптов для настройки зависимостей.

Служба регистрации занятости жёсткого диска

Основное назначение службы — сбор данных о состоянии файловых систем сервера. Сбор первичной информации для последующего анализа.

  • Данная служба должна запускаться на регулярной основе, каждый час.
  • Данная служба должна узнавать объём занятого пространства для файловых хранилищ с файловыми системами: ext3, ext4, xfs, jfs, brtfs.
  • Идентификатором файлового хранилища будем считать его точку подключения к виртуальной файловой системе.

В каждый момент измерения для каждого файлового хранилища необходимо записывать следующую информацию:

  • Время измерения.
  • Общий объём файлового хранилища в гигабайтах.
  • Объём занятого пространства в гигабайтах.
  • Процент занятого пространства.

Служба проверки занятого объёма

Основное назначение службы — нахождение критических ситуаций, связанных с файловыми хранилищами. В рамках задания данная служба должна анализировать журналы первой службы с целью обнаружения ситуации переполнения файлового хранилища.

  • Данная служба должна запускаться на регулярной основе, каждый день.
  • Данная служба должна проверять журналы службы регистрации для каждого файлового хранилища.

Критерии наступления критической ситуации:

  • в течение дня более 12 раз было зафиксирована нагрузка файлового хранилища больше 95 процентов;
  • в течение дня было зафиксировано событие заполнение хранилища больше 98 процентов.

По результатам запуска службы в случае возникновения критической ситуации необходимо сформировать файл в формате ГГГГ-ММ-ДД-error-report.txt, где ГГГГ-ММ-ДД дата запуска.

Комментарии к технической реализации

  • Все скрипты, входящие в систему, должны быть написаны на языке Bash.
  • Скрипты должны работать в режиме остановки при возникновении ошибочного вызова (set -e). Завершение скрипта в случае возникновения ошибки считается ошибкой разработчика скрипта, а не средством защиты от неправильных аргументов и т.п. действий.
  • Скрипты должны соответствовать требованиям статического анализатора ShellCheck, поставляемого в рамках дистрибутива Debian Buster.
  • В скрипте, который устанавливает зависимости, должны ставится все зависимости, даже если они входят в «поставку по умолчанию».
  • Скрипты должны корректно обрабатывать краевые ситуации: отсутствие необходимых аргументов, отсутствие файлов для обработки и так далее.
  • Для оценки степени занятого пространства файлового хранилища можно использовать приложение df.