# server_ops **Repository Path**: heytun/server_ops ## Basic Information - **Project Name**: server_ops - **Description**: 服务器的运维:服务器硬盘使用率、内存使用率预警,企微通知 - **Primary Language**: Shell - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-07-04 - **Last Updated**: 2025-07-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # server_ops ## 项目介绍 这是一个服务器运维自动化工具集,主要提供以下功能: - 服务器资源监控和预警(CPU、内存、硬盘使用率) - 应用运行状态监控(Java进程、错误日志) - 自动化备份(MySQL数据库、Redis数据、MinIO对象存储、JAR包) - 日志和备份文件的自动清理 - 企业微信通知集成 ## 目录结构 ``` server_ops/ ├── README.md # 项目说明文档 ├── README.en.md # 英文说明文档 ├── 部署结构.png # 系统部署架构图 ├── 堡垒机/ # 堡垒机相关脚本 │ ├── 1_crontab.txt # 堡垒机定时任务配置 │ ├── backup_jar.sh # JAR包备份脚本 │ ├── delete_backup.sh # 备份文件清理脚本 │ ├── delete_log.sh # 日志清理脚本 │ ├── early_warn_error_log_6.sh # 错误日志监控脚本 │ ├── early_warn_java_6.sh # Java进程监控脚本 │ ├── early_warn_send.sh # 企业微信消息发送脚本 │ ├── early_warn_serve_6.sh # 服务器资源监控脚本 │ ├── mongo_redirect.sh # MongoDB端口转发脚本 │ ├── mysql_redirect.sh # MySQL端口转发脚本 │ └── redis_redirect.sh # Redis端口转发脚本 └── 应用服务器_14/ # 应用服务器相关脚本 ├── 1_crontab.txt # 应用服务器定时任务配置 ├── backup_database.sh # 数据库备份脚本 ├── backup_jar.sh # JAR包备份脚本 ├── backup_minio.sh # MinIO对象存储备份脚本 ├── backup_redis.sh # Redis数据备份脚本 ├── delete_backup_minio.sh # MinIO备份清理脚本 ├── delete_backup_sql.sh # 数据库备份清理脚本 ├── delete_log.sh # 日志清理脚本 ├── early_warn_error_log_14.sh # 错误日志监控脚本 ├── early_warn_java_14.sh # Java进程监控脚本 ├── early_warn_send.sh # 企业微信消息发送脚本 └── early_warn_serve_14.sh # 服务器资源监控脚本 ``` ### 堡垒机脚本说明 - `1_crontab.txt`: 配置定时任务,包括日志清理、系统监控和备份清理等 - `backup_jar.sh`: 备份应用JAR包,确保版本安全 - `delete_backup.sh`: 清理过期的备份文件,避免占用过多存储空间 - `delete_log.sh`: 清理过期的日志文件 - `early_warn_error_log_6.sh`: 监控系统错误日志,发现异常及时报警 - `early_warn_java_6.sh`: 监控Java进程状态,确保应用正常运行 - `early_warn_send.sh`: 通过企业微信发送预警消息 - `early_warn_serve_6.sh`: 监控服务器资源使用情况 - `*_redirect.sh`: 数据库端口转发脚本,用于安全访问各类数据库服务 ### 应用服务器脚本说明 - `1_crontab.txt`: 配置定时任务,包括备份、监控和清理任务 - `backup_database.sh`: 定时备份MySQL数据库,每天执行两次 - `backup_jar.sh`: 备份应用JAR包 - `backup_minio.sh`: 备份MinIO对象存储数据 - `backup_redis.sh`: 备份Redis数据 - `delete_backup_*.sh`: 清理过期的各类备份文件 - `delete_log.sh`: 清理过期的日志文件 - `early_warn_*.sh`: 各类监控预警脚本,包括错误日志、Java进程和服务器资源监控 ## Crontab定时任务说明 ### Crontab基础 Crontab用于配置Linux系统的定时任务,格式说明: ``` # 分钟 小时 日期 月份 星期 命令 # 0-59 0-23 1-31 1-12 0-6 # * * * * * 要执行的命令 ``` 特殊字符说明: - `*`: 代表任意时间 - `/`: 代表每隔多久执行一次,如 */5 表示每5个单位执行一次 - `-`: 代表范围,如 1-5 表示1到5 - `,`: 代表离散的时间点,如 1,3,5 表示在1,3,5这几个时间点 ### 堡垒机定时任务(1_crontab.txt) ```bash # 日志清理 - 每天凌晨4点执行 00 04 * * * sudo /data/bash/delete_log.sh >/dev/null 2>&1 # 系统预警检测 - 每小时执行一次 0 */1 * * * sudo /data/bash/early_warning.sh >/dev/null 2>&1 # 备份文件清理 - 每天凌晨5点执行 00 05 * * * sudo /data/bash/delete_backup.sh >/dev/null 2>&1 # 预警监控任务 # 服务器资源监控 - 每小时执行一次 0 */1 * * * sudo /data/bash/early_warn_serve_6.sh >>/data/logs/warn/crontab_warn.log 2>&1 # 错误日志监控 - 每分钟执行一次 */1 * * * * sudo /data/bash/early_warn_error_log_6.sh >>/data/logs/warn/crontab_warn.log 2>&1 # Java进程监控 - 每5分钟执行一次 */5 * * * * sudo /data/bash/early_warn_java_6.sh >>/data/logs/warn/crontab_warn.log 2>&1 ``` ### 应用服务器定时任务(1_crontab.txt) ```bash # 日志清理 - 每天凌晨4点执行 00 04 * * * sudo /data/bash/delete_log.sh >/dev/null 2>&1 # 备份清理任务 - 每天凌晨4点20分执行 20 04 * * * sudo /data/bash/delete_backup_sql.sh >/dev/null 2>&1 20 04 * * * sudo /data/bash/delete_backup_minio.sh >/dev/null 2>&1 # 数据备份任务 # MySQL数据库备份 - 每天1点30分和12点29分执行两次 30 01 * * * sudo /data/bash/backup_database.sh >/dev/null 2>&1 29 12 * * * sudo /data/bash/backup_database.sh >/dev/null 2>&1 # MinIO对象存储备份 - 每天凌晨3点执行 00 03 * * * sudo /data/bash/backup_minio.sh >/dev/null 2>&1 # Redis数据备份 - 每天凌晨3点执行 00 03 * * * sudo /data/bash/backup_redis.sh >/dev/null 2>&1 # 预警监控任务 # 服务器资源监控 - 每小时执行一次 0 */1 * * * sudo /data/bash/early_warn_serve_14.sh >>/data/logs/warn/crontab_warn.log 2>&1 # 错误日志监控 - 每分钟执行一次 */1 * * * * sudo /data/bash/early_warn_error_log_14.sh >>/data/logs/warn/crontab_warn.log 2>&1 # Java进程监控 - 每5分钟执行一次 */5 * * * * sudo /data/bash/early_warn_java_14.sh >>/data/logs/warn/crontab_warn.log 2>&1 ``` ### Crontab管理命令 ```bash # 查看当前用户的定时任务 crontab -l # 编辑定时任务 crontab -e # 导入定时任务配置 crontab /path/to/crontab.txt # 删除所有定时任务 crontab -r ``` ### 注意事项 1. 所有脚本路径使用绝对路径(/data/bash/) 2. 错误输出重定向说明: - `>/dev/null 2>&1`: 丢弃所有输出 - `>>/data/logs/warn/crontab_warn.log 2>&1`: 将输出追加到日志文件 3. 确保脚本有执行权限:`chmod +x /data/bash/*.sh` 4. 建议使用sudo执行需要特权的命令 5. 定时任务的时间建议错开,避免同时执行多个任务 6. 定期检查crontab日志确保任务正常执行:`/var/log/cron` ## 端口转发说明 ### Ncat端口转发配置 堡垒机上使用ncat工具进行数据库端口转发,实现安全访问内网数据库服务。 #### 安装ncat ```bash # CentOS/RHEL yum install -y nmap-ncat # Ubuntu/Debian apt-get install -y ncat ``` #### 端口转发脚本说明 堡垒机提供了三个数据库端口转发脚本: - `mysql_redirect.sh`: MySQL数据库端口转发 - `redis_redirect.sh`: Redis数据库端口转发 - `mongo_redirect.sh`: MongoDB数据库端口转发 #### 转发配置示例 1. MySQL端口转发(mysql_redirect.sh) ```bash # 将内网MySQL 3306端口转发到堡垒机的13306端口 ncat -l 0.0.0.0 13306 -c "ncat 内网IP 3306" & ``` 2. Redis端口转发(redis_redirect.sh) ```bash # 将内网Redis 6379端口转发到堡垒机的16379端口 ncat -l 0.0.0.0 16379 -c "ncat 内网IP 6379" & ``` 3. MongoDB端口转发(mongo_redirect.sh) ```bash # 将内网MongoDB 27017端口转发到堡垒机的27017端口 ncat -l 0.0.0.0 27017 -c "ncat 内网IP 27017" & ``` #### 使用说明 1. 启动转发服务 ```bash # 启动MySQL转发 sudo /data/bash/mysql_redirect.sh # 启动Redis转发 sudo /data/bash/redis_redirect.sh # 启动MongoDB转发 sudo /data/bash/mongo_redirect.sh ``` 2. 连接示例 ```bash # MySQL连接(从外网访问) mysql -h 堡垒机IP -P 13306 -u用户名 -p密码 # Redis连接(从外网访问) redis-cli -h 堡垒机IP -p 16379 # MongoDB连接(从外网访问) mongo 堡垒机IP:27017 ``` #### 注意事项 1. 确保堡垒机防火墙允许对应端口的访问 2. 定期检查端口转发服务是否正常运行 3. 建议配置监控脚本定期检查端口转发状态 4. 为安全起见,建议限制允许访问的IP地址 5. 转发端口的选择要避免与系统其他服务冲突 ## 系统架构 系统分为两个主要部分: 1. 堡垒机(跳板机) - 系统监控和预警 - 日志清理 - 备份文件管理 - 数据库端口转发(MySQL、Redis、MongoDB) 2. 应用服务器 - 应用监控和预警 - 数据自动备份(MySQL、Redis、MinIO) - 日志管理 - JAR包备份 ## 功能模块 ### 监控预警 - 服务器资源监控(CPU、内存、硬盘) - Java进程监控 - 错误日志监控 - 企业微信通知推送 ### 自动备份 - MySQL数据库备份(每天01:30和12:29) - Redis数据备份(每天03:00) - MinIO对象存储备份(每天03:00) - JAR包备份 ### 自动清理 - 日志文件清理(每天04:00) - SQL备份清理(每天04:20) - MinIO备份清理(每天04:20) ## 安装部署 ### 目录创建 在堡垒机和应用服务器上都需要创建以下目录: ```bash # 脚本目录 mkdir -p /data/bash # 日志目录 mkdir -p /data/logs/warn mkdir -p /data/logs/backup mkdir -p /data/logs/error # 备份目录 mkdir -p /data/backup/mysql mkdir -p /data/backup/redis mkdir -p /data/backup/minio mkdir -p /data/backup/jar # 设置目录权限 chmod -R 755 /data/bash chmod -R 755 /data/logs chmod -R 755 /data/backup ``` ### 堡垒机部署 1. 创建必要目录(如上所示) 2. 复制`堡垒机`目录下的所有脚本到`/data/bash/` 3. 设置脚本执行权限:`chmod +x /data/bash/*.sh` 4. 导入定时任务:`crontab 1_crontab.txt` ### 应用服务器部署 1. 创建必要目录(如上所示) 2. 复制`应用服务器_14`目录下的所有脚本到`/data/bash/` 3. 设置脚本执行权限:`chmod +x /data/bash/*.sh` 4. 导入定时任务:`crontab 1_crontab.txt` ### 目录说明 - `/data/bash/`: 存放所有运维脚本 - `/data/logs/`: 日志目录 - `warn/`: 存放预警相关日志 - `backup/`: 存放备份操作日志 - `error/`: 存放错误日志 - `/data/backup/`: 备份文件目录 - `mysql/`: MySQL数据库备份 - `redis/`: Redis数据备份 - `minio/`: MinIO对象存储备份 - `jar/`: 应用JAR包备份 ### 目录权限要求 1. 脚本目录权限: ```bash chown -R root:root /data/bash chmod -R 755 /data/bash ``` 2. 日志目录权限: ```bash chown -R root:root /data/logs chmod -R 755 /data/logs chmod 777 /data/logs/warn ``` 3. 备份目录权限: ```bash chown -R root:root /data/backup chmod -R 755 /data/backup ``` ## 配置说明 ### 预警配置 - 修改`early_warn_send.sh`中的企业微信配置 - 调整监控阈值: - 服务器资源预警阈值在对应的`early_warn_serve_*.sh`中配置 - Java进程监控在`early_warn_java_*.sh`中配置 - 错误日志监控在`early_warn_error_log_*.sh`中配置 ### 备份配置 - 数据库备份:配置`backup_database.sh`中的数据库连接信息 - Redis备份:配置`backup_redis.sh`中的Redis连接信息 - MinIO备份:配置`backup_minio.sh`中的MinIO访问信息 ## 日志位置 - 预警日志:`/data/logs/warn/crontab_warn.log` - 备份日志:各备份脚本的执行日志默认输出到`/dev/null` ## 注意事项 1. 所有脚本默认安装路径为`/data/bash/` 2. 确保脚本具有执行权限 3. 备份前请确保有足够的磁盘空间 4. 定期检查预警日志确保监控正常运行 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request