Linux运维处理及监控脚本

本文介绍三种运维自动化场景:一是批量删除特定前缀的临时文件;二是监控磁盘空间并在使用率超过90%时发送警告邮件;三是监控网卡流量变化,帮助运维人员实时了解服务器状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分享场景一:运维过程通过脚本批量删除文件。

运维时遇到在tmp文件目录下存放大最的 option__*的临时文件,由于要在晚上进行自动清理,只能考虑采用脚本操作方法,脚本设计考虑到执行效率,每次执行时负载等影响因素。综合各方面的因素把脚本设计如下:

#!/bin/sh 

cd /tmp  

    time=’date – d “ 2 day ago” “+%b%d”

 ls –l | grep “option” | grep “$ time” | awk ‘ { print $NF }’ | xargs rm –rf

 

通过自动操作以上脚本把tmp目录下 option开头的临时文件进行自动清理。

 

分享场景二:运维监控主机的磁盘空间,当使用空间超过90%就通过发mail来发警告给运维人员

 

#!/bin/bash

#monitor available disk space

SPACE='df | sed -n '/ \ / $ / p' | gawk '{print $5}' | sed's/%//'

if [ $SPACE -ge 90 ]

then

administrator@centos.com

fi

该脚本通过对$SPACE -ge 90分析判断目前硬盘空间是否超过90%,在超过阀值时,向运维管理员邮箱administrator@centos.com 发邮件并告知。

 

分享场景三:监控主机网卡流量

 

日常运维时如不及时掌握主机的网卡流量,当遇到主机网卡流量过大,会造成服务器网卡故障及很多不可预估问题发生 ,通过以下脚本可以有效率监控服务器网卡的流量情况,并通过脚本speedrx_after-speedrx_before查出speedrx_result是瞬时流量,及speedtx_after-speedtx_before查出speedtx_result是超出流量。

#!/bin/bash

#network

#Mike.Xu

while : ; do

speedtime='date +%m"-"%d" "%k":"%M'

speedday='date +%m"-"%d'

speedrx_before='ifconfig eth0|sed -n "8"p|awk '{print $2}'|cut -c7-'

speedtx_before='ifconfig eth0|sed -n "8"p|awk '{print $6}'|cut -c7-'

sleep 2

speedrx_after='ifconfig eth0|sed -n "8"p|awk '{print $2}'|cut -c7-'

speedtx_after='ifconfig eth0|sed -n "8"p|awk '{print $6}'|cut -c7-'

speedrx_result=$[(speedrx_after-speedrx_before)/256]

speedtx_result=$[(speedtx_after-speedtx_before)/256]

echo"$speedday$speedtime Now_In_Speed: "$speedrx_result"kbps Now_OUt_Speed: "$speedtx_result"kbps"

sleep 2

done





### 编写Linux系统监控运维脚本的指南 #### 1. 系统资源监控 在编写监控脚本时,可以利用`top`、`htop`、`free`、`vmstat`等工具来获取CPU使用率、内存占用等信息。例如,可以通过以下命令组合来获取当前系统的空闲CPU百分比: ```bash top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}' ``` 此命令通过`top`获取单次快照数据,并用`awk`处理输出以计算用户时间和系统时间的总和,从而得到CPU使用情况。 #### 2. 磁盘空间监控 对于磁盘空间的监控,可以使用`df`命令结合`awk`来检查特定分区的空间使用情况。下面是一个示例脚本片段,它会打印出根目录下的可用空间: ```bash df -h / | awk 'NR==2 {print $4}' ``` 这段代码执行了`df -h`命令并过滤出第二行(即根目录的信息),然后打印出第四列,也就是剩余空间大小。 #### 3. 日志文件分析 日志文件是故障排查的重要依据。使用`tail`、`grep`以及`awk`等工具可以帮助快速定位问题。比如,要查找最近10分钟内出现在系统日志中的错误消息,可以这样操作: ```bash journalctl --since "10 minutes ago" | grep -i error ``` 这里使用了`journalctl`来查看系统日志,并且只显示过去十分钟内的条目,再通过`grep`过滤出包含“error”的行。 #### 4. 自动化巡检与警报机制 创建一个定时任务(如cron job)来定期运行上述监控脚本是非常有用的。此外,还可以将这些脚本集成到更复杂的自动化框架中,当检测到异常条件时发送电子邮件或触发其他通知方式。 #### 5. 安全性考虑 确保所有编写的脚本都具有适当的安全权限设置,避免不必要的暴露敏感信息。同时,在脚本处理密码或其他机密数据时应格外小心,最好采用加密存储或者不直接硬编码于脚本之中。 #### 6. 脚本优化技巧 - 使用函数封装重复使用的代码块。 - 利用数组和循环结构简化复杂逻辑。 - 对输入参数进行验证,保证程序健壮性。 - 添加详细的注释说明每个部分的功能及预期效果。 #### 7. 示例:综合监控脚本 下面提供了一个简单的综合监控脚本示例,它可以报告CPU利用率、内存使用量以及根分区的剩余空间: ```bash #!/bin/bash echo "System Monitoring Script" echo "------------------------" # CPU Usage cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}') echo "CPU Usage: ${cpu_usage}%" # Memory Usage mem_info=$(free -m | grep Mem) mem_total=$(echo $mem_info | awk '{print $2}') mem_used=$(echo $mem_info | awk '{print $3}') mem_percent=$((mem_used * 100 / mem_total)) echo "Memory Usage: ${mem_used}MB/${mem_total}MB ($mem_percent%)" # Disk Space on Root Partition root_disk_free=$(df -h / | awk 'NR==2 {print $4}') echo "Free Disk Space on / : $root_disk_free" ``` 以上内容提供了从基础到进阶层面关于如何编写有效的Linux系统监控运维脚本的知识点和技术建议。希望这能帮助您开始构建自己的监控解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值