php安装skywalking_agent

php的一个项目要做压测,客户要求安装skywalking监测业务。

需要安装对应的php扩展,叫skywalking_agent。实

现本地写入分析日志,并通过aop传到服务端。

网上找了很多方式最后都没成功,自己摸索后记录, 亲测可用。

一.安装依赖

bash 复制代码
apt update
apt install gcc make llvm-13-dev libclang-13-dev protobuf-c-compiler protobuf-compiler

二.安装Rust

两种方式二选一,我用的第二种

1.一键安装
bash 复制代码
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain none
2.编译安装
bash 复制代码
#手动下载安装包
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分钟安装成功

bash 复制代码
pecl install skywalking_agent
2.编译安装

准备

bash 复制代码
#准备工作
# 设置国内镜像源,否则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

安装

bash 复制代码
git clone --recursive https://github.com/apache/skywalking-php.git
cd skywalking-php

phpize
./configure
make
make install

四.配置php.ini

bash 复制代码
[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');"判断版本

bash 复制代码
<?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";
?>

结果

bash 复制代码
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

相关推荐
BingoGo1 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack1 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack4 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理4 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1234 天前
matlab画图工具
开发语言·matlab
dustcell.4 天前
haproxy七层代理
java·开发语言·前端