Swoole Tracker
Swoole Tracker是Swoole官方出品的一整套企业级PHP和Swoole分析调试工具,全面支持协程/非协程环境,数据实时可视化,并全面分析报告服务状况,快速发现及精准定位问题和性能瓶颈。 在安装好swoole_tracker扩展后,我们可以在EasySwoole中提供的各个事件当中埋点,进行应用监控。
安装swoole_tracker扩展的方法见安装文档 https://www.kancloud.cn/swoole-inc/ee-base-wiki/1214079#_24 ,并且可以在 https://www.swoole-cloud.com/ 得到支持,若需要进行定制化本地部署,请联系框架作者或者是Swoole官方客服。
效果图
应用监控

调试器-进程列表

以下为企业版中的调试工具链功能,通过PID远程开启调试,支持检测阻塞IO、内存泄漏和代码性能分析
调试器-阻塞检测

调试器-内存泄漏检测

调试器-性能分析

接口监控

启动
在安装好swoole_tracker扩展后,我们执行:
/opt/swoole/script/php/swoole_php /opt/swoole/node-agent/src/node.php & php easyswoole start
即可对EasySwoole进行监控。
使用
无需修改代码
Swoole Tracker的v2.5.0版本支持自动生成应用名称并创建应用,无需修改任何代码,生成的应用名称格式为:
Swoole的HttpServer:ip:prot
其他的Server:ip(hostname):prot
修改代码
当你需要自定义应用名称时则需要修改代码:
Http服务监控
全局监控
EasySwooleEvent.php中,分别对onRequest,afterResponse两个事件进行注册
- onRequest事件
public static function onRequest(Request $request, Response $response): bool{$tick = \SwooleTracker\Stats::beforeExecRpc($request->getUri()->getPath(), 'serviceName', "192.168.0.1");/*把该次请求生成的tick托管给上下文管理器*/ContextManager::getInstance()->set("SWOOLE_TRACKER_TICK",$tick);return true;}
- afterRequest事件
注册完以上事件后,即可自动的把public static function afterRequest(Request $request, Response $response): void{$tick = ContextManager::getInstance()->get('SWOOLE_TRACKER_TICK');if($response->getStatusCode() != 200){$ret = false;}else{$ret = true;}\SwooleTracker\Stats::afterExecRpc($tick, $ret, $response->getStatusCode());}
Http服务的全部链路信息自动上报至Swoole Tracker服务端。
Http分组监控
若需要对Http服务做细化的分组监控,我们可以定义一个Base控制器。
class Base extends Controller{public $tick;function onRequest(?string $action): ?bool{$this->tick = \SwooleTracker\Stats::beforeExecRpc($request->getUri()->getPath(), 'myGroupName', "192.168.0.1");return true;}function afterAction(?string $actionName): void{\SwooleTracker\Stats::afterExecRpc($tick, true, 200);$this->tick = null;}}
例如全部的Api控制器需要监控,那么对于的控制器继承对应的Base控制器即可。
Rpc、Tcp、WebSocket服务监控
Easyswoole的Rpc、Tcp、WebSocket服务也同理提供了onRequest,afterAction方法,对两个方法进行埋点,即可实现对应的监控。
