Заметки / Скрипт мониторинга нагрузки
|
Shell, Unix
|
|
Небольшой лёгкий shell-скрипт мониторинга нагрузки на сервере. Можно поставить на ежеминутное выполнение в cron'е.
load.sh:
# Сбрасываем нагрузку в "load.txt"
uptime > /path/top/load.txt
# Если от 1% и выше
if grep -e 'average: [^0]\.' '/path/top/load.txt'; then
# Если нет директории с датой перегрузки, создаём её
if [ ! -d "/path/top/`date +%Y-%m-%d`" ]; then
mkdir "/path/top/`date +%Y-%m-%d`"
# Права 777 позволят удалять файлы любому пользователю сервера
chmod 777 "/path/top/`date +%Y-%m-%d`"
fi
# Если нагрузка 1%
if grep -e 'average: [1]\.' '/path/top/load.txt'; then
# Сохранение вывода top в файл "время.txt"
top -b -n 1 > "/path/top/`date +%Y-%m-%d`/`date +%T`.txt"
chmod 777 "/path/top/`date +%Y-%m-%d`/`date +%T`.txt"
fi
# Если от 2% и выше
if grep -e 'average: [^1]\.' '/path/top/load.txt'; then
# Записываем в отдельный файл "время_more1.txt"
top -b -n 1 > "/path/top/`date +%Y-%m-%d`/`date +%T`_more1.txt"
chmod 777 "/path/top/`date +%Y-%m-%d`/`date +%T`_more1.txt"
fi
fi
Нужно создать директорию "top" в пути "path" (например, "/var/www/" и так далее) - в ней будут создаваться поддиректории с файлами нагрузки по дням. Выполнение скрипта желательно проверить в консоли. Если не будет выполняться, то нужно установить на "load.sh" подходящие права (например, "744"). Ещё может потребоваться установить переносы строк в Unix-формате ("\n" вместо "\r\n", если скрипт загружается с компьютера под Windows). Для этого достаточно закачать файл через обычный FTP-менеджер, в режиме передачи текстовых файлов.
|
|