HCRM博客

CentOS监控脚本,如何编写和优化,确保系统稳定运行?

CentOS监控脚本编写指南

随着服务器数量的增加,对服务器进行实时监控变得尤为重要,CentOS作为一款流行的Linux发行版,拥有丰富的监控工具和脚本,本文将介绍如何编写一个基本的CentOS监控脚本,以实现对服务器关键性能指标的监控。

CentOS监控脚本,如何编写和优化,确保系统稳定运行?-图1

监控脚本需求分析

在编写监控脚本之前,我们需要明确以下需求:

  1. 监控指标:CPU使用率、内存使用率、磁盘使用率、网络流量等。
  2. 监控频率:根据实际情况设定,如每5分钟、每10分钟等。
  3. 报警机制:当监控指标超过预设阈值时,发送报警信息。
  4. 日志记录:记录监控数据,便于后续分析。

监控脚本编写

以下是一个简单的CentOS监控脚本示例:

#!/bin/bash
# 定义监控指标阈值
CPU_THRESHOLD=80
MEM_THRESHOLD=80
DISK_THRESHOLD=80
NET_THRESHOLD=1000
# 获取CPU使用率
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
# 获取内存使用率
MEM_USAGE=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
# 获取磁盘使用率
DISK_USAGE=$(df -h | grep "/dev/sda1" | awk '{print $5}')
# 获取网络流量
NET_IN=$(cat /proc/net/dev | grep eth0 | awk '{print $2}')
NET_OUT=$(cat /proc/net/dev | grep eth0 | awk '{print $10}')
# 判断监控指标是否超过阈值,并记录日志
if [ $(echo "$CPU_USAGE > $CPU_THRESHOLD" | bc) -eq 1 ]; then
    echo "$(date) - CPU usage is high: $CPU_USAGE%" >> /var/log/cpu_usage.log
fi
if [ $(echo "$MEM_USAGE > $MEM_THRESHOLD" | bc) -eq 1 ]; then
    echo "$(date) - Memory usage is high: $MEM_USAGE%" >> /var/log/mem_usage.log
fi
if [ $(echo "$DISK_USAGE > $DISK_THRESHOLD" | bc) -eq 1 ]; then
    echo "$(date) - Disk usage is high: $DISK_USAGE" >> /var/log/disk_usage.log
fi
if [ $(echo "$NET_IN > $NET_THRESHOLD" | bc) -eq 1 ]; then
    echo "$(date) - Network input is high: $NET_IN" >> /var/log/net_in.log
fi
if [ $(echo "$NET_OUT > $NET_THRESHOLD" | bc) -eq 1 ]; then
    echo "$(date) - Network output is high: $NET_OUT" >> /var/log/net_out.log
fi
# 发送报警信息
if [ $(echo "$CPU_USAGE > $CPU_THRESHOLD" | bc) -eq 1 ]; then
    echo "CPU usage is high: $CPU_USAGE%" | mail -s "CPU Alert" admin@example.com
fi
if [ $(echo "$MEM_USAGE > $MEM_THRESHOLD" | bc) -eq 1 ]; then
    echo "Memory usage is high: $MEM_USAGE%" | mail -s "Memory Alert" admin@example.com
fi
if [ $(echo "$DISK_USAGE > $DISK_THRESHOLD" | bc) -eq 1 ]; then
    echo "Disk usage is high: $DISK_USAGE" | mail -s "Disk Alert" admin@example.com
fi
if [ $(echo "$NET_IN > $NET_THRESHOLD" | bc) -eq 1 ]; then
    echo "Network input is high: $NET_IN" | mail -s "Network Alert" admin@example.com
fi
if [ $(echo "$NET_OUT > $NET_THRESHOLD" | bc) -eq 1 ]; then
    echo "Network output is high: $NET_OUT" | mail -s "Network Alert" admin@example.com
fi

脚本部署与定时任务

CentOS监控脚本,如何编写和优化,确保系统稳定运行?-图2

  1. 将脚本保存为monitor.sh,并赋予执行权限:

    chmod +x monitor.sh
  2. 创建定时任务,实现定时执行监控脚本:

    crontab -e

    添加以下行:

    */5 * * * * /path/to/monitor.sh

    其中/path/to/monitor.sh为监控脚本的路径。

FAQs

CentOS监控脚本,如何编写和优化,确保系统稳定运行?-图3

  1. 问题:如何修改监控指标阈值?解答:在脚本中,监控指标阈值分别对应CPU_THRESHOLDMEM_THRESHOLDDISK_THRESHOLDNET_THRESHOLD,您可以根据实际情况修改这些变量的值。

  2. 问题:如何修改报警邮箱地址?解答:在脚本中,报警信息通过mail命令发送,您需要修改mail -s "CPU Alert" admin@example.com中的admin@example.com为您的邮箱地址,确保您的邮件服务器配置正确,以便接收报警信息。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/85053.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~