tgoop.com/bash_srv/86
Last Update:
📈 Мониторинг загрузки CPU и памяти с автоматическими уведомлениями 🚨Часть 2️⃣
4. Проверка порогов
* Сравниваем переменные CPU и RAM с CPU_THRESHOLD и RAM_THRESHOLD.
* Если превышен хотя бы один порог, формируем сообщение об ошибках (несколько строк, если оба ресурса в аварийном состоянии).
* Записываем предупреждение в тот же лог.
* При наличии исполняемого скрипта $NOTIFY_SCRIPT (например, отправка письма, пуша в Telegram, Slack, и т.д.) вызываем его, передавая всю текстовую информацию одним аргументом.
* Если скрипт уведомления не указан или он не помечен как исполняемый, просто логируем, что уведомление не отправлено.
Пример использования 🖥️
1. Создаем скрипт уведомления (например, notify.sh), который отправит сообщение в Telegram через Bot API (пример упрощённый):
#!/usr/bin/env bash
# notify.sh
# Использование: ./notify.sh "Ваше сообщение"
CHAT_ID="123456789"
BOT_TOKEN="1234:ABCD..."
MESSAGE="$1"
curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
-d chat_id="${CHAT_ID}" \
-d text="$MESSAGE"
Не забудьте сделать его исполняемым:
chmod +x /path/to/notify.sh
2. Сам скрипт мониторинга (сохраняем как
/usr/local/bin/monitor_resources.sh):
chmod +x /usr/local/bin/monitor_resources.sh
3. Добавляем в cron для регулярного выполнения, например, каждые 5 минут:
*/5 * * * * /usr/local/bin/monitor_resources.sh 75 80 /path/to/notify.sh /var/log/resource_monitor.log
* Каждые 5 минут скрипт будет проверять ресурсы.
* Если загрузка CPU превысит 75% или использование RAM превысит 80%, вы получите пуш в Telegram.
* Все показатели и события будут храниться в
/var/log/resource_monitor.log.Регулярные выражения для анализа логов 🛠️
Чтобы быстро найти в логе все моменты, когда была высокая загрузка, можно воспользоваться
grep с регуляркой на поиск слова WARNING или WARNING на (в зависимости от вашего формата):
grep -E "WARNING на" /var/log/resource_monitor.log | tail -n 20
*
-E включает расширенные регэкспы, чтобы мы могли сразу писать более выразительные шаблоны.* Если нужно искать как CPU, так и RAM-превышения, можно просто фильтровать по ключевому слову
WARNING.А чтобы извлечь только числовые значения CPU и RAM (например, для построения графика), можно использовать такую регулярку:
grep -oP "(?<=CPU: )\d+|(?<=RAM: )\d+" /var/log/resource_monitor.log
*
-oP — включаем Perl-совместимые регулярки и печатаем только совпадения.*
(?<=CPU: )\d+ находит числа, стоящие после CPU: . То же для RAM: .* В результате вы получите список чисел: сначала процент CPU, затем процент RAM, затем снова CPU и RAM и т.д. Можно перенаправить их в CSV для визуализации.
Советы по доработке ✨
* Графическое представление: можно раз в сутки запускать ещё один скрипт, который из лога выдергивает данные за последние 24 часа и рисует график (с помощью
gnuplot или Python).* Добавить HDD/SSD мониторинг: аналогично можно проверять доступное место на диске (через
df -h и awk), объединив два вида проверки в одном инструменте.* Динамические пороги: если у вас в пиковое время допустимо более высокое значение, можно задавать пороги исходя из времени суток — через
date +%H проверять час и переключаться между разными значениями.Надеюсь, этот скрипт упростит вам задачу контроля ресурсов и поможет своевременно реагировать на перегрузки серверов!
👉@bash_srv
BY Bash Советы
Share with your friend now:
tgoop.com/bash_srv/86
