У меня есть сервер Linux. Я хотел бы отслеживать объем используемой памяти, и если он превышает определенный порог (скажем, 512 МБ), он автоматически отправит электронное письмо администратору.
Как я могу это сделать?
Вы можете получить использование памяти с помощью free
команды. Небольшой разбор его выходных данных даст вам текущую используемую память:
free -m | awk '/buffers\/cache/ {print $3}'
Затем вы можете отправить электронное письмо с помощью команды mail
(при условии, что цепочка почты уже настроена на вашем сервере):
echo -e "Mail content." | mail -s "Subject" "destination@expample.com"
При этом вы можете написать небольшой sh
скрипт, проверяющий использование памяти и отправляющий почту при необходимости:
#!/bin/sh
memuse=$(free -m | awk '/buffers\/cache/ {print $3}')
if [ $memuse -ge 512 ]; then
message="RAM limit exceeded in server alpha.\nCurrent use is $memuse MiB."
echo -e "$message" | mail -s "RAM monitoring" "admin@example.com"
fi
Теперь вам просто нужно периодически запускать этот скрипт. Например, мы можем использовать cron
для запуска каждую минуту, добавив в /etc/crontab
:
* * * * * /root/ram_monitoring.sh
(при условии, что вы сохранили скрипт в /root/ram_monitoring.sh
и у вас есть работающий cron deamon.)