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

🖥️ Плагин 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 предлагает простой, но эффективный подход к мониторингу использования памяти, помогая предотвратить потенциальные проблемы в системе до их возникновения.

см. также:
Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий