返回

如何使用 Shell 脚本通过电子邮件监控进程资源使用率?

Linux

使用 Shell 脚本通过电子邮件监控进程资源使用率

简介

监控 IT 系统的性能和资源使用至关重要,以确保其平稳运行和及时响应任何潜在问题。在本文中,我们将探讨如何编写一个 Shell 脚本来监视进程的资源使用情况,并根据预定义的阈值通过电子邮件发送警报。

Shell 脚本概述

Shell 脚本是一种强大的工具,可用于执行一系列命令和任务。它们常用于系统管理和自动化,包括进程监控和警报。

脚本功能

我们的 Shell 脚本将实现以下功能:

  • 持续监控指定进程的 CPU 和内存使用率。
  • 比较使用率与预定义的阈值。
  • 当使用率超过阈值时,通过电子邮件发送警报。

脚本实现

#!/bin/bash

# 进程名称
PROCESS_NAME="nginx"

# 监控时间间隔(秒)
INTERVAL=10

while true; do
  # 获取进程资源使用情况
  PROC_STATUS=$(ps -p $(pgrep $PROCESS_NAME) -o %cpu,%mem)

  # 检查资源使用率是否超过阈值
  if [[ $PROC_STATUS =~ ^[0-9]+\.[0-9]+,[0-9]+\.[0-9]+$ ]]; then
    CPU_USAGE=$(echo $PROC_STATUS | cut -d ',' -f 1)
    MEM_USAGE=$(echo $PROC_STATUS | cut -d ',' -f 2)

    # 阈值
    CPU_THRESHOLD=80
    MEM_THRESHOLD=80

    if (( $(echo "$CPU_USAGE > $CPU_THRESHOLD" | bc -l) )) || (( $(echo "$MEM_USAGE > $MEM_THRESHOLD" | bc -l) )); then
      # 资源使用率超过阈值,发送邮件
      sendmail -f sender@example.com -t recipient@example.com <<EOF
Subject: $PROCESS_NAME 资源使用率告警

进程 $PROCESS_NAME 的资源使用率已超过阈值:

* CPU 使用率:$CPU_USAGE%
* 内存使用率:$MEM_USAGE%

请及时采取措施。

--
系统监控脚本
EOF
    fi
  fi

  sleep $INTERVAL
done

配置脚本

为了使用此脚本,请根据以下步骤进行配置:

  • 替换 PROCESS_NAME 为要监控的进程名称。
  • 调整 CPU_THRESHOLDMEM_THRESHOLD 以匹配您的资源使用要求。
  • 替换 sender@example.comrecipient@example.com 为您的发件人和收件人电子邮件地址。
  • 将脚本保存为可执行文件并将其放置在您选择的位置。

运行脚本

使用以下命令运行脚本:

./scriptname.sh

常见问题解答

  1. 如何自定义阈值?
    您可以在脚本中修改 CPU_THRESHOLDMEM_THRESHOLD 的值。

  2. 我可以在脚本中监控多个进程吗?
    可以,只需在 PROCESS_NAME 变量中列出进程名称列表,以逗号分隔。

  3. 如何自动化脚本的运行?
    可以使用 crontab 或 systemd 定时任务来定期运行脚本。

  4. 我如何获取脚本中进程的资源使用率?
    脚本使用 ps 命令获取进程状态,然后从输出中解析 CPU 和内存使用率。

  5. 如何在脚本中发送电子邮件?
    脚本使用 sendmail 命令发送电子邮件,该命令内置于大多数 Linux 发行版中。

结论

通过使用本文中的 Shell 脚本,您可以主动监控进程的资源使用情况,并通过电子邮件及时收到警报,以快速应对任何潜在问题。通过自定义脚本并将其集成到您的系统管理例程中,您可以确保您的 IT 系统持续高效运行。