欢迎光临
我们一直在努力

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

前言

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

一、监控探针整体架构

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

  • ss‑server 服务端:部署在中心服务器,提供 Web 可视化界面,接收所有客户端上报的监控数据;
  • ss‑agent 客户端:部署在每台被监控服务器,采集本机硬件、系统指标,主动 push 上报至服务端;
  • 数据流向:所有 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.退出

  • 选择2.添加,输入被监控主机 IP;
  • 脚本自动生成客户端安装命令(包含服务端 IP、随机用户名、密钥);
  • 复制生成的一键安装命令,在被监控服务器执行。
  • 示例生成命令:

    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,监控页面正常打开,历史监控数据、节点配置全部保留。

    六、核心优势总结

  • 容器化部署:一键启动,环境隔离,无依赖冲突;
  • 永不宕机:异常自动重启,故障秒级重建,数据持久化不丢失;
  • 分布式架构:多台服务器批量接入,统一可视化管理;
  • 适配国产系统:CentOS、银河麒麟 V10 全兼容,企业运维场景通用;
  • 轻量化:客户端资源占用极低,不影响业务服务器性能。
  • 赞(0)
    未经允许不得转载:171主机测评 » Docker 实战:构建永不宕机的服务器监控探针(ServerStatus)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址