php安装skywalking_agent
php的一个项目要做压测,客户要求安装skywalking监测业务。
需要安装对应的php扩展,叫skywalking_agent。实
现本地写入分析日志,并通过aop传到服务端。
网上找了很多方式最后都没成功,自己摸索后记录, 亲测可用。
一.安装依赖
apt update
apt install gcc make llvm-13-dev libclang-13-dev protobuf-c-compiler protobuf-compiler
二.安装Rust
两种方式二选一,我用的第二种
1.一键安装
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain none
2.编译安装
#手动下载安装包
cd /tmp
wget https://download.csdn.net/download/xiantianga6883/92235985?spm=1011.2124.3001.6210# 解压并安装
tar -xzf rust-1.85.0-x86_64-unknown-linux-gnu.tar.gz
cd rust-1.85.0-x86_64-unknown-linux-gnu
./install.sh# 验证安装
rustc --version
三. 安装skywalking_agent扩展
1.一键安装
两种方式二选一,我用的第一种。较慢,等待了约10分钟安装成功
pecl install skywalking_agent

2.编译安装
准备
#准备工作
# 设置国内镜像源,否则Rust安装会很慢
export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup
export RUSTUP_UPDATE_ROOT=https://mirrors.tuna.tsinghua.edu.cn/rustup/rustup
#这三个不记得是否需要,先记录下,如后面报依赖缺失,则安装
apt install cargo
apt install libclang-13-dev -y
apt install protobuf-compiler protobuf-c-compiler -y
安装
git clone --recursive https://github.com/apache/skywalking-php.git
cd skywalking-phpphpize
./configure
make
make install
四.配置php.ini
[skywalking_agent]
extension = skywalking_agent.so; Enable skywalking_agent extension or not.
skywalking_agent.enable = On; Reporter type, optional values are `grpc`, `kafka` and `standalone`.
skywalking_agent.reporter_type = grpc; Log file path.
skywalking_agent.log_file = /tmp/skywalking-agent.log; Log level: one of `OFF`, `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`.
skywalking_agent.log_level = INFO; Address of skywalking oap server.
skywalking_agent.server_addr = 127.0.0.1:11800; Application service name.
skywalking_agent.service_name = hello-skywalking
重启php后,使用php -m,会出现skywalking_agent的扩展
五.测试
编写一个php文件,使用php test.php执行后,/tmp/skywalking-agent.log文件出现数据则为安装成功。
通过php -r "echo phpversion(‘skywalking_agent’);"判断版本
<?php
// cli_test.php - 命令行专用测试
if (php_sapi_name() !== 'cli') {die("请在命令行运行此脚本: php cli_test.php\n");
}echo "🚀 SkyWalking Agent CLI 测试\n";
echo str_repeat("=", 40) . "\n";// 检查扩展
if (!extension_loaded('skywalking_agent')) {echo "❌ 错误: SkyWalking Agent 扩展未加载\n";exit(1);
}echo "✅ SkyWalking Agent 扩展已加载\n";// 测试不同的操作类型
$operations = ['用户认证' => function() { usleep(200000); return true; },'订单处理' => function() { usleep(150000);// 模拟复杂业务逻辑for ($i = 0; $i < 1000; $i++) {$data = md5($i);}return true; },'支付网关' => function() { usleep(300000); return true; },'库存检查' => function() { usleep(100000); return true; },
];foreach ($operations as $name => $operation) {echo "🔧 执行: {$name}...";$start = microtime(true);$result = $operation();$time = round((microtime(true) - $start) * 1000, 2);echo " 完成 ({$time}ms)\n";
}echo "\n🎯 测试总结:\n";
echo " • 扩展状态: 正常\n";
echo " • 测试操作: " . count($operations) . " 个\n";
echo " • 完成时间: " . date('Y-m-d H:i:s') . "\n";
echo " 📊 数据应该已发送到 SkyWalking OAP 服务器\n\n";
?>
结果
root@0eae390c1223:/var/www/html# php test.php
🚀 SkyWalking Agent CLI 测试
========================================
✅ SkyWalking Agent 扩展已加载
🔧 执行: 用户认证... 完成 (200.73ms)
🔧 执行: 订单处理... 完成 (150.94ms)
🔧 执行: 支付网关... 完成 (300.41ms)
🔧 执行: 库存检查... 完成 (101.13ms)🎯 测试总结:• 扩展状态: 正常• 测试操作: 4 个• 完成时间: 2025-11-01 15:28:00📊 数据应该已发送到 SkyWalking OAP 服务器root@0eae390c1223:/var/www/html# cat /tmp/skywalking-agent.log
2025-11-01T07:29:56.839120018Z INFO skywalking_agent::module: Starting skywalking agent service_name="hello-skywalking" service_instance="149097978451131748529151934966909977422@172.17.0.2" skywalking_version=8 heartbeat_period=30 properties_report_period_factor=10
2025-11-01T07:29:56.843521457Z WARN connect: skywalking_php_worker::reporter::reporter_grpc: Connect to skywalking server failed, retry after 10s err=tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))
2025-11-01T07:29:56.873875437Z INFO skywalking_php_worker: Start to shutdown skywalking grpc reporter
2025-11-01T07:29:56.873926476Z INFO skywalking_php_worker: Remove socket file socket_file="/tmp/skywalking-agent/6428372f1697a.sock"
2025-11-01T07:30:02.288401136Z INFO skywalking_agent::module: Starting skywalking agent service_name="hello-skywalking" service_instance="302451706637838952077155886169438021799@172.17.0.2" skywalking_version=8 heartbeat_period=30 properties_report_period_factor=10
2025-11-01T07:30:02.29302433Z WARN connect: skywalking_php_worker::reporter::reporter_grpc: Connect to skywalking server failed, retry after 10s err=tonic::transport::Error(Transport, ConnectError(ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })))
2025-11-01T07:30:03.075440443Z INFO skywalking_php_worker: Start to shutdown skywalking grpc reporter
2025-11-01T07:30:03.075493982Z INFO skywalking_php_worker: Remove socket file socket_file="/tmp/skywalking-agent/64283734490da.sock"
Enjoy it
参考:
https://skywalking.apache.org/docs/skywalking-php/next/en/setup/service-agent/php-agent/readme/
https://blog.csdn.net/u012375924/article/details/140335494
