🖥️ Плагин Nagios для проверки использования памяти на Linux

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

Одним из ключевых аспектов управления серверами является мониторинг использования памяти.

Высокий уровень использования памяти может привести к замедлению времени отклика приложений, нестабильности системы и даже сбоям.

Для решения этой проблемы мы представляем эффективное решение для мониторинга памяти:

Bash-скрипт, предназначенный для запуска пороговых предупреждений, легко интегрируемый с Nagios, широко используемым инструментом мониторинга.

Этот скрипт (https://github.com/tecrahul/nagios-plugins/blob/main/check_memory.sh) – свидетельство силы сотрудничества с открытым исходным кодом.

Вдохновленная работой, доступной на GitHub, эта статья расширяет возможности скрипта , предлагая руководство по его реализации и настройке для вашей среды мониторинга Nagios.

🖧 Основные номера сетевых портов на Linux

Зачем отслеживать использование памяти?

Память – это ограниченный ресурс, который приложения и процессы потребляют с течением времени.

Без надлежащего мониторинга система может исчерпать память, что приведет к подкачке или свопингу, которые значительно снижают производительность.

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

Объяснение скрипта

Скрипт Bash предназначен для проверки использования памяти в системе в соответствии с заданными пороговыми значениями.

Если объем памяти превышает эти пороговые значения, сценарий запускает предупреждения, позволяя системным администраторам принять упреждающие меры, чтобы смягчить возможные последствия.

#!/bin/bash



# ==============================================================================

# SCRIPT: check_memory.sh

# AUTHOR: Rahul Kumar

# COPYRIGHT: tecadmin.net

# DESCRIPTION:

#   This script is designed to monitor and report on system memory usage. It

#   allows for warning and critical thresholds to be set for memory usage

#   percentages, providing alerts based on the specified criteria. The script

#   supports output in different units (Bytes, Kilobytes, Megabytes, Gigabytes)

#   for flexible monitoring requirements. This utility is particularly useful

#   for system administrators and monitoring tools like Nagios to keep an eye

#   on system health and perform proactive maintenance.

# 

# USAGE:

#   ./check_memory.sh [ -w  ] [ -c  ] [ -u  ]

#   -w, --warning=INTEGER[%]   Warning threshold as a percentage of used memory.

#   -c, --critical=INTEGER[%]  Critical threshold as a percentage of used memory.

#   -u, --unit=UNIT            Unit to use for output (b, K, M, G). Default: M

# 

# EXAMPLES:

#   ./check_memory.sh -w 80 -c 90 -u M

#   This command sets a warning threshold at 80% memory usage and a critical

#   threshold at 90%, with output in Megabytes.

# ==============================================================================



PROGNAME="check_memory"

VERSION='1.0'

FREECMD='/usr/bin/free'

UNIT='M' # Default unit

WARNING_THRESHOLD=80

CRITICAL_THRESHOLD=90



# Function to show usage

usage() {

  echo "Usage: $0 [ -w  ] [ -c  ] [ -u  ]"

  echo "   -w, --warning=INTEGER[%]   Warning threshold as a percentage of used memory."

  echo "   -c, --critical=INTEGER[%]  Critical threshold as a percentage of used memory."

  echo "   -u, --unit=UNIT            Unit to use for output (b, K, M, G). Default: $UNIT"

  exit 3

}



# Parse command line options

while getopts ":w:c:u:" opt; do

  case $opt in

    w) WARNING_THRESHOLD="$OPTARG" ;;

    c) CRITICAL_THRESHOLD="$OPTARG" ;;

    u) UNIT="$OPTARG" ;;

    ?) usage ;;

  esac

done



# Function to convert memory to the specified unit

convert_memory() {

  local memory=$1

  case $UNIT in

    b) echo $memory ;;

    K) echo $((memory / 1024)) ;;

    M) echo $((memory / 1024 / 1024)) ;;

    G) echo $((memory / 1024 / 1024 / 1024)) ;;

    *) echo "Error: Unknown unit $UNIT. Must be one of 'b', 'K', 'M', 'G'."; exit 3 ;;

  esac

}



# Extract memory data

total_bytes=$(grep MemTotal /proc/meminfo | awk '{print $2 * 1024}')

free_bytes=$(grep MemFree /proc/meminfo | awk '{print $2 * 1024}')

buffers_bytes=$(grep Buffers /proc/meminfo | awk '{print $2 * 1024}')

cached_bytes=$(grep "^Cached" /proc/meminfo | awk '{print $2 * 1024}')

