Webman 不能替代 Zabbix Server,它仅提供高性能服务框架能力,需自行实现采集、判断、告警全链路;适合做轻量 webhook 接收器或消息中转,而非从零构建完整监控系统。

Webman 本身不是监控平台,它只是个高性能 PHP 框架;想用它搭自动化运维监控报警平台,必须自己实现“采集→判断→告警”链路,不能直接复用 Zabbix 或 Prometheus 那套现成逻辑。
Webman 能否替代 Zabbix Server?
不能。Zabbix Server 是完整的服务端程序,内置数据接收、存储(MySQL/PostgreSQL)、触发器计算、告警引擎、历史压缩、API 等模块;Webman 只提供 HTTP/WebSocket/TCP 服务能力,所有监控逻辑(比如:收到一条 CPU 使用率数据后,是否超阈值?是否连续 3 次?是否已静默?)都得你手写代码实现。
常见错误现象:curl -X POST http://localhost:8787/api/metrics 能收数据,但没人处理、不存库、不发通知、不查历史趋势——这就是只用了 Webman 的“管道”,没建“系统”。
- 若你已有 Zabbix Agent 或 Prometheus Exporter,可用 Webman 写一个轻量
webhook接收器,把告警转发到钉钉/飞书/邮件,这是合理且低风险的用法 - 若想从零造轮子,需自行接入时序数据库(如 TimescaleDB、VictoriaMetrics),否则连“过去 1 小时 CPU 最高值”都算不出来
- Webman 的
pcntl和posix扩展必须启用,否则无法做进程管理(如轮询检查、定时清理过期告警)
如何用 Webman 接收并分发 Zabbix 告警?
Zabbix 支持通过 Webhook 发送告警,Webman 是极佳的接收端:轻量、并发高、可直连 Redis/MQ、适合做消息中转。
实操建议:
Webman 2.2.0版本强化了 TCP/UDP 服务支持,优化路由组管理,并增强异步任务处理能力。结合协程与连接池技术,Webman 能轻松应对高并发场景,适用于网站、接口服务、即时通讯、物联网及游戏开发,兼具高性能、灵活扩展与稳定可靠,是多场景 PHP 服务开发的理想选择。
- 在 Zabbix Web 界面【管理】→【报警媒介类型】→【创建媒体类型】,类型选
Webhook,URL 填http://your-webman-host:8787/api/zabbix-alert - Webman 中定义该路由,用
$request->getParsedBody()解析 Zabbix 发来的 JSON,关键字段包括:trigger.status、trigger.severity、host.name、event.id - 不要在请求内直接调用
mail()或curl发钉钉——阻塞主线程;应写入redis.lpush('alert:queue', $payload),另起 Worker 进程异步消费 - 务必校验
X-Zabbix-Signature请求头(Zabbix 6.0+ 支持),防止伪造告警刷爆你的通知通道
Webman + Redis + 定时任务 = 简易 scan-and-action?
可以,但仅适用于低频、低复杂度场景(如每分钟检查一次某 API 是否返回 200,失败则重启服务)。Webman 自带 timer 组件,配合 Redis 的原子操作,能规避多实例重复执行问题。
示例逻辑:
// 在 start.php 中注册定时任务
Timer::tick(60*1000, function () {
$key = 'scan:api_health_check:lock';
if (Redis::set($key, 1, ['nx', 'ex' => 50])) { // 加锁 50 秒
$status = @file_get_contents('https://api.example.com/health');
if ($status !== 'OK') {
exec('systemctl restart my-app-service');
Redis::lpush('alert:log', 'API health check failed at '.date('Y-m-d H:i:s'));
}
Redis::del($key);
}
});
注意点:
-
exec()在容器或宝塔环境下常被禁用,改用shell_exec()前要确认disable_functions配置 - Redis 锁必须设
ex(过期时间),否则单点故障会导致整个扫描停摆 - 这种模式无法处理“连续 3 次失败才告警”的状态机逻辑,需额外维护 Redis Hash 存储历史结果
真正复杂的监控逻辑(如依赖拓扑分析、动态阈值、多条件组合触发)不适合塞进 Webman;它擅长的是快速响应、协议适配和消息分发——把重活交给 Zabbix/Prometheus,让 Webman 做好它的接口和胶水角色,才是稳定又可持续的路径。

















