PHP Server Monitor 介绍与选型指南

PHP Server Monitor 自托管可用性监控全解:定位、架构、功能特性与快速上手,并与 Uptime Kuma 93k、Gatus 12k 星做量化选型对比,版本与社区数据 shields.io 实查(2026-11-01),功能结论来自真实部署实测。

PHP Server Monitor自托管监控PHP 应用2026/11/01

PHP Server Monitor 介绍与选型指南

目标:用一篇文章回答"PHP Server Monitor 是什么、能做什么、适不适合你"——给出软件定位、核心架构、功能特性、快速上手路径,并与 Uptime Kuma、Gatus 两个主流同类做量化对比。版本与社区数据均来自公开渠道联网实查(查询日期 2026-11-01),本地功能结论来自同环境真实部署实测(部署与使用细节见站内系列篇)。

一、环境信息(数据来源与时效声明)

本文数据分两类,各自来源与查询日期如下:

数据类型来源查询日期
版本/发布线shields.io GitHub release badge(release: v3.5.2)、releases.atom、CHANGELOG.rst2026-11-01
社区规模(Stars)shields.io GitHub stars badge2026-11-01
架构与功能细节v3.5.2 官方源码包(github.com/phpservermon/phpservermon/archive/v3.5.2.tar.gz,本地解包核对)2026-11-01
部署/配置/CLI 实测结论本站真实服务器实测(Ubuntu 26.04.1 LTS,Docker Compose)2026-11-01
同类对比数据shields.io badge(Uptime Kuma / Gatus 的 Stars、最新版本、主语言)2026-11-01

二、软件概述

**PHP Server Monitor(下称 PSM)**是一个自托管的网站/服务器可用性监控(uptime monitoring)Web 应用:你把要盯的目标(网站 URL、TCP 端口、主机 IP)录进去,它按计划周期检测,掉线/恢复时通过邮件、短信、Pushover、Telegram、Jabber 通知你,并提供状态页、响应时间曲线与可用率日志。

  • 仓库:github.com/phpservermon/phpservermon,GPL v3 开源(源码文件头许可声明);
  • 技术栈:PHP 7.4 + MySQL/MariaDB,Web 层基于 Twig 模板与 Symfony 组件(v3.5.2 源码 composer.lock 实证),HTTP 检测用 cURL;
  • 版本线:3.x 线最新稳定版 v3.5.2(shields.io release badge 实证 release: v3.5.2;releases.atom 与 CHANGELOG.rst 交叉确认其发布于 2020-08-12;GitHub 发布页 2024-11-05 的时间戳是 GPG 签名时间而非发布时间,勿混淆);
  • 社区规模:GitHub Stars 约 2.2k(shields.io,2026-11-01);
  • 上游节奏:v3.5.2 之后官方未再发布新版(releases 页最新仍为 v3.5.2,2026-11-01 实查),项目处于低维护状态——这是选型时必须正视的一点(见六、七)。

三、核心架构

                    ┌────────────────────────────┐
  浏览器 ──HTTP──▶ │  Web 层(PHP + Apache/Nginx) │◀── 安装向导/Config/Servers/Users
                    │  Twig 模板 + Symfony 组件    │
                    └──────────┬─────────────────┘
                               │ PDO
                    ┌──────────▼──────────┐
                    │  MySQL / MariaDB     │  9 张表:servers / servers_uptime /
                    │  (全部业务数据)      │  servers_history / users / config / log …
                    └──────────▲──────────┘
                               │ 读写
              ┌────────────────┴────────────────┐
              │   检测引擎 cron/status.cron.php  │  CLI 或 Web(cron) 触发
              │   website=curl  service=fsockopen│
              │   ping=系统 ping 命令             │
              └────────────────┬────────────────┘
                               │ 状态变化
                    ┌──────────▼──────────┐
                    │ 通知器 StatusNotifier │→ Email / SMS(22 网关) / Pushover / Telegram / Jabber
                    └─────────────────────┘

