shell监控服务器

ell监控服务器可实时获取CPU、内存、磁盘等资源使用情况,设置阈值预警,还能定时生成报告,助力运维管理

Shell监控服务器
通过Shell脚本可以对服务器的多个方面进行监控,包括CPU使用率、内存使用情况、磁盘空间、网络连接等,以下是一些常见的监控方法和示例脚本。

shell监控服务器

CPU使用率监控

获取CPU使用率

可以使用top命令或者mpstat命令来获取CPU的使用率信息。

示例脚本(使用top命令):

#!/bin/bash
# 获取CPU使用率
cpu_usage=$(top -bn1 | grep "Cpu(s)" | sed "s/., ([0-9.])% id./1/" | awk '{print 100 $1}')
echo "CPU使用率:$cpu_usage%"
# 判断是否超过阈值
threshold=80
if [ $(echo "$cpu_usage > $threshold" | bc) -eq 1 ]; then
    echo "CPU使用率超过$threshold%!"
fi

定时监控CPU使用率

可以使用cron定时任务来定期执行监控脚本。

示例(每5分钟执行一次脚本):

# 编辑cron任务
crontab -e
# 添加以下行
/5     /path/to/cpu_monitor.sh

内存使用情况监控

获取内存使用情况

可以使用free命令来获取内存的使用情况。

示例脚本:

#!/bin/bash
# 获取内存使用情况
total_mem=$(free | grep Mem | awk '{print $2}')
used_mem=$(free | grep Mem | awk '{print $3}')
echo "总内存:$total_mem MB"
echo "已用内存:$used_mem MB"
# 计算内存使用率
mem_usage=$(echo "scale=2; $used_mem / $total_mem  100" | bc)
echo "内存使用率:$mem_usage%"
# 判断是否超过阈值
threshold=80
if [ $(echo "$mem_usage > $threshold" | bc) -eq 1 ]; then
    echo "内存使用率超过$threshold%!"
fi

定时监控内存使用情况

同样可以使用cron定时任务来定期执行监控脚本。

shell监控服务器

示例(每5分钟执行一次脚本):

# 编辑cron任务
crontab -e
# 添加以下行
/5     /path/to/mem_monitor.sh

磁盘空间监控

获取磁盘空间使用情况

可以使用df命令来获取磁盘空间的使用情况。

示例脚本:

#!/bin/bash
# 获取磁盘空间使用情况
disk_usage=$(df / | grep '/' | awk '{print $5}' | sed 's/%//')
echo "磁盘空间使用率:$disk_usage%"
# 判断是否超过阈值
threshold=90
if [ $disk_usage -gt $threshold ]; then
    echo "磁盘空间使用率超过$threshold%!"
fi

定时监控磁盘空间使用情况

使用cron定时任务来定期执行监控脚本。

示例(每小时执行一次脚本):

# 编辑cron任务
crontab -e
# 添加以下行
0     /path/to/disk_monitor.sh

网络连接监控

获取网络连接状态

可以使用netstat命令来获取网络连接的状态。

示例脚本:

shell监控服务器

#!/bin/bash
# 获取网络连接状态
connections=$(netstat -tn | grep tcp | wc -l)
echo "当前网络连接数:$connections"
# 判断是否超过阈值
threshold=1000
if [ $connections -gt $threshold ]; then
    echo "网络连接数超过$threshold!"
fi

定时监控网络连接状态

使用cron定时任务来定期执行监控脚本。

示例(每10分钟执行一次脚本):

# 编辑cron任务
crontab -e
# 添加以下行
/10     /path/to/net_monitor.sh

相关问题与解答

问题1:如何设置监控脚本的邮件通知?

解答:可以在脚本中添加邮件发送的命令,当监控指标超过阈值时发送邮件通知。

# 在脚本中添加以下行
echo "监控警告:CPU使用率超过$threshold%!" | mail -s "服务器监控警告" your_email@example.com

需要确保服务器上已经配置了邮件发送工具(如mailx)。

问题2:如何监控多个服务器?

解答:可以将监控脚本部署到一台管理服务器上,通过SSH远程执行监控脚本并收集结果。

#!/bin/bash
servers=("server1" "server2" "server3")
for server in "${servers[@]}"; do
    echo "监控服务器:$server"
    ssh $server '/path/to/monitor.sh'
done

需要确保管理服务器可以通过SSH无

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/59821.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年7月14日 01:30
下一篇 2025年7月14日 01:34

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN