Лабораторная работа № 2
Проверяемые знания учащихся
- Знание концепции текущего рабочего каталога.
- Умение формировать абсолютные и относительные пути в 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
.