shell编程——实践3(监控告警)

2024-08-06 23:22:33 浏览数 (2)

项目需求

写一个shell脚本用于监控linux服务器的内存、CPU、及磁盘的使用情况

作用

  1. 实时监控
    • 脚本能够实时监控服务器的关键资源使用情况,如内存、CPU 和磁盘使用率。
    • 这有助于快速识别潜在的问题,比如资源瓶颈或配置不当等问题。
  2. 预警机制
    • 当监控到的资源使用率超过预定义的阈值时,脚本会发送警告邮件给管理员。
    • 这样可以在问题恶化之前得到及时的通知,从而采取必要的措施。
  3. 自动化报告
    • 脚本会输出当前的系统状态,包括内存、CPU 和磁盘的使用情况。
    • 这些信息可以用于定期检查系统的健康状况,或者作为故障排查的基础。

好处

  1. 预防性维护
    • 通过提前发现资源使用率过高,可以采取预防措施,避免系统崩溃或性能下降。
    • 这有助于降低因停机造成的业务中断风险。
  2. 提高响应速度
    • 自动化的预警机制确保了管理员能够在第一时间收到通知,从而更快地解决问题。
    • 这对于需要快速响应的服务尤为重要。
  3. 减少人工干预
    • 脚本自动执行监控任务,减少了人工监控的需求。
    • 这样可以节省运维人员的时间,让他们专注于其他更重要的任务。
  4. 增强系统稳定性
    • 通过对资源使用的持续监控,可以及时发现潜在的问题点,比如磁盘空间不足可能导致的日志记录失败。
    • 这有助于维持系统的稳定运行,确保业务的连续性。
  5. 简化报告流程
    • 脚本输出的信息可以方便地整合到日常的运维报告中。
    • 这有助于管理层更好地理解系统的运行状态,从而做出更加明智的决策。
  6. 易于扩展
    • 脚本可以根据需要轻松地添加更多的监控项或调整阈值。
    • 这使得脚本能够随着业务需求的变化而灵活地调整。

实际应用场景

  • 服务器监控:在生产环境中监控服务器资源使用情况,确保服务的正常运行。
  • 云环境管理:在云端部署的应用程序中监控资源使用情况,以优化成本和性能。
  • 数据中心管理:在大型数据中心中监控多台服务器的资源使用情况,确保高效的资源分配。

通过使用这样的脚本,运维团队可以更加高效地管理服务器资源,减少潜在的风险,并提高整体的服务质量。

接下来我们来看一下脚本案例:

代码语言:sh复制
[root@xiaoge opt]# cat system_listen.sh
#!/bin/bash

# 定义阈值
MEMORY_THRESHOLD=80  # 内存使用率超过80%时发送警告
CPU_THRESHOLD=90     # CPU使用率超过90%时发送警告
DISK_THRESHOLD=90    # 磁盘使用率超过90%时发送警告

# 定义警告邮件地址
EMAIL="admin@example.com"

# 获取系统信息
MEMORY_USAGE=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *([0-9.]*)%* id.*/1/" | awk '{print 100 - $1}')
DISK_USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')

# 判断是否超过阈值
if (( $(echo "$MEMORY_USAGE > $MEMORY_THRESHOLD" | bc -l) )); then
    echo "High Memory Usage: $MEMORY_USAGE%" | mail -s "Memory Alert" $EMAIL
fi

if (( $(echo "$CPU_USAGE > $CPU_THRESHOLD" | bc -l) )); then
    echo "High CPU Usage: $CPU_USAGE%" | mail -s "CPU Alert" $EMAIL
fi

if (( $(echo "$DISK_USAGE > $DISK_THRESHOLD" | bc -l) )); then
    echo "High Disk Usage: $DISK_USAGE%" | mail -s "Disk Alert" $EMAIL
fi

# 输出当前状态
echo "Current System Status:"
echo "Memory Usage: $MEMORY_USAGE%"
echo "CPU Usage: $CPU_USAGE%"
echo "Disk Usage: $DISK_USAGE%"


[root@xiaoge opt]# source system_listen.sh
Current System Status:
Memory Usage: 5.84526%
CPU Usage: 3.2%
Disk Usage: 4%
#目前来看,我的服务器使用情况良好

使用说明

  1. 权限设置:确保脚本具有执行权限。您可以使用 chmod x /opt/system_listen.sh 来赋予脚本执行权限。
  2. 邮件配置:在使用 mail 命令发送邮件之前,您需要确保邮件服务器已经配置好,并且可以通过命令行发送邮件。如果您的服务器没有邮件服务,可以考虑使用第三方邮件服务提供商(如 SendGrid)的 API 来发送邮件。
  3. 定时任务:为了定期运行此脚本,您可以将其添加到 cron 表中。例如,每 5 分钟运行一次: /5 * * * /opt/system_listen.sh

注意事项

  • 安全性:确保脚本只被授权的用户执行。
  • 错误处理:在实际部署中,您可能需要添加更多的错误处理逻辑来确保脚本的健壮性。
  • 日志记录:考虑将输出重定向到日志文件中,以便日后查阅。
  • 性能影响:在生产环境中运行此脚本时,注意不要过于频繁地执行,以免影响系统性能。

希望这个脚本对您有所帮助!如果有任何进一步的需求或者问题,请随时告诉我。

0 人点赞