## 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>
- 欢迎使用swoolefy
- 环境说明
- 开发部署
- 安装
- 创建应用
- 启动|停止服务
- nginx代理
- 创建Controller
- 应用结构
- App应用对象
- Event请求处理
- 超全局管理
- 热更新
- inotify实现worker进程热重启
- http服务
- 应用层配置
- 协议层配置
- 路由规则
- 控制器
- 数据模型
- websocket服务
- 应用层配置
- 协议层配置
- 数据封装格式
- 控制器
- 数据模型
- 二进制数据处理
- rpc服务
- 应用层配置
- 协议程配置
- 数据包协议格式
- 服务控制器
- 服务数据模型
- udp服务
- 应用层配置
- 协议层配置
- 数据包封装格式
- 控制器
- 存在问题
- 常用组件
- log
- view
- session
- cache(redis)
- db(mysql)
- mongodb
- 其他服务管理
- 自定义进程管理
- 异步任务管理
- 内存表管理
- 定时器管理
- 异常捕捉处理
- 进程池管理
- systerm采集进程服务