文档中心>腾讯云可观测平台

通过 Skywalking 协议上报

最近更新时间:2023-05-17 10:09:43

我的收藏
本文将为您介绍如何使用 Skywalking 协议上报 PHP 应用数据。
说明
查看 Skywalking 开源的 PHP SDK

操作前提

gcc/g++ 编译器:大于 4.9 版本。
PHP:大于 7.0 版本。
Cmake 编译器:安装大于 3.20.0 版本的 cmake ,操作如下:
wget https://cmake.org/files/v3.20/cmake-3.20.0.tar.gz
tar -zxvf cmake-3.20.0.tar.gz
cd cmake-3.20.0

./bootstrap
make
make install
说明
yum 安装的版本也较低,因此采用从源码安装方式。

操作步骤

步骤1:获取接入点和 Token

进入 应用性能监控控制台 应用监控 > 应用列表页面,单击接入应用,在接入应用时选择 PHP 语言与 SkyWalking 的数据采集方式。在选择接入方式步骤获取您的接入点和 Token,如下图所示:
img



步骤2:安装 GRPC

wget https://apm-php-depend-src-1258344699.cos.ap-guangzhou.myqcloud.com/grpc.submodule.tar.gz
tar -xzf grpc.submodule.tar.gz
cd grpc/
mkdir -p cmake/build
cd cmake/build
cmake ../..
make -j$(nproc)
ldconfig
# protobuf
cd third_party/protobuf/
./autogen.sh
./configure
make -j$(nproc)
make install
ldconfig

步骤3:编译 skywalking.so 扩展

1. 编译 skywalking.so 扩展需要提前安装依赖库。(已安装可以忽略)
# yum install boost-devel
# yum install autoconf
2. 配置境变量: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/local/lib64export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/lib:/usr/local/lib64
3. 编译 skywalking.so 扩展:
wget https://apm-php-depend-src-1258344699.cos.ap-guangzhou.myqcloud.com/SkyAPM-php-sdk.tar.gz
cd SkyAPM-php-sdk/
/usr/local/services/php7/bin/phpize
./configure --with-grpc-src="/本机路径/grpc" --with-php-config="/本机路径/php7/bin/php-config"
make
make install
说明
编译完成后,可在 PHP 的扩展目录看到多了一个 skywalking.so 文件。

步骤4:修改 php.ini 配置文件

修改 php.ini 如下配置项:
[skywalking]
; 添加扩展
extension=skywalking.so
; 设置应用名称
skywalking.app_code = php_misterli_test
; 开启收集器
skywalking.enable = 1
; 设置skyWalking服务版本
skywalking.version = 8
; 设置skyWalking服务地址
skywalking.grpc = ap-guangzhou.apm.tencentcs.com:11800
; 设置鉴权的token
skywalking.authentication = jnNURCx*******biKzgu
skywalking.error_handler_enable = 0
说明
更多配置信息可参见 SkyAPM-php-sdk/php.ini

步骤5:重启 php-fpm

方法一:将修改 php-fpm.conf 的配置项中启动方式为 daemonize = no方法二:使用 nohup 命令重启 php-fpm:
nohup /usr/local/services/php7/sbin/php-fpm > /usr/local/services/php7/log/php-fpm-output.log 2>&1 &

步骤6:请求后端服务验证是否接入成功

1. 请求您的服务,下列以用 Laravel 框架部署了一个简单的 HTTP 服务为例:
# curl "http://test.skywalking.com/getHelloWorld"
hello, skywalking
2. 使用 tcpdump 命令查看 11800 端口是否有数据包发送:
# tcpdump -i any -A -s0 -n -nn -l port 11800
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode 262144 bytes
3. 应用性能监控控制台 应用监控 > 应用列表应用详情查看是否有上报数据。