Laravel Pulse:如何添加非应用服务器进行监控?
向Laravel Pulse推送服务器健康数据的替代方案
针对你不想在每台被监控服务器(如仅运行MySQL、Redis的服务器)安装PHP和Laravel环境的需求,目前有几个可行的替代方案:
1. 直接调用Pulse的自定义指标API
Laravel Pulse支持通过HTTP请求推送自定义指标,无需在目标服务器部署Laravel:
- 第一步:在你的主Laravel应用中,通过
Pulse::metric()注册自定义服务器指标(比如CPU使用率、内存占用、磁盘空间等)。 - 第二步:在目标服务器上编写轻量脚本(Bash、Python均可),定期收集系统数据。例如用Bash脚本获取CPU使用率:
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}') - 第三步:脚本将收集到的数据以JSON格式POST到Pulse的API端点(需要携带Laravel应用的API令牌进行身份验证),直接把数据推送到Pulse的指标系统。
2. 借助第三方监控工具中转
用轻量的系统监控工具收集数据,再同步到Pulse:
- 在目标服务器部署Node Exporter(仅几MB,无需PHP环境),它会自动收集CPU、内存、磁盘等系统指标并暴露HTTP接口。
- 在你的主Laravel应用中,编写定时任务(Artisan命令),定期从Node Exporter的接口拉取数据,然后调用Pulse的指标方法将数据存入Pulse的数据库。
3. 远程执行命令收集数据
在你的主Laravel服务器上,通过SSH远程连接到目标服务器执行命令获取数据:
- 使用Laravel的SSH组件或第三方包,定期连接到目标服务器,执行
free -m、df -h等命令获取系统状态。 - 解析命令输出的结果,调用Pulse的指标记录方法,将数据提交到Pulse。
内容的提问来源于stack exchange,提问作者greener
相关产品推荐
相关产品推荐