available_bytes=$((free_bytes + buffers_bytes + cached_bytes))



# Convert to specified unit

total=$(convert_memory $total_bytes)

available=$(convert_memory $available_bytes)



# Calculate used memory

used=$(convert_memory $((total_bytes - available_bytes)))



# Calculate usage percentage

usage_percentage=$((100 - (available * 100 / total)))



# Compare usage against thresholds

if [ "$usage_percentage" -ge "$CRITICAL_THRESHOLD" ]; then

  echo "CRITICAL: Memory usage is above critical threshold ($CRITICAL_THRESHOLD%). $used$UNIT used ($usage_percentage% of total)."

  exit 2

elif [ "$usage_percentage" -ge "$WARNING_THRESHOLD" ]; then

  echo "WARNING: Memory usage is above warning threshold ($WARNING_THRESHOLD%). $used$UNIT used ($usage_percentage% of total)."

  exit 1

else

  echo "OK: Memory usage is within bounds. $used$UNIT used ($usage_percentage% of total)."

  exit 0

fi


Ключевые особенности

  • Пороговые предупреждения: Определите пользовательские предупреждающие и критические уровни для использования памяти в процентах от общего объема памяти.
  • Гибкие единицы измерения: Отображайте использование памяти в единицах, которые наилучшим образом соответствуют вашим потребностям в мониторинге.
  • Интеграция с Nagios: Разработан для совместной работы с Nagios, что позволяет легко интегрировать его в существующие системы мониторинга.

Руководство по реализации

  • Загрузите скрипт: Клонируйте или загрузите скрипт из репозитория GitHub.
  • Права: Убедитесь, что скрипт является исполняемым, запустив его:

chmod +x check_memory.sh

  • Конфигурация Nagios: Интегрируйте сценарий в среду мониторинга Nagios. Определите команду в конфигурации Nagios, указывающую на сценарий, и настройте проверку служб на узлах для использования этой команды.
  • Конфигурация NRPE: Для мониторинга памяти на удаленных узлах Linux можно использовать этот скрипт с клиентом NRPE. Тогда сервер Nagios сможет выполнять скрипт удаленно.
  • Тестирование: Протестируйте скрипт вручную, чтобы убедиться, что он запускает оповещения так, как ожидается. При необходимости настройте пороговые значения и единицы измерения для точной настройки мониторинга.

Интеграция с Nagios

Чтобы интегрировать скрипт с сервером Nagios для мониторинга памяти локального экземпляра.

Вы можете определить новую команду в конфигурации Nagios:

define command{

    command_name check_memory_usage

    command_line /path/to/check_memory.sh -w $ARG1$ -c $ARG2$ -u $ARG3$

}

Затем используйте эту команду в определениях служб для мониторинга использования памяти на хосте Nagios.

Замените /path/to/ на фактический путь к скрипту.

Следующий шаг поможет вам отслеживать память удаленных узлов с помощью клиента NRPE.

Nagios SNMP-мониторинг хостов Linux на AlienVault USM / OSSIM

Интеграция с клиентом NRPE

Чтобы интегрировать скрипт мониторинга памяти с Nagios через NRPE (Nagios Remote Plugin Executor), вам нужно добавить определение команды в файл nrpe.cfg на удаленном хосте, где запущен NRPE. Это определение будет указывать NRPE, как выполнять скрипт по запросу сервера Nagios.

Конфигурация клиента NRPE: Добавьте приведенную ниже запись в файл nrpe.cfg, чтобы включить скрипт мониторинга памяти:

command[check_memory]=/usr/lib/nagios/plugins/check_memory.sh -w 80 -c 90 -u M


Настройте сервер Nagios: На сервере Nagios определите службу, которая использует команду check_nrpe для запроса выполнения check_memory на удаленном хосте.

Пример определения службы может выглядеть следующим образом:



define service{

    use generic-service

    host_name remote_host_name

    service_description Memory Usage

    check_command check_nrpe!check_memory

}


Замените remote_host_name на имя хоста, определенное в конфигурации Nagios.

Заключение

Эффективный мониторинг памяти является краеугольным камнем для поддержания производительности и стабильности системы.

Используя этот скрипт Bash, системные администраторы могут проактивно управлять ресурсами памяти, гарантируя, что серверы останутся здоровыми и отзывчивыми.

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

⛅ Мониторинг хостов Linux с помощью плагина Nagios check_by_ssh

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

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

см. также:



2024-02-21T12:55:07
Скрипты