Я хочу создать скрипт для отправки предупреждения, если использование Swap превышает 85%.

Вопрос или проблема

cat /proc/meminfo | grep Swap

SwapCached:            460248 kB
SwapTotal:             8388600 kB
SwapFree:              1031900 kB

Я хочу использовать эту информацию, чтобы сравнить ее с пороговым значением. Когда предел будет достигнут, должно быть отправлено предупреждение.
Могу ли я получить помощь с этим?

В одной строке:

if [[ $(swapon -s | grep -v Size | awk '{print $4/$3*100}'| awk -F "." '{print $1}') -ge 85 ]]; then echo 'Swap alert'|wall -n;fi

Вы можете протестировать это, изменив 85 на другое значение, чтобы убедиться, что это работает.

Строго для “извлечения чисел” я бы использовал:

$ grep Swap /proc/meminfo | tr -d "[a-zA-Z :]"
7228
3141628
3091688

Или, если вам нужны значения в одну строку:

$ echo `grep Swap /proc/meminfo | tr -d "[a-zA-Z :]"`
7228 3141628 3091688

Вы могли бы начать с чего-то вроде ниже:

#!/bin/bash

totalSwap=$(cat /proc/meminfo | sed -n 's/^SwapTotal: \+\([0-9]\+\) \+[a-zA-Z]\+$/\1/p')
freeSwap=$(cat /proc/meminfo | sed -n 's/^SwapFree: \+\([0-9]\+\) \+[a-zA-Z]\+$/\1/p')
usedSwap=$(( $totalSwap - $freeSwap ))
usedPctSwap=$(( 100 * $usedSwap / $totalSwap ))

swapThreshold=85

if [[ $usedPctSwap -gt $swapThreshold ]]
then
    echo "Swap utilisation is at $usedPctSwap %" | mail -s "SWAP Utilisation Alert" your.email@yourdomain
fi

Конечно, не стесняйтесь менять это для удовлетворения ваших конкретных нужд. Например, у вас может быть метод оповещения, который предпочтительнее простого письма.

Вы могли бы запланировать это, добавив его в crontab

Как насчет:

#!/bin/bash
threshold=$(( 8388600 * 15 / 100 ))
current=$(sed -n '/SwapFree/s/[^[:digit:]]*\([[:digit:]]*\).*/\1/p' /proc/meminfo)
[[ $current -lt $threshold ]] && echo "There is a problem" || echo "No problem"

Здесь мы рассчитали порог, взяв SwapFree в качестве эталона, если процент свободного swap меньше 15%, то будет отправлено предупреждение.

Вместо echo "There is a problem" сделайте то, что хотите, например, отправьте письмо или что-то еще.

Вы должны запустить это как задание cron (например, каждые 5 минут).

Это позволит вам получить total и free, числа:

cat /proc/meminfo |                  #прочитать данные
  grep -E "Swap((Total:)|(Free:))" | #только две нужные записи
  sed -re "s/[[:blank:]]+/ /g" |     #только один пробел в качестве разделителя полей
  cut -d" " -f2                      #только нужное поле

Потом вам нужно сделать что-то с ними. Может быть, это:

(cat /proc/meminfo | 
   grep -E "Swap((Total:)|(Free:))" | 
   sed -re "s/[[:blank:]]+/ /g" | 
   cut -d" " -f2 && 
   echo "100 * r / 100 r - p" ) | 
     dc

Ответ или решение

Создание скрипта для мониторинга использования свопа и отправки оповещений является важной задачей для управления серверной инфраструктурой, особенно в средах с ограниченными ресурсами. Это позволяет своевременно решать потенциальные проблемы, связанные с недостатком памяти, и обеспечивать стабильную работу системы. В данной статье мы обсудим теоретические основы мониторинга использования свопа, предложим конкретные примеры реализации скрипта и продемонстрируем его применение на практике.

Теория

Своп — это область на диске, используемая для хранения данных, которые не помещаются в оперативную память (RAM). Когда система испытывает нехватку RAM, она перемещает менее используемые данные в своп. Это позволяет освобождать ресурсы RAM для более актуальных задач, но также значительно замедляет операции ввода-вывода по сравнению с RAM.

Мониторинг использования свопа важен, так как интенсивное использование свопа может свидетельствовать о том, что серверу не хватает RAM, что может привести к снижению производительности и даже отказу системы. Установив порог, например 85%, можно настроить автоматическое оповещение администраторов, что позволит принять меры до возникновения серьезных проблем.

Пример

В этом разделе мы представим пример скрипта, который мониторит использование свопа и отправляет оповещение, если оно превышает установленный порог. Языком программирования будет являться Bash, который широко используется для автоматизации задач в Unix-подобных системах.

#!/bin/bash

# Извлечение общей и свободной памяти свопа из /proc/meminfo
totalSwap=$(cat /proc/meminfo | sed -n 's/^SwapTotal: \+\([0-9]\+\) \+[a-zA-Z]\+$/\1/p')
freeSwap=$(cat /proc/meminfo | sed -n 's/^SwapFree: \+\([0-9]\+\) \+[a-zA-Z]\+$/\1/p')

# Вычисление использованного свопа и процента использования
usedSwap=$(( totalSwap - freeSwap ))
usedPctSwap=$(( 100 * usedSwap / totalSwap ))

# Установление порога для отправки оповещения
swapThreshold=85

# Проверка, превышает ли использование порог, и отправка оповещения
if [[ $usedPctSwap -gt $swapThreshold ]]
then
    echo "Swap utilisation is at $usedPctSwap %" | mail -s "SWAP Utilisation Alert" your.email@yourdomain
fi

Применение

Данный скрипт можно интегрировать в систему мониторинга, запуская его через cron для регулярных проверок. Например, его можно настроить на выполнение каждые пять минут. Для этого отредактируйте crontab с помощью команды crontab -e и добавьте следующую строку:

*/5 * * * * /path/to/your_script.sh

Настроив регулярный мониторинг, вы сможете оперативно реагировать на изменения в использовании свопа и предотвращать возникновение проблем. Это особенно важно в высоконагруженных системах, где любое падение производительности может повлиять на бизнес-процессы.

При необходимости, можно изменить способ отправки оповещения, например, на отправку сообщений в мессенджер или интеграцию с системами мониторинга, такими как Zabbix или Nagios. Это можно сделать, заменив команду отправки электронной почты на другую команду или скрипт в секции отправки предупреждений.

Завершение

Важность мониторинга использования свопа не стоит недооценивать. Оптимизация работы серверных систем, в том числе через автоматизацию мониторинга и оповещений, позволяет не только поддерживать стабильность и высокую производительность систем, но и своевременно решать возникающие проблемы, улучшая общее состояние ИТ-инфраструктуры. Надеемся, что предоставленный пример окажется полезным как для начинающих администраторов, так и для опытных специалистов, стремящихся улучшить стабильность своих систем и оперативность реагирования на их состояние.

Оцените материал
Добавить комментарий

Капча загружается...