## 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采集進程服務