hyperf/docs/en/swoole-tracker.md
2021-02-06 10:50:14 +08:00

4.1 KiB
Raw Blame History

Swoole Tracker

Swoole Tracker是 Swoole 官方推出的一整套企业级包括 PHP 和 Swoole 分析调试工具以及应用性能管理APM平台针对常规的 FPM 和 Swoole 常驻进程的业务提供全面的性能监控、分析和调试的解决方案。曾命名Swoole Enterprise

  • 时刻掌握应用架构模型
  • 分布式跨应用链路追踪
  • 完善的系统监控
  • 零成本接入
  • 全面分析报告服务状况

Installation

注册完账户后,进入控制台,并申请试用,下载对应的安装脚本。

相关文档,请移步 试用文档详细文档

将脚本以及以下两个文件复制到项目目录 .build

  1. entrypoint.sh
#!/usr/bin/env sh

/opt/swoole/script/php/swoole_php /opt/swoole/node-agent/src/node.php &

php /opt/www/bin/hyperf.php start

  1. swoole_tracker.ini
[swoole_tracker]
extension=/opt/.build/swoole_tracker.so

;打开总开关
apm.enable=1
;采样率 例如100%
apm.sampling_rate=100

;开启内存泄漏检测时添加 默认0 关闭状态
apm.enable_memcheck=1

然后将下面的 Dockerfile 复制到项目根目录中。

# Default Dockerfile
#
# @link     https://www.hyperf.io
# @document https://hyperf.wiki
# @contact  group@hyperf.io
# @license  https://github.com/hyperf-cloud/hyperf/blob/master/LICENSE

FROM hyperf/hyperf:7.4-alpine-v3.11-swoole
LABEL maintainer="Hyperf Developers <group@hyperf.io>" version="1.0" license="MIT" app.name="Hyperf"

##
# ---------- env settings ----------
##
# --build-arg timezone=Asia/Shanghai
ARG timezone

ENV TIMEZONE=${timezone:-"Asia/Shanghai"} \
    APP_ENV=prod \
    SCAN_CACHEABLE=(true)

# update
RUN set -ex \
    # show php version and extensions
    && php -v \
    && php -m \
    && php --ri swoole \
    #  ---------- some config ----------
    && cd /etc/php7 \
    # - config PHP
    && { \
        echo "upload_max_filesize=128M"; \
        echo "post_max_size=128M"; \
        echo "memory_limit=1G"; \
        echo "date.timezone=${TIMEZONE}"; \
    } | tee conf.d/99_overrides.ini \
    # - config timezone
    && ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \
    && echo "${TIMEZONE}" > /etc/timezone \
    # ---------- clear works ----------
    && rm -rf /var/cache/apk/* /tmp/* /usr/share/man \
    && echo -e "\033[42;37m Build Completed :).\033[0m\n"

COPY .build /opt/.build
WORKDIR /opt/.build

RUN chmod +x swoole-tracker-install.sh \
    && ./swoole-tracker-install.sh \
    && chmod 755 entrypoint.sh \
    && cp swoole-tracker/swoole_tracker74.so /opt/.build/swoole_tracker.so \
    && cp swoole_tracker.ini /etc/php7/conf.d/98_swoole_tracker.ini \
    && php -m

WORKDIR /opt/www

# Composer Cache
# COPY ./composer.* /opt/www/
# RUN composer install --no-dev --no-scripts

COPY . /opt/www
RUN composer install --no-dev -o && php bin/hyperf.php

EXPOSE 9501

ENTRYPOINT ["sh", "/opt/.build/entrypoint.sh"]

使用

不依赖组件

Swoole Trackerv2.5.0 以上版本支持自动生成应用名称并创建应用,无需修改任何代码。

如果使用 SwooleHttpServer 那么生成的应用名称为ip:port

如果使用 Swoole 其他的 Server 那么生成的应用名称为ip(hostname):port

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

依赖组件

当你需要自定义应用名称时则需要安装组件,使用 Composer 安装:

composer require hyperf/swoole-tracker

安装完成后在 config/autoload/middlewares.php 配置文件中注册 Hyperf\SwooleTracker\Middleware\HttpServerMiddleware 中间件即可,如下:

<?php

return [
    'http' => [
        Hyperf\SwooleTracker\Middleware\HttpServerMiddleware::class
    ],
];

若使用 jsonrpc-http 协议实现了 RPC 服务,则还需要在 config/autoload/aspects.php 配置以下 Aspect

<?php

return [
    Hyperf\SwooleTracker\Aspect\CoroutineHandlerAspect::class,
];