当前位置: 首页 > article >正文

系统巡检脚本分享:守护服务器的“健康卫士”

        在日常的运维工作中,系统巡检是一项至关重要的任务。它可以帮助我们及时发现服务器的潜在问题,确保系统的稳定运行。今天,我想和大家分享一个实用的系统巡检脚本,它能够帮助我们快速、全面地检查服务器的健康状况。

一、为什么需要系统巡检脚本?

随着业务的不断发展,服务器的数量和复杂性也在不断增加。手动巡检不仅耗时耗力,而且容易遗漏一些关键问题。而一个自动化、标准化的巡检脚本可以:

  1. 节省时间:自动完成重复的检查任务,释放运维人员的时间去处理更复杂的问题。

  2. 提高准确性:避免人为失误,确保每次巡检都能覆盖所有关键指标。

  3. 快速发现问题:及时发现潜在的性能瓶颈、资源不足或配置错误,避免问题扩大化。

  4. 记录历史数据:方便后续分析和回溯,为优化和故障排查提供依据。

二、巡检脚本的功能

我们的系统巡检脚本主要涵盖以下几个方面:

1. 系统基本信息

  • 主机名、IP地址:确认服务器的身份。

  • 版本操作系统:确保系统环境符合要求。

  • 内核版本:检查内核是否有更新或潜在兼容性问题。

2. 硬件资源

  • CPU使用率:检查CPU是否过载。

  • 内存使用情况:查看内存使用率和剩余空间。

  • 磁盘空间:检查磁盘使用率,避免磁盘空间不足导致服务中断。

  • 网络连接:查看网络接口状态,确保网络连接正常。

3. 关键服务状态

  • Web服务(如Nginx、Apache):检查服务是否正常运行。

  • 数据库服务(如MySQL、PostgreSQL):确保数据库服务可用。

  • 消息队列服务(如RabbitMQ、RocketMQ):检查消息队列服务是否正常。

4. 安全检查

  • 防火墙状态:确认防火墙是否启用并配置正确。

  • 用户登录记录:检查是否有异常登录行为。

  • 系统日志:查看系统日志,发现潜在的安全问题。

5. 性能指标

  • 系统负载:查看系统负载情况,评估服务器的整体压力。

  • 进程监控:检查关键进程的资源占用情况,发现异常进程。

三、巡检脚本示例

以下是一个基于Linux系统的巡检脚本示例,使用Shell编写。你可以根据实际需求进行修改和扩展。

bash复制

#!/bin/bash

# 定义日志文件路径
LOG_FILE="/var/log/system_health_check.log"

# 写入日志函数
log() {
  echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> $LOG_FILE
}

# 系统基本信息
log "===== 系统基本信息 ====="
log "主机名: $(hostname)"
log "IP地址: $(hostname -I)"
log "操作系统版本: $(cat /etc/os-release | grep PRETTY_NAME | cut -d '=' -f2)"
log "内核版本: $(uname -r)"

# 硬件资源
log "===== 硬件资源 ====="
log "CPU使用率: $(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')%"
log "内存使用情况: $(free -m | grep Mem | awk '{print $3"MB/"$2"MB"}')"
log "磁盘空间: $(df -h | grep /dev/sda1 | awk '{print $5}')"
log "网络连接状态: $(ping -c 4 8.8.8.8 | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')"

# 关键服务状态
log "===== 关键服务状态 ====="
log "Nginx服务状态: $(systemctl is-active nginx)"
log "MySQL服务状态: $(systemctl is-active mysql)"
log "RabbitMQ服务状态: $(systemctl is-active rabbitmq-server)"

# 安全检查
log "===== 安全检查 ====="
log "防火墙状态: $(systemctl is-active firewalld)"
log "最近用户登录记录: $(last | head -5)"

# 性能指标
log "===== 性能指标 ====="
log "系统负载: $(uptime | awk -F'average: ' '{print $2}')"
log "关键进程监控: $(ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -10)"

log "===== 巡检完成 ====="

脚本使用说明

  1. 将上述脚本保存为system_health_check.sh

  2. 赋予脚本执行权限:chmod +x system_health_check.sh

  3. 运行脚本:./system_health_check.sh

  4. 检查日志文件:cat /var/log/system_health_check.log

四、定期执行巡检脚本

为了确保系统巡检的持续性和有效性,可以将巡检脚本加入定时任务(Cron Job),每天定时执行。

bash复制

# 编辑Cron任务
crontab -e

# 添加以下内容,每天凌晨2点执行巡检脚本
0 2 * * * /path/to/system_health_check.sh

五、总结

系统巡检脚本是运维工作中不可或缺的工具。通过自动化巡检,我们可以及时发现并解决问题,确保服务器的稳定运行。希望这篇博客能为你提供一些有用的思路和参考。如果你有任何改进意见或更复杂的巡检需求,欢迎在评论区留言,我们一起探讨!


http://www.kler.cn/a/546877.html

相关文章:

  • 【系统架构设计师】操作系统 - 进程管理 ② ( 进程状态 | 三态模型 | 五态模型 | 进程状态 划分依据 | PCB 程序控制块 的 组织方式 )
  • JavaScript 网页设计案例:经典与创新的完美结合
  • 【第5章:深度生成模型— 5.1 变分自编码器(VAE)与生成对抗网络(GAN)的基础理论】
  • STM32——HAL库开发笔记19(串口中断接收实验)(参考来源:b站铁头山羊)
  • 第3节:回归实战【新冠人数预测】
  • 高效开发!使用Chrome对MoonBit生成的Wasm进行性能分析!
  • AI大模型(如GPT、BERT等)可以通过自然语言处理(NLP)和机器学习技术,显著提升测试效率
  • FacePoke详细使用指南:如何利用开源AI工具优化照片人物表情
  • vue和Django快速创建项目
  • eval 内置函数用法
  • 时间盲注作业
  • (前端基础)HTML(一)
  • 【Docker 】虚悬镜像:深入理解与清理实践
  • 【工业安全】-CVE-2024-30891- Tenda AC18路由器 命令注入漏洞
  • 【前端框架与库】「React 全面解析」:从 JSX 语法到高阶组件,深度剖析前端开发中的核心概念与最佳实践
  • 算法与数据结构(存在重复元素)
  • uniapp开发h5部署到服务器
  • 红队视角出发的k8s敏感信息收集——服务发现与 DNS 探测
  • 6 Flink Table 和相关概念
  • android 的抓包工具