
# Php应用接入APM
#### 接入环境准备
- 已完成PHP 8.0+、PECL、composer的安装。

- 已在shell脚本下验证PHP、composer版本。
 
#### Php应用接入APM
1. 登录[APM控制台](https://console.huaweicloud.com/apm2/)。
2. 在左侧导航栏中选择"应用监控 \> 应用列表"。
3. 进入"接入应用"页面。 
   - 首次接入应用时，单击"点击接入应用"，进入"接入应用"页面。
   
   - 已有探针接入时，在页面右上角，单击"接入应用"，进入"接入应用"页面。
   
   
   
   
4. 选择"区域"和"应用"。若未有应用，可单击"创建应用"，弹出"创建应用"弹窗，具体操作请参见[创建应用](https://support.huaweicloud.com/usermanual-apm2/apm_07_0050.html#apm_07_0050__section1684713176449)。
5. "接入方式"选择OpenTelemetry。
6. "服务端语言"选择Php。
7. 数据接入。 
   - 非侵入式接入
     1. 安装OpenTelemetry扩展组件。
        1. 安装必须构建工具，命令如下：
           ```
           sudo apt-get install gcc make autoconf
           ```
           
        
        2. 使用构建安装扩展组件，命令如下：
           ```
           sudo apt-get install php-dev
           pecl install opentelemetry
           pecl install grpc
           pecl install protobuf-3.21.12
           ```
           
        
        3. 将扩展名添加到您的php.ini文件中，内容如下：
           ```
           [opentelemetry]
           extension=opentelemetry.so
           [PHP]
           extension=grpc.so
           extension=protobuf.so
           ```
           
        
        4. 验证扩展是否已安装并启用，内容如下：
           ```
           php --ri opentelemetry
           php --ri grpc
           php --ri protobuf
           ```
           
         
     
     2. 安装服务框架所需opentelemetry依赖包。
        1. 安装服务框架所依赖的opentelemetry自动插件包，比如slim框架需安装open-telemetry/opentelemetry-auto-slim，命令如下：
           ```
           composer config allow-plugins.php-http/discovery false
           composer require open-telemetry/sdk
           composer require open-telemetry/exporter-otlp
           composer require open-telemetry/transport-grpc
           composer require open-telemetry/opentelemetry-auto-slim
           composer update
           ```
           
        
        2. 上述步骤也可用框架源码来安装，就无须安装基础包，因为在其他框架你可能无法识别需要安装哪些基础包。倘若执行[7.b.i]中步骤，可直接执行[7.b.iii]。[下载代码](https://github.com/open-telemetry/opentelemetry-php/archive/refs/heads/main.zip)后，将代码包上传到对接应用的服务器上，解压之后，执行如下命令：
           ```
           composer config allow-plugins.php-http/discovery false
           composer require open-telemetry/opentelemetry-auto-slim
           composer update
           ```
           
        
        3. 将对接服务的配置在环境变量或者 php.ini 中，配置如下：
           ```
           OTEL_EXPORTER_OTLP_ENDPOINT=http://100.79.29.106:4317 // 对接服务上报数据的 ip 以及端口
           OTEL_EXPORTER_OTLP_HEADERS=Authentication= ****** // 对接服务 token 信息
           OTEL_EXPORTER_OTLP_PROTOCOL=grpc // 数据的 OTLP 传输协议
           OTEL_PHP_AUTOLOAD_ENABLED=true
           OTEL_SERVICE_NAME=应用名称.组件名称.环境名称 // 对接服务的服务名
           ```
           
           表1参数说明 
           | 参数             | 说明                                                                                                                                        | 是否必填 |
           |:---|:---|:---|
           | Endpoint       | 上报地址，请参见[探针接入地址](https://support.huaweicloud.com/usermanual-apm2/apm_07_1008.html)*。*                                                     | 必填   |
           | Authentication | 鉴权信息，获取信息方式请参见[查看应用管理](https://support.huaweicloud.com/usermanual-apm2/apm_07_0101.html#apm_07_0101__section15411119102711)中获取"APPKEY"的值。 | 必填   |
              
           
         
      
   
   - 侵入式接入 参考官网：[官网网站](https://opentelemetry.io/docs/languages/php/getting-started/)。
     
   
   
   
   
 
