🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## systerm统计进程服务 swoolefy在4.0.3+之后的版本添加了一个统计进程服务,收集请求量,cpu,内存使用等服务。 ## 配置 在协议层的配置文件中配置,如果需要使用sys_collector的服务,必须启用enable\_sys\_collector这个选项,设置enable_sys_collector => true。 ``` // 是否启动系统的信息收集器 'enable_sys_collector' => 1, ``` 那么启动了收集器之后,那么需要配置收集器的一些信息,一下有4种方法可以实现: * udp方式 这方式是将收集好的系统信息通过udp的服务发送给远程的udp服务器 ``` // udp的方式发送数据给udp服务器 'sys_collector_conf' => [ 'type' => SWOOLEFY_SYS_COLLECTOR_UDP,// 类型,已经定义的常量,udp方式 'host' => '127.0.0.1',//udp服务器的host 'port' => 9505,//端口 'service'=>'Service/Coms/Udp/LogService',//udp对应的服务类,这里其实也是使用swoolefy的udp服务 'event'=> 'saveLog',//服务对应的操作 'tick_time' =>2, //定时器,单位秒,多少秒收集一次服务系统的信息并发送 'from_service'=>'order:192.168.99.103', //发送方的服务,用来区分一其他服务和机器 'func' => function() { //发送的数据,要发送数据这里必须要return返回数据,这里做成开放式,开发者可以自行实现逻辑 return \Swoolefy\Core\SysCollector\SysCollector::getInstance()->test(); } ], ``` * swoole_redis的订阅发布方式(需要hiredis的支持) ``` 这种方式通过订阅和发布,定时收集信息然后发布给接收方的订阅 // 原生swoole_redis的客户端发布消息publish,接收端需要通过订阅subscribe来获取消息 'sys_collector_conf' => [ 'type' => SWOOLEFY_SYS_COLLECTOR_SWOOLEREDIS, 'host' => '192.168.99.103', 'port' => 6379, 'timeout'=> 4, // redis连接超时时间 'database'=>15, 'password' =>'123456', 'tick_time' => 2, 'channel' => 'test', //订阅的信道 'from_service'=>'order:192.168.99.103', 'func' => function() { return \Swoolefy\Core\SysCollector\SysCollector::getInstance()->test(); } ], ``` * phpredis的订阅发布方式(需要phpredis扩展的支持) ``` // phpredis的客户端发布消息publish,接收端需要通过订阅subscribe来获取消息 'sys_collector_conf' => [ 'type' => SWOOLEFY_SYS_COLLECTOR_PHPREDIS, 'host' => '192.168.99.103', 'port' => 6379, 'timeout'=>4,// redis连接超时时间 'database'=>15, 'password' =>'123456', 'tick_time' =>2, 'channel' => 'test', //订阅的信道 'from_service'=>'order:192.168.99.103', 'func' => function() { return \Swoolefy\Core\SysCollector\SysCollector::getInstance()->test(); } ], ``` * 本地文件保存的方式 ``` // 将收集的信息保存在本地,一般用于开发调试功能阶段,建议实际线上不使用 'sys_collector_conf' => [ 'type' => SWOOLEFY_SYS_COLLECTOR_FILE, // 用绝对路径 'file_path' => '/home/wwwroot/swoolefy/syslog.log', 'tick_time' => 2, // 日志最大大小,其实一般用于调试 'max_size' => 1024, //日志大小,超过将会清空,单位字节 'from_service'=>'order:192.168.99.103', 'func' => function() { return \Swoolefy\Core\SysCollector\SysCollector::getInstance()->test(); } ], ``` ## 发送的数据格式 以上各种方式将会以以下的数据格式,将数据发送 ``` $data = [ 'from_service' => 'order:192.168.99.103', //对应配置文件的from_service 'total_request' => 1234556,//这个swoolefy底层已经计算好的 'tick_time' => 2,//对应配置文件的tick_time 'timestamp' => 1537085151, //当前时间戳 'sys_collector_message' => [] //这个就是配置文件中func的函数返回的数据,开发者自行实现的数据统计 ] ``` 接收方将接收到这样格式的json的字符串,然后处理就可以了。 ``` 'func' => function() { return \Swoolefy\Core\\SysCollector\SysCollector::getInstance()->test(); } ``` <table><tr><td bgcolor=orange> 特别注意: 开发者可以继承这个\Swoolefy\Core\SysCollector\SysCollector这个类来实现自己的逻辑业务,函数返回数据即可 </td></tr></table>