Skip to content

Мониторинг и исследование состояния системы в реальном времени.

Notifications You must be signed in to change notification settings

sab3ll/LinuxMonitoring_v2.0

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

LinuxMonitoring v2.0

Мониторинг и исследование состояния системы в реальном времени.

  1. Генератор файлов
  2. Засорение файловой системы
  3. Очистка файловой системы
  4. Генератор логов
  5. Мониторинг
  6. GoAccess
  7. Prometheus и Grafana
  8. Готовый дашборд
  9. Дополнительно. Свой node_exporter

Part 1. Генератор файлов

Напиши bash-скрипт. Скрипт запускается с 6 параметрами. Пример запуска скрипта:
main.sh /opt/test 4 az 5 az.az 3kb

Параметр 1 - это абсолютный путь.
Параметр 2 - количество вложенных папок.
Параметр 3 - список букв английского алфавита, используемый в названии папок (не более 7 знаков).
Параметр 4 - количество файлов в каждой созданной папке.
Параметр 5 - список букв английского алфавита, используемый в имени файла и расширении (не более 7 знаков для имени, не более 3 знаков для расширения).
Параметр 6 - размер файлов (в килобайтах, но не более 100).

Имена папок и файлов должны состоять только из букв, указанных в параметрах, и использовать каждую из них хотя бы один раз. Длина этой части имени должна быть от четырех знаков, плюс дата запуска скрипта в формате DDMMYY, отделённая нижним подчёркиванием, например:
./aaaz_021121/, ./aaazzzz_021121

При этом, если для имени папок или файлов были заданы символы az, то в названии файлов или папок не может быть обратной записи:
./zaaa_021121/, т.е. порядок указанных символов в параметре должен сохраняться.

При запуске скрипта в месте, указанном в Параметре 1, должны быть созданы папки и файлы в них с соответствующими именами и размером. Скрипт должен остановить работу, если в файловой системе (в разделе /) останется 1 Гб свободного места. Запиши лог-файл с данными по всем созданным папкам и файлам (полный путь, дата создания, размер для файлов).

Part 2. Засорение файловой системы

Напиши bash-скрипт. Скрипт запускается с 3 параметрами. Пример запуска скрипта:
main.sh az az.az 3Mb

Параметр 1 - список букв английского алфавита, используемый в названии папок (не более 7 знаков).
Параметр 2 - список букв английского алфавита, используемый в имени файла и расширении (не более 7 знаков для имени, не более 3 знаков для расширения).
Параметр 3 - размер файла (в Мегабайтах, но не более 100).

Имена папок и файлов должны состоять только из букв, указанных в параметрах, и использовать каждую из них хотя бы 1 раз. Длина этой части имени должна быть от 5 знаков, плюс дата запуска скрипта в формате DDMMYY, отделённая нижним подчёркиванием, например:
./aaazz_021121/, ./aaazzzz_021121

При этом, если для имени папок или файлов были заданы символы az, то в названии файлов или папок не может быть обратной записи:
./zaaa_021121/, т.е. порядок указанных в параметре символов должен сохраняться.

При запуске скрипта в различных (любых, кроме путей содержащих bin или sbin) местах файловой системы должны быть созданы папки с файлами. Количество вложенных папок - до 100. Количество файлов в каждой папке - случайное число (для каждой папки своё). Скрипт должен остановить работу, когда в файловой системе (в разделе /) останется 1 Гб свободного места. Свободное место в файловой системе определять командой: df -h /

Запиши лог-файл с данными по всем созданным папкам и файлам (полный путь, дата создания, размер для файлов). В конце работы скрипта выведи на экран время начала работы скрипта, время окончания и общее время его работы. Дополни этими данными лог-файл.

Part 3. Очистка файловой системы

Напиши bash-скрипт. Скрипт запускается с 1 параметром. Скрипт должен уметь очистить систему от созданных в Part 2 папок и файлов 3 способами:

  1. По лог файлу
  2. По дате и времени создания
  3. По маске имени (т.е. символы, нижнее подчёркивание и дата).

Способ очистки задается при запуске скрипта, как параметр со значением 1, 2 или 3.

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

Part 4. Генератор логов

Напиши bash-скрипт или программу на С, генерирующие 5 файлов логов nginx в combined формате. Каждый лог должен содержать информацию за один день.

За день должно быть сгенерировано случайное число записей от 100 до 1000. Для каждой записи должны случайным образом генерироваться:

  1. IP (любые корректные, т.е. не должно быть ip вида 999.111.777.777)
  2. Коды ответа (200, 201, 400, 401, 403, 404, 500, 501, 502, 503)
  3. Методы (GET, POST, PUT, PATCH, DELETE)
  4. Даты (в рамках заданного дня лога, должны идти по увеличению)
  5. URL запроса агента
  6. Агенты (Mozilla, Google Chrome, Opera, Safari, Internet Explorer, Microsoft Edge, Crawler and bot, Library and net tool)

Part 5. Мониторинг

Напиши bash-скрипт для разбора логов nginx из Части 4 через awk.

Скрипт запускается с 1 параметром, который принимает значение 1, 2, 3 или 4. В зависимости от значения параметра выведи:

  1. Все записи, отсортированные по коду ответа;
  2. Все уникальные IP, встречающиеся в записях;
  3. Все запросы с ошибками (код ответа - 4хх или 5хх);
  4. Все уникальные IP, которые встречаются среди ошибочных запросов.

Part 6. GoAccess

С помощью утилиты GoAccess получи ту же информацию, что и в Части 5.

Открой веб-интерфейс утилиты на локальной машине.

Part 7. Prometheus и Grafana

Установи и настрой Prometheus и Grafana на виртуальную машину.
Получи доступ к веб-интерфейсам Prometheus и Grafana с локальной машины.
Добавь на дашборд Grafana отображение ЦПУ, доступной оперативной памяти, свободное место и кол-во операций ввода/вывода на жестком диске.
Запусти свой bash-скрипт из Части 2.
Посмотри на нагрузку жесткого диска (место на диске и операции чтения/записи).
Установи утилиту stress и запусти команду stress -c 2 -i 1 -m 1 --vm-bytes 32M -t 10s
Посмотри на нагрузку жесткого диска, оперативной памяти и ЦПУ.

Part 8. Готовый дашборд

Установи готовый дашборд Node Exporter Quickstart and Dashboard с официального сайта Grafana Labs.
Проведи те же тесты, что и в Части 7.
Запусти ещё одну виртуальную машину, находящуюся в одной сети с текущей.
Запусти тест нагрузки сети с помощью утилиты iperf3.
Посмотри на нагрузку сетевого интерфейса.

Part 9. Свой node_exporter

Напиши bash-скрипт или программу на С, собирающие информацию по базовым метрикам системы (ЦПУ, оперативная память, жесткий диск (объем)). Скрипт или программа должна формировать html страничку по формату Prometheus, которую будет отдавать nginx.
Саму страничку обновлять можно как внутри bash-скрипта или программы (в цикле), так и при помощи утилиты cron, но не чаще, чем раз в 3 секунды.

Поменяй конфигурационный файл Prometheus, чтобы он собирал информацию с созданной тобой странички.
Проведи те же тесты, что и в Части 7.

About

Мониторинг и исследование состояния системы в реальном времени.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published