要点(全部来自 v3.5.2 源码与本地部署实证):

  • 单机单实例架构:检测引擎与 Web 共用一个库,没有分布式探测节点概念;
  • 检测引擎是 CLI 脚本(cron/status.cron.php),由容器内置循环 / 宿主 crontab / webcron 驱动,带数据库防重入锁(psm_config 表);
  • 每轮检测逐项串行执行,结果写 psm_servers 并归档历史(psm_servers_uptime,实测每轮每项各写一行)。

四、功能特性

以下每条都在本站 3.5.2 真实部署上验证过(操作细节见系列篇):

  1. 三类检测器(语义易误解,以 StatusUpdater.php 为准):
    • Website——curl 请求 HTTP,看状态码/响应头/关键字(pattern),支持 Basic 认证、POST、重定向与自定义允许状态码;自动保存证书到期检查(ssl_cert_expiry_days);
    • Service——fsockopen 测 TCP 端口连通(目标只收 IP/纯域名);
    • Ping——执行系统 ping/ping6(ICMP);
  2. 告警阈值防抖:warning_threshold(默认 1)——连续 N 次失败才判离线并告警,避免网络抖动误报(warning_threshold_counter 落库实证);
  3. 五种通知渠道:Email(PHP mail 或 SMTP/PHPMailer)、SMS(内置 22 个网关类,含 Twilio、Messagebird、Nexmo 等,src/psm/Txtmsg/ 实测清单)、Pushover、Telegram、Jabber/XMPP;
  4. 响应时间与可用率报表:每轮记录 rtime,Web 端出图表(本文实测环境 4 个监控项的 rtime 覆盖 0.000s–10.016s 全谱);
  5. 多用户与授权:admin/普通用户两级,监控项可按用户分配(psm_users_servers 表);
  6. 27 种界面语言(src/lang/ 实测清单,含简繁中文),改 language 配置即改即生效(实测标题切换"Status→状态");
  7. 运行日志与保留期:psm_log 记录告警事件,保留天数可配(默认 365);
  8. 部署形态:官方主路径 PHP 源码 + LAMP;官方另有 Dockerfile 仓库(自构建,内置检测循环),本站实测 Docker Compose 全流程可用。

五、快速开始(最小可用示例)

以 Docker Compose 为例(完整步骤、安装向导实录与排障见站内《PHP Server Monitor 3.5.2 Docker Compose 部署指南》):

name: php-server-monitor-3.5.2-stack
services:
  phpservermonitor:
    build: ./docker-phpservermonitor   # 官方 docker-phpservermonitor 仓库
    image: phpservermonitor:3.5.2
    container_name: phpservermon-3.5.2-web
    restart: unless-stopped
    environment:
      - PHP_TIME_ZONE=Asia/Shanghai
      - PSM_REFRESH_RATE_SECONDS=60
      - PSM_AUTO_CONFIGURE=true
      - MYSQL_HOST=db
      - MYSQL_USER=phpservermonitor
      - MYSQL_PASSWORD=q1w2e3r4
      - MYSQL_DATABASE=phpservermonitor
      - MYSQL_DATABASE_PREFIX=psm_
    ports:
      - "8138:80"
    volumes:
      - ./sessions:/sessions
    depends_on:
      - db
    networks: [psm-net]
  db:
    image: mariadb:10.6
    container_name: phpservermon-3.5.2-db
    restart: unless-stopped
    environment:
      - MYSQL_ROOT_PASSWORD=q1w2e3r4
      - MYSQL_USER=phpservermonitor
      - MYSQL_PASSWORD=q1w2e3r4
      - MYSQL_DATABASE=phpservermonitor
    volumes:
      - ./mariadb:/var/lib/mysql
    networks: [psm-net]
networks:
  psm-net:
    driver: bridge
    ipam:
      config:
        - subnet: 10.89.66.0/24
docker compose up -d --build
# 浏览器访问 http://<IP>:8138/ 自动进入安装向导:
# 数据库自动预填 → 创建管理员 admin / q1w2e3r4 → 登录即用(本站实测通过)

上手成本实测评估:会 Docker Compose 的话 15 分钟内可跑通(含一次 bullseye 归档源补丁);传统 LAMP 部署则是标准的"解压 + 安装向导"。

六、适用场景与限制

适合(本站实测体验):

  • 已有 LAMP/PHP 运维习惯的团队,想要一个"装在自家、几 Mbps 资源就够"的轻量拨测面板;
  • 监控对象数量不大(几十个以内)的网站/端口/主机存活;
  • 需要短信告警(PSM 的 22 个 SMS 网关集成在同类里少见)或 Jabber/XMPP 通道;
  • 内网环境:Service 类型对内网端口拨测开箱即用(实测对容器网络内 db:3306 秒级出结果)。

限制(选型前必须知道):

  • 上游低维护:v3.5.2 发布于 2020-08-12,其后无新版;PHP 7.4 官方已 EOL,依赖的 Symfony 3.4/Twig 1.x 同为老线(源码实证)——安全更新要自己评估;
  • 单机串行检测,无分布式/多地域探测点,监控项多时单轮耗时长(实测 4 项含 10s 超时项一轮即需数十秒);
  • 无对外 REST API(管理只能走界面或直接改库)、无告警聚合/静默窗口/排班等高阶告警治理;
  • Web 界面为传统服务端渲染(Bootstrap + jQuery 风格),交互现代感一般;
  • 容器化非一等公民:官方镜像需自构建,且附带 bullseye 归档源等时代坑(本站排障实录见部署指南)。

七、同类选型对比

三个主流自托管可用性监控的量化对比(Stars/版本/主语言来自 shields.io badge 实查,查询日期 2026-11-01;PSM 功能列来自本站实测,另两者为官方仓库公开信息的定性归纳):

维度PHP Server Monitor 3.5.2Uptime Kuma v2.5.9Gatus v5.38.0
GitHub Stars2.2k93k12k
最新版本与节奏v3.5.2(2020-08-12 后停更)活跃迭代(2.x 线)活跃迭代(5.x 线)
实现语言PHP(官方仓库)JavaScript 51.4%(shields languages top)Go(官方仓库)
数据存储MySQL/MariaDB(必须)内嵌数据库为主,可选外部库配置文件/嵌入式库为主,可选外部库
检测类型HTTP(含关键字/证书)/TCP/ICMPHTTP/关键字/TCP/Ping/DNS/Docker 推送等,类型更全HTTP/TCP/DNS/ICMP 等,声明式配置
通知渠道5 类(SMS 细分 22 网关)集成面大(官方 README 列示数十种)集成面大(官方 README 列示数十种)
管理接口仅 Web 界面(无 API)Web 界面 + API Key(推送类)Web 界面 + YAML 声明式管理
部署心智LAMP 传统派 / Docker 需自构建docker run 一条命令起单二进制/容器,K8s 友好
一句话定位轻量、PHP 栈、短信告警特色大众自托管拨测面板的事实标准配置即代码的拨测与状态页

选型建议(如果…则…):

  • 团队栈是 PHP/LAMP、要求数据落在自己的 MySQL、或明确需要 SMS 网关 告警——PSM 依然称手,且本站已验证 Docker 化全流程可行;
  • 想要社区活跃、生态大、UI 现代的通用拨测面板——选 Uptime Kuma(介绍与选型指南),93k Stars 与高频发版不是没有原因的;
  • 追求配置即代码、K8s/CI 里声明式管理监控项——选 Gatus(介绍与选型指南);
  • 需要多地域分布式探测、复杂告警编排(值班表、静默、升级链)——三者都不够格,该看 Zabbix/Prometheus+BlackboxExporter 一级(规模与成本同步上一个量级);
  • 已被 PSM 的"2020 年后停更"劝退、但又爱其简洁——可把它当"够用即冻结"的工具:功能面在 3.5.2 已经完整,社区补丁与安全评估需自行跟进。

八、参考链接