BASH_SRV Telegram 86
📈 Мониторинг загрузки 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



tgoop.com/bash_srv/86
Create:
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

View MORE
Open in Telegram


Telegram News

Date: |

Click “Save” ; A Hong Kong protester with a petrol bomb. File photo: Dylan Hollingsworth/HKFP. It’s easy to create a Telegram channel via desktop app or mobile app (for Android and iOS): So far, more than a dozen different members have contributed to the group, posting voice notes of themselves screaming, yelling, groaning, and wailing in various pitches and rhythms. More>>
from us


Telegram Bash Советы
FROM American