<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] ## 直接部署(非docker的客戶端環境) ### 1. 安裝對應的`swoole_tracker`擴展 在 `php.ini` 中加入以下配置 ```ini extension=swoole_tracker.so ;打開總開關 apm.enable=1 ;采樣率 例如:100% apm.sampling_rate=100 ;開啟內存泄漏檢測時添加 默認0 關閉狀態 apm.enable_memcheck=1 ;v3.3.0版本開始修改為了Zend擴展 zend_extension=swoole_tracker.so tracker.enable=1 tracker.sampling_rate=100 tracker.enable_memcheck=1 ``` >[danger] `enable`為 1 時表示調用統計百分百攔截并上報 > `sampling_rate`采樣率只作用于鏈路追蹤,設置為 100 則表示每次請求都會生成一條 trace 數據 ### 2. 卸載不兼容擴展 1. xdebug 2. ioncube loader 3. zend guard loader 4. xhprof 5. swoole_loader (加密后的代碼不能進行分析) ### 3. 運行agent 在 node-agent 的目錄下的命令行中執行 `./deploy_env.sh 127.0.0.1`。(`127.0.0.1`為admin后臺的機器ip) ### 4. 重啟PHP服務 安裝完成擴展后,需要**重啟對應的 SwooleServer 或者 php-fpm 服務**,**并且發生請求**后稍等片刻,等待tracker服務端接收客戶端發送的數據。 ## 在Docker部署 >[danger] 請注意修改相關路徑為你自己的路徑!!!以下的swoole.so只是演示說明可安裝其他擴展,swoole_tracker不依賴swoole擴展 在docker環境部署需要修改Dockerfile或者docker-compose.yml或者在`docker run`命令中添加參數,以下以采用官方docker-compose v3.7配置文件格式,php:fpm-7.x(-alpine)鏡像為例,描述如何在docker部署 ### 修改Dockerfile以部署node-agent 在Dockerfile中執行deploy_env.sh來部署node-agent,然后在entrypoint中添加node-agent,例如 ```dockerfile # dockerfile的其他部分 # 部署node-agent ADD swoole-tracker-vx.y.z.tar.gz /tmp/ RUN tar -C / -xvf /tmp/swoole-tracker-vx.y.z.tar.gz && \ cd /swoole-tracker/node-agent && \ ./deploy_env.sh 服務端IP && \ rm /tmp/swoole-tracker-vx.y.z.tar.gz # 添加entrypoint腳本 RUN printf '#!/bin/sh\n/opt/swoole/script/php/swoole_php /opt/swoole/node-agent/bin/node.php &\nphp-fpm $@' > /opt/swoole/entrypoint.sh && \ chmod 755 /opt/swoole/entrypoint.sh # 啟用entrypoint腳本(-x方便調試, 可以去掉) ENTRYPOINT [ "sh", "-x", "/opt/swoole/entrypoint.sh" ] ``` ### 啟用擴展 #### 安裝依賴 swoole_tracker依賴mysqlnd, pdo, curl, json擴展,需要在你的docker鏡像里添加這幾個依賴的擴展 對于官方鏡像,他們提供了docker-php-ext-install 命令,可以使用 ```dockerfile mysqli pdo pdo_mysql curl json ``` 來添加這些擴展 #### 安裝tracker擴展 對于官方鏡像php:fpm系列,php(-fpm)默認讀取/usr/local/etc/php/conf.d下的配置文件,默認的entrypoint會將"-"開頭的參數作為fpm啟動參數,因此可以采用以下方式啟用swoole_tracker擴展 在Dockerfile添加配置文件: ```dockerfile RUN printf 'extension=/path/to/swoole.so\nextension=/path/to/swoole_tracker7x.so\n' > /usr/local/etc/php/conf.d/swoole-tracker.ini ``` 或在docker-compose.yml添加啟動參數 ```dockerfile services: your-service: build: context: cgi-docker dockerfile: Dockerfile image: myphpfpm:1 command: - "-dextension=/path/to/swoole.so" - "-dextension=/path/to/swoole_tracker7x.so" ``` 或在docker run命令中添加啟動參數 ```dockerfile docker run --other-arguments myphpfpm:1 -dextension=/path/to/swoole.so -dextension=/path/to/swoole_tracker7x.so ``` ### 配置docker安全選項 > 僅在使用部分調試器功能(如阻塞檢測,內存泄漏檢測等)時需要進行這些配置 擴展中使用了默認權限不允許的系統調用,使用了docker默認seccomp配置不允許的系統調用,需要額外配置: >[success] 參考[https://docs.docker.com/engine/security/seccomp/](https://docs.docker.com/engine/security/seccomp/) 對于權限配置,可以添加SYS_PTRACE cap,或者使用提升權限模式(不推薦) 對于seccomp,可以修改seccomp配置,或關閉seccomp配置(不推薦,這將導致docker內程序可以執行create_module,kexec_load等危險系統調用) ### 修改seccomp配置 > 僅在使用部分調試器功能(如阻塞檢測,內存泄漏檢測等)時需要進行這些配置 修改seccomp配置文件(修改自[默認文件](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json)): ```bash --- a.json +++ b.json # 在.syscalls[0].names中加入"ptrace",這將允許ptrace @@ -359,7 +359,8 @@ "waitid", "waitpid", "write", - "writev" + "writev", + "ptrace" ], "action": "SCMP_ACT_ALLOW", "args": [], # 如果你的docker較新,則它已經配置了ptrace在4.8以上內核可用 # 參考https://github.com/moby/moby/commit/1124543ca8071074a537a15db251af46a5189907 # 移除這段 @@ -369,18 +370,6 @@ }, - { - "names": [ - "ptrace" - ], - "action": "SCMP_ACT_ALLOW", - "args": null, - "comment": "", - "includes": { - "minKernel": "4.8" - }, - "excludes": {} - }, { "names": [ "personality" ], "action": "SCMP_ACT_ALLOW", ``` 在docker run使用該seccomp并給予SYS\_PTRACE權限: ```bash docker run --other-arguments --cap-add=SYS_PTRACE --security-opt seccomp=/path/to/that/modified/profile.json ... ``` 或docker-compose.yml中: ```yml # 在docker-compose.yml中: services: your-service: build: context: cgi-docker dockerfile: Dockerfile image: myphpfpm:1 # 給予SYS_PTRACE權限 cap_add: - "SYS_PTRACE" # 配置使用修改的seccomp security_opt: - "seccomp=/path/to/that/modified/profile.json" ``` #### 關閉seccomp(不推薦) 與修改配置類似,但不需要創建json,將 `seccomp=/path/to/that/modified/profile.json` 換成`seccomp=unconfined`即可 ## 單獨的NodeAgent容器(高級用法) 此處提供一種單獨運行的方法,僅供參考: ```bash # 在host安裝NodeAgent(或者手動安裝/opt/swoole的文件) cd /some/place/swoole-tracker/node-agent ./deploy_env.sh 服務端IP # 開啟NodeAgent容器 docker run \ --name nodeagent \ -d --cap-add SYS_PTRACE \ --security-opt seccomp=/path/to/modified/json \ --entrypoint /opt/swoole/script/php/swoole_php \ -v /var/run:/var/run:rw,rshared,z \ -v /tmp:/tmp:rw,rshared,z \ -v /opt/swoole:/opt/swoole:rw,rshared,z \ alpine:edge \ /opt/swoole/node-agent/src/node.php # 開啟cgi容器 docker run \ --name cgi1 \ -d \ --pid="container:nodeagent" \ --net="container:nodeagent" \ -v /var/run:/var/run:rw,rshared,z \ -v /tmp:/tmp:rw,rshared,z \ -v /opt/swoole:/opt/swoole:rw,rshared,z \ php:7.3-fpm ``` ## 管理客戶端進程 查看 [常見問題](../qa.md) 中的「管理NodeAgent守護進程」
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看