Observability
April 1

Мониторим ресурсы Linux

В целом скрипт выглядит так:

#!/bin/bash

CPU_THRESHOLD=80
MEMORY_THRESHOLD=80
DISK_THRESHOLD=80

while true; do
  cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
  cpu_usage=${cpu_usage%.*}
  if ((cpu_usage >= CPU_THRESHOLD)); then
    send_alert "CPU" "$cpu_usage"
  fi

  memory_usage=$(free | awk '/Mem/ {printf("%3.1f", ($3/$2) * 100)}')
  memory_usage=${memory_usage%.*}
  if ((memory_usage >= MEMORY_THRESHOLD)); then
    send_alert "Memory" "$memory_usage"
  fi

  disk_usage=$(df -h / | awk '/\// {print $(NF-1)}')
  disk_usage=${disk_usage%?}
  if ((disk_usage >= DISK_THRESHOLD)); then
    send_alert "Disk" "$disk_usage"
  fi

  clear
  echo "Resource Usage:"
  echo "CPU: $cpu_usage%"
  echo "Memory: $memory_usage%"
  echo "Disk: $disk_usage%"
  sleep 2
done

Что здесь происходит?

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

Сам запуск утилит происходит с паузой в 2 секунды.

Скрипт можно использовать для модификации и собирать информацию из других источников. Для этого помимо прочего необходимо исправить названия колонок в местах, где происходит парсинг.