Bash 语言 健康监测自动化技巧

Bash阿木 发布于 3 天前 4 次阅读


Bash 语言健康监测自动化技巧

在Linux系统中,Bash(Bourne Again SHell)是一种常用的命令行解释器,它提供了强大的脚本编写能力。在系统管理员的工作中,定期对系统进行健康监测是确保系统稳定运行的重要环节。本文将围绕Bash语言,探讨如何实现健康监测的自动化技巧。

1. 监测系统资源

1.1 监测CPU使用率

bash
!/bin/bash

获取CPU使用率
cpu_usage=$(top -bn1 | grep "Cpu(s)" | sed "s/., ([0-9.])% id./1/" | awk '{print 100 - $1}')

输出CPU使用率
echo "CPU Usage: $cpu_usage%"

设置阈值
threshold=80

判断是否超过阈值
if (( $(echo "$cpu_usage > $threshold" | bc -l) )); then
echo "Warning: CPU usage is above threshold!"
fi

1.2 监测内存使用率

bash
!/bin/bash

获取内存使用率
memory_usage=$(free | grep Mem | awk '{print $3/$2 100.0}')

输出内存使用率
echo "Memory Usage: $memory_usage%"

设置阈值
threshold=80

判断是否超过阈值
if (( $(echo "$memory_usage > $threshold" | bc -l) )); then
echo "Warning: Memory usage is above threshold!"
fi

1.3 监测磁盘使用率

bash
!/bin/bash

获取磁盘使用率
disk_usage=$(df -h | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{print $5}' | awk -F'%' '{print $1}')

输出磁盘使用率
echo "Disk Usage: $disk_usage%"

设置阈值
threshold=80

判断是否超过阈值
if (( $(echo "$disk_usage > $threshold" | bc -l) )); then
echo "Warning: Disk usage is above threshold!"
fi

2. 监测服务状态

2.1 监测Apache服务状态

bash
!/bin/bash

检查Apache服务状态
status=$(systemctl is-active apache2)

判断服务状态
if [ "$status" != "active" ]; then
echo "Warning: Apache service is not running!"
可以添加重启服务的命令
systemctl start apache2
else
echo "Apache service is running."
fi

2.2 监测MySQL服务状态

bash
!/bin/bash

检查MySQL服务状态
status=$(systemctl is-active mysql)

判断服务状态
if [ "$status" != "active" ]; then
echo "Warning: MySQL service is not running!"
可以添加重启服务的命令
systemctl start mysql
else
echo "MySQL service is running."
fi

3. 监测网络状态

3.1 监测网络连接数

bash
!/bin/bash

获取当前活跃的连接数
connections=$(netstat -nta | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -n 10)

输出连接数
echo "Top 10 Connections:"
echo "$connections"

3.2 监测网络流量

bash
!/bin/bash

获取网络流量
rx_bytes=$(cat /sys/class/net/eth0/statistics/rx_bytes)
tx_bytes=$(cat /sys/class/net/eth0/statistics/tx_bytes)

输出网络流量
echo "Network Traffic:"
echo "Received Bytes: $rx_bytes"
echo "Transmitted Bytes: $tx_bytes"

4. 日志监控

4.1 监控系统日志

bash
!/bin/bash

检查系统日志文件大小
log_file="/var/log/syslog"
max_size=10485760 10MB

获取日志文件大小
log_size=$(du -b "$log_file" | cut -f1)

判断日志文件大小是否超过阈值
if (( $(echo "$log_size > $max_size" | bc -l) )); then
echo "Warning: Log file size is above threshold!"
可以添加清理日志文件的命令
logrotate /var/log/syslog
else
echo "Log file size is within limit."
fi

4.2 监控自定义日志

bash
!/bin/bash

检查自定义日志文件大小
log_file="/var/log/myapp.log"
max_size=10485760 10MB

获取日志文件大小
log_size=$(du -b "$log_file" | cut -f1)

判断日志文件大小是否超过阈值
if (( $(echo "$log_size > $max_size" | bc -l) )); then
echo "Warning: Custom log file size is above threshold!"
可以添加清理日志文件的命令
logrotate /var/log/myapp.log
else
echo "Custom log file size is within limit."
fi

5. 总结

本文介绍了使用Bash语言实现系统健康监测的自动化技巧。通过编写简单的脚本,我们可以实现对CPU、内存、磁盘、服务状态、网络状态和日志的监控。这些技巧可以帮助系统管理员及时发现并解决问题,确保系统稳定运行。在实际应用中,可以根据具体需求对脚本进行扩展和优化。