Webman 不提供实时状态看板,其 monitor 仅写日志不暴露接口;Workerman 原生状态页仅限开发使用且无认证;生产环境需自行集成 Prometheus 指标采集与 Grafana 可视化。

Webman 本身不提供实时状态看板
Webman 没有内置 HTTP 状态页,app/process/Monitor.php 只是后台常驻进程,只写日志(默认到 runtime/log/monitor.log),不监听端口、不暴露任何接口。你在浏览器访问 :5555 或 :8787 看到的页面,要么是 Workerman 原生状态页,要么是第三方插件(如 webman/admin),和 Webman 的 monitor 机制完全无关。
Workerman 原生状态页可快速启用(仅限开发)
它能显示连接数、请求量、收发字节数等基础统计,但不含 SQL 耗时、中间件耗时、Trace 链路等应用层指标,且无认证、暴露 PID 和内存地址——生产环境必须禁用。
- 在
start.php开头添加:Worker::$statistics = true; - 新增一个 WebServer 实例,比如监听
5555端口:
$stat_server = new WebServer('http://0.0.0.0:5555');
$stat_server->onWorkerStart = function () {
echo "Stat server started on http://0.0.0.0:5555\n";
};
$stat_server->addRoute('/', function () {
return Worker::getStatistics();
});
访问 http://localhost:5555 即可看到纯文本统计页。注意:该页返回的是 PHP 数组 var_export 结果,不是 HTML 页面,也不支持刷新或分页。
想看真实应用级指标?得自己暴露 Prometheus 指标
Webman 不自带 exporter,但你可以用几行代码把关键数据推给 Prometheus。这是目前最可控、可扩展、适合生产的方案。
Webman 2.2.0版本强化了 TCP/UDP 服务支持,优化路由组管理,并增强异步任务处理能力。结合协程与连接池技术,Webman 能轻松应对高并发场景,适用于网站、接口服务、即时通讯、物联网及游戏开发,兼具高性能、灵活扩展与稳定可靠,是多场景 PHP 服务开发的理想选择。
- 安装
prometheus/client_php:composer require prometheus/client_php - 在
start.php中注册采集器,例如记录请求耗时:
use Prometheus\CollectorRegistry;
use Prometheus\Storage\Redis;
$registry = new CollectorRegistry(new Redis(['host' => '127.0.0.1', 'port' => 6379]));
$counter = $registry->registerCounter('webman', 'http_requests_total', 'HTTP Requests Total', ['method', 'code']);
$histogram = $registry->registerHistogram('webman', 'http_request_duration_seconds', 'HTTP Request Duration', ['method', 'route'], [0.01, 0.1, 0.5, 1.0]);
// 在全局中间件中记录:
$histogram->observe($duration, ['GET', '/api/user']);
$counter->inc(['GET', '200']);
再配一个 /metrics 路由返回 $registry->getMetricFamilySamples() 的文本格式,Prometheus 就能抓取。Grafana 接入后,你就能查 P95 耗时、按路由分组、对比版本差异——这些是日志 trace.log 无法直接提供的能力。
别把 webman/admin 当成监控面板
它是个后台管理界面,不是监控系统。虽然它能展示一些运行时信息(如进程列表、日志文件预览),但它不采集、不聚合、不报警、不存储历史数据。它的 /app/admin/ 页面本质是 CRUD 界面,依赖数据库存配置,和性能监控无关。
- 安装命令:
composer require -w webman/admin - 默认监听端口是
8787,需手动开放防火墙 - 它读取的是
runtime/log/*.log文件内容,不能替代指标采集
真正要实现实时服务器状态看板,核心在于「指标采集 → 存储 → 可视化」三步闭环。Webman 只负责第一环的埋点基础(Trace::enable() 写 trace.log),剩下两环必须你自己补全——没有捷径,也不存在“一键开启看板”的配置项。










