PHP Server Monitor 介绍与选型指南
PHP Server Monitor 自托管可用性监控全解:定位、架构、功能特性与快速上手,并与 Uptime Kuma 93k、Gatus 12k 星做量化选型对比,版本与社区数据 shields.io 实查(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.rst | 2026-11-01 |
| 社区规模(Stars) | shields.io GitHub stars badge | 2026-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 真实部署上验证过(操作细节见系列篇):
- 三类检测器(语义易误解,以
StatusUpdater.php为准):Website——curl 请求 HTTP,看状态码/响应头/关键字(pattern),支持 Basic 认证、POST、重定向与自定义允许状态码;自动保存证书到期检查(ssl_cert_expiry_days);Service——fsockopen 测 TCP 端口连通(目标只收 IP/纯域名);Ping——执行系统ping/ping6(ICMP);
- 告警阈值防抖:
warning_threshold(默认 1)——连续 N 次失败才判离线并告警,避免网络抖动误报(warning_threshold_counter落库实证); - 五种通知渠道:Email(PHP mail 或 SMTP/PHPMailer)、SMS(内置 22 个网关类,含 Twilio、Messagebird、Nexmo 等,
src/psm/Txtmsg/实测清单)、Pushover、Telegram、Jabber/XMPP; - 响应时间与可用率报表:每轮记录
rtime,Web 端出图表(本文实测环境 4 个监控项的 rtime 覆盖 0.000s–10.016s 全谱); - 多用户与授权:admin/普通用户两级,监控项可按用户分配(
psm_users_servers表); - 27 种界面语言(
src/lang/实测清单,含简繁中文),改language配置即改即生效(实测标题切换"Status→状态"); - 运行日志与保留期:
psm_log记录告警事件,保留天数可配(默认 365); - 部署形态:官方主路径 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.2 | Uptime Kuma v2.5.9 | Gatus v5.38.0 |
|---|---|---|---|
| GitHub Stars | 2.2k | 93k | 12k |
| 最新版本与节奏 | v3.5.2(2020-08-12 后停更) | 活跃迭代(2.x 线) | 活跃迭代(5.x 线) |
| 实现语言 | PHP(官方仓库) | JavaScript 51.4%(shields languages top) | Go(官方仓库) |
| 数据存储 | MySQL/MariaDB(必须) | 内嵌数据库为主,可选外部库 | 配置文件/嵌入式库为主,可选外部库 |
| 检测类型 | HTTP(含关键字/证书)/TCP/ICMP | HTTP/关键字/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 已经完整,社区补丁与安全评估需自行跟进。
八、参考链接
- 站内系列:《PHP Server Monitor 3.5.2 Docker Compose 部署指南》、《PHP Server Monitor 3.5.2 配置参数详解》、《PHP Server Monitor 3.5.2 常用 CLI 命令与 cron 托管详解》
- 站内同类:《Uptime Kuma 介绍与选型指南》、《Gatus 介绍与选型指南》
- 源码仓库:https://github.com/phpservermon/phpservermon (v3.5.2 源码包本地核对于 2026-11-01)
- 官方文档:https://docs.phpservermonitor.org/en/latest/
- 版本/星数 badge(查询日期 2026-11-01):https://img.shields.io/github/v/release/phpservermon/phpservermon.svg 、https://img.shields.io/github/stars/phpservermon/phpservermon.svg