1 Star 0 Fork 0

imi 开发组 / imi-swoole-tracker

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

imi-swoole-tracker

Latest Version Php Version Swoole Version IMI License

介绍

在 imi 框架中接入 Swoole Tracker 监控

Swoole Tracker: https://www.swoole-cloud.com/tracker.html

  • 企业版集成了Facebook的Xhprof工具,可以生成调用堆栈图和火焰图,亦可生成分层分析表格,方便找到程序瓶颈点进行优化。

  • 为解决PHP常驻进程的内存泄漏问题,企业版专门针对PHP的内存泄漏检测工具,方便快速的解决和定位内存持续增长问题。

  • Swoole异步/协程模式以及ReactPHP等众多框架最致命的就是阻塞调用,会让并发大大降低,为此我们开发了毫秒级阻塞检测工具,迅速定位导致阻塞的代码。

  • 自动抓取FPM、CLI进程数量,统计CPU、内存使用情况。

  • 所有工具零部署成本,后台一键开启关闭各种检测,完美支持PHP7。

Swoole Tracker

目前Swoole Trackerv2.5.0版本支持自动生成应用名称并创建应用,无需修改任何代码,生成的应用名称格式为:

SwooleHttpServerip:prot

其他的Serverip(hostname):prot

即安装好swoole_tracker扩展之后就可以正常使用Swoole Tracker的功能

组件基本使用

  1. 在你的 composer.json 中加入下面的内容:
{
    "require": {
        "imiphp/imi-swoole-tracker": "~1.0"
    }
}
  1. 执行 composer update 安装。

  2. 在项目 config/config.php 中配置:

[
    'components'    =>  [
        // 引入本组件
        'SwooleTracker'       =>  'Imi\SwooleTracker',
    ],
]

Http 服务

在服务器的 config/config.php 中配置:

[
    'beans'    =>    [
        'HttpDispatcher'    =>    [
            'middlewares'    =>    [
                …… // 你的其他中间件
                \Imi\Server\Http\Middleware\RouteMiddleware::class,
                "SwooleTrackerHttpMiddleware", // 放在 RouteMiddlware 后
            ],
        ],
        'SwooleTrackerHttpMiddleware'   =>  [
            'serviceName'   => 'imi-http-example', // 服务名
            // 'serverIp'      => null, // 服务器 IP,默认获取当前网卡 IP
            // 'interface'     => null, // 网卡 interface 名,自动获取当前网卡IP时有效
            // 'successStatusCode' => 200, // 成功的 Http 状态码
        ],
    ],
];

WebSocket 服务

在服务器的 config/config.php 中配置:

[
    'beans'    =>    [
        'WebSocketDispatcher'    =>    [
            'middlewares'    =>    [
                …… // 你的其他中间件
                \Imi\Server\WebSocket\Middleware\RouteMiddleware::class,
                "SwooleTrackerWebSocketMiddleware", // 放在 RouteMiddlware 后
            ],
        ],
        'SwooleTrackerWebSocketMiddleware'  =>  [
            'serviceName'       => 'imi-websocket-example', // 服务名
            // 'serverIp'          => null, // 服务器 IP,默认获取当前网卡 IP
            // 'interface'         => null, // 网卡 interface 名,自动获取当前网卡IP时有效
            // 'successCode'       =>  500, // 当成功时上报的默认code
            // 'exceptionCode'     =>  500, // 当发生异常时上报的默认code
            // 指定获取请求方法名的参数,必须有
            'nameHandler'       =>  function(\Imi\Server\WebSocket\Message\IFrame $frame){
                return $frame->getFormatData()->action ?? 'unknown'; // 代码仅供参考
            },
        ],
    ],
];

TCP 服务

在服务器的 config/config.php 中配置:

[
    'beans'    =>    [
        'TcpDispatcher'    =>    [
            'middlewares'    =>    [
                …… // 你的其他中间件
                \Imi\Server\TcpServer\Middleware\RouteMiddleware::class,
                "SwooleTrackerTCPMiddleware", // 放在 RouteMiddlware 后
            ],
        ],
        'SwooleTrackerTCPMiddleware'  =>  [
            'serviceName'       => 'imi-tcp-example', // 服务名
            // 'serverIp'          => null, // 服务器 IP,默认获取当前网卡 IP
            // 'interface'         => null, // 网卡 interface 名,自动获取当前网卡IP时有效
            // 'successCode'       =>  500, // 当成功时上报的默认code
            // 'exceptionCode'     =>  500, // 当发生异常时上报的默认code
            // 指定获取请求方法名的参数,必须有
            'nameHandler'       =>  function(\Imi\Server\TcpServer\Message\IReceiveData $data){
                return $data->getFormatData()->action ?? 'unknown'; // 代码仅供参考
            },
        ],
    ],
];

UDP 服务

在服务器的 config/config.php 中配置:

[
    'beans'    =>    [
        'UdpDispatcher'    =>    [
            'middlewares'    =>    [
                …… // 你的其他中间件
                \Imi\Server\UdpServer\Middleware\RouteMiddleware::class,
                "SwooleTrackerUDPMiddleware", // 放在 RouteMiddlware 后
            ],
        ],
        'SwooleTrackerUDPMiddleware'  =>  [
            'serviceName'       => 'imi-udp-example', // 服务名
            // 'serverIp'          => null, // 服务器 IP,默认获取当前网卡 IP
            // 'interface'         => null, // 网卡 interface 名,自动获取当前网卡IP时有效
            // 'successCode'       =>  500, // 当成功时上报的默认code
            // 'exceptionCode'     =>  500, // 当发生异常时上报的默认code
            'nameHandler'       =>  function(\Imi\Server\UdpServer\Message\IPacketData $data){
                return $data->getFormatData()->action ?? 'unknown'; // 代码仅供参考
            },
        ],
    ],
];

进阶使用

如果请求产生异常,自动上报失败,错误码为异常 code

你也可以在代码中指定是否成功和错误码,例子:

RequestContext::set('imi.tracker.success', false);
RequestContext::set('imi.tracker.code', 19260817);

免费技术支持

QQ群:17916227 点击加群,如有问题会有人解答和修复。

运行环境

版权信息

imi-swoole-tracker 遵循 MIT 开源协议发布,并提供免费使用。

捐赠

开源不求盈利,多少都是心意,生活不易,随缘随缘……

MIT License Copyright (c) 2018 imiphp Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

在 imi 框架中接入 Swoole Tracker 监控 展开 收起
PHP
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
PHP
1
https://gitee.com/imiphp/imi-swoole-tracker.git
git@gitee.com:imiphp/imi-swoole-tracker.git
imiphp
imi-swoole-tracker
imi-swoole-tracker
master

搜索帮助