Docker 实战:构建永不宕机的服务器监控探针(ServerStatus)

前言

服务器运维中,实时监控多台主机的 CPU、内存、磁盘、网络状态,是保障业务稳定运行的核心需求。传统监控程序部署复杂、宕机恢复慢、环境依赖繁琐。本文基于Docker 容器化技术 ,搭建ss-server + ss-agent 分布式监控探针,实现服务端容器化部署、客户端一键接入、秒级故障恢复、数据不丢失,适配 CentOS、银河麒麟等 Linux 系统,可直接复刻实操。

一、监控探针整体架构

本监控系统采用C/S(服务端 - 客户端)架构

  1. ss‑server 服务端:部署在中心服务器,提供 Web 可视化界面,接收所有客户端上报的监控数据;
  2. ss‑agent 客户端:部署在每台被监控服务器,采集本机硬件、系统指标,主动 push 上报至服务端;
  3. 数据流向:所有 agent 节点主动推送监控数据至 ss‑server,服务端统一汇总展示。

架构图如下:

二、环境准备

1. 环境信息

  • 操作系统:CentOS 7.9(银河麒麟 V10 SP3 可兼容部署)
  • 探针服务端(ss‑server)IP:192.168.38.151
  • 探针客户端(ss‑agent)IP:192.168.38.146(多台节点可批量部署)

docker监控探针链接: https://pan.baidu.com/s/1UCMIB2TOJKMdqcASUJ-Oig?pwd=2025

2. 前置依赖

服务端需提前安装 Docker,客户端需安装 Python3 运行环境。

三、Docker 部署探针服务端(ss‑server)

1. 解压服务端程序

创建部署目录,解压服务端配置文件:

复制代码
# 创建数据目录
mkdir /data/ss -p
# 解压程序包
cd /data/day2
tar zxvf ss-server.tar.gz -C /data/ss

2. 启动 Docker 容器部署服务端

使用华为云国内镜像,后台启动容器,挂载配置文件、数据目录,映射端口:

复制代码
cd /data/ss/ss-server
docker run -itd --name sss --restart unless-stopped \
-v /data/ss/ss-server/config.json:/ServerStatus/server/config.json \
-v /data/ss/ss-server/json:/usr/share/nginx/html/json \
-p 35601:35601 -p 8081:80 \
swr.cn-north-1.myhuaweicloud.com/iivey/ss-server:v1.0
  • --restart unless‑stopped:容器异常自动重启,保障服务持续运行;
  • 端口映射:8081为 Web 可视化端口,35601为数据上报端口;
  • 数据持久化:挂载配置与数据目录,容器删除重建后监控数据不丢失

3. Web 可视化界面访问

浏览器访问:

复制代码
http://服务端IP:8081

默认无监控节点,需通过脚本添加被监控主机。

4. 添加被监控主机节点

通过ss‑server.py脚本实现节点查看、添加、删除、更新

复制代码
# 安装Python3依赖
yum install curl wget python3-pip python3 -y
pip3 install requests

# 执行节点管理脚本
cd /data/ss/ss-server
python3 ss-server.py

脚本操作菜单:

复制代码
=== 监控节点管理工具 ===
>>>请输入操作标号:1.查看, 2.添加, 3.删除, 4.更新, 0.退出
  1. 选择2.添加,输入被监控主机 IP;
  2. 脚本自动生成客户端安装命令(包含服务端 IP、随机用户名、密钥);
  3. 复制生成的一键安装命令,在被监控服务器执行。

示例生成命令:

复制代码
chmod +x setup-agent.sh && sudo ./setup-agent.sh 192.168.38.151 068390f0bd56428c97633644a7c8c9c8 7Zw3tFRbcnwBNqr

四、部署探针客户端(ss‑agent)

1. 解压客户端程序

ss‑agent.tar.gz上传至被监控服务器,解压:

复制代码
tar zxvf ss-agent.tar.gz
cd ss-agent
ls
# 包含:client-linux.py、setup-agent.sh、sss-agent.service

2. 一键部署客户端

执行服务端生成的一键安装脚本,三个参数依次为:服务端 IP、用户名、密钥,需与服务端严格一致:

复制代码
./setup-agent.sh 192.168.38.151 068390f0bd56428c97633644a7c8c9c8 7Zw3tFRbcnwBNqr

脚本自动:

  • 配置客户端上报地址;
  • 注册系统守护进程,开机自启;
  • 实时采集系统指标,主动推送至服务端。

3. 多节点批量部署

多台服务器监控,仅需重复上传解压→执行一键脚本即可,统一接入服务端 Web 面板。

五、Docker 实现监控探针「永不宕机」核心实战

Docker 的容器隔离、数据持久化、秒级重建特性,可实现监控系统故障后秒级恢复,数据不丢失。

1. 模拟监控系统彻底宕机

进入容器,恶意删除系统核心目录,模拟软件故障:

复制代码
# 进入容器
docker exec -it 6848260c153a bash
# 删除系统核心目录,模拟彻底故障
rm -rf /usr
# 执行命令报错,容器系统完全损坏
ls: error while loading shared libraries: libpcre2-8.so.0: cannot open shared object file: No such file or directory

此时 Web 监控页面无法访问,服务完全失效。

2. 秒级恢复监控服务

仅需删除损坏容器,重新执行部署命令,几秒即可恢复,历史监控数据完整保留

复制代码
# 删除故障容器
docker rm -f 6848260c153a

# 重新创建容器,挂载原有配置与数据
docker run -itd --name sss --restart unless-stopped \
-v /data/ss/ss-server/config.json:/ServerStatus/server/config.json \
-v /data/ss/ss-server/json:/usr/share/nginx/html/json \
-p 35601:35601 -p 8081:80 \
swr.cn-north-1.myhuaweicloud.com/iivey/ss-server:v1.0

访问http://IP:8081,监控页面正常打开,历史监控数据、节点配置全部保留。

六、核心优势总结

  1. 容器化部署:一键启动,环境隔离,无依赖冲突;
  2. 永不宕机:异常自动重启,故障秒级重建,数据持久化不丢失;
  3. 分布式架构:多台服务器批量接入,统一可视化管理;
  4. 适配国产系统:CentOS、银河麒麟 V10 全兼容,企业运维场景通用;
  5. 轻量化:客户端资源占用极低,不影响业务服务器性能。
相关推荐
fofantasy1 小时前
NSK LH25FL 升级至 NH25EM 技术规格指南
服务器·网络·数据库·经验分享·规格说明书
CodeStats2 小时前
【虚拟机】 从 CPU 指令到虚拟机隔离:虚拟机就是一个“模拟了完整硬件的普通进程”
java·docker
facaixxx20242 小时前
雨云服务器区域选择终极指南:地域速度、节点带宽、延迟及防御说明
服务器·云服务器·雨云服务器·云服务器区域·云服务器地域·云服务器节点
小坏蛋至尊宝2 小时前
如何优化文件传输的性能?
运维·服务器
小羽网安2 小时前
2026年服务器安全防护实战:从被DDoS到完整防护体系搭建
服务器·安全·ddos
爱学习的程序媛2 小时前
DevOps 深度解析:从文化理念到落地实践
运维·devops
snow@li2 小时前
服务器:配置中心 Nacos / Apollo 详解
运维·服务器
SEO_juper2 小时前
不同国家服务器、域名选择,提升本地谷歌抓取优先级
运维·服务器·seo·外贸·geo·独立站·跨境电商独立站
DeboPXK2 小时前
NSK VH25EM 高防尘法兰型导轨技术手册
服务器·网络·数据库·经验分享·规格说明书
浮云中的神马-潘帅2 小时前
魔兽世界自动化打地鼠方案
运维·自动化