当前位置:首页 > 云服务器 > 正文

shell监控服务器

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

Shell监控服务器

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

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定时任务来定期执行监控脚本。

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

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

磁盘空间监控

获取磁盘空间使用情况

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

shell监控服务器 第1张

示例脚本:

#!/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监控服务器 第2张

#!/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无

shell监控服务器 第3张

0