TGViewer
Bash Советы Bash Советы @bash_srv · 2.73K subscribers
Post #86 1.42K
📈 Мониторинг загрузки 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
  • 👍 8
More from @bash_srv
  1. Sep 29, 2026Bash-совет: анализ неудачных SSH-логинов и бан «горячих» IP 🔒🐚 Хотите быстро узнать, как…
  2. Sep 21, 2026💡 Bash-совет: Анализ самых активных IP в логах веб-сервера 🐚🚀 Когда на сервере много тр…
  3. Sep 16, 2026Сегодня я хочу поделиться простым, но очень полезным Bash-скриптом для автоматического рез…
  4. Sep 14, 2026🕵️‍♂️ Мониторим новые файлы в каталоге в реальном времени Иногда нужно узнать, когда в оп…
  5. Sep 11, 2026🧹 Bash-скрипт для очистки старых логов с уведомлением Иногда логи занимают слишком много…
  6. Sep 8, 2026🚀 Мониторим активные подключения к серверу по SSH Иногда нужно быстро узнать, кто сейчас…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →