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

相关推荐
恋恋西风8 小时前
Qt 打开文件列表选择文件,实现拖拽方式打开文件,拖拽加载
开发语言·qt
闲人编程8 小时前
使用Python进行量化交易入门
开发语言·python·统计分析·lambda·量化·codecapsule
移远通信9 小时前
常见问题解答
开发语言·php
初见无风9 小时前
3.1 Lua代码中的元表与元方法
开发语言·lua·lua5.4
逻极10 小时前
Rust流程控制(上):if_else与match模式匹配
开发语言·后端·rust
小雨下雨的雨10 小时前
Rust专项——其他集合类型详解:BTreeMap、VecDeque、BinaryHeap
开发语言·后端·rust
渡我白衣10 小时前
C++世界的混沌边界:undefined_behavior
java·开发语言·c++·人工智能·深度学习·语言模型
剑海风云10 小时前
JDK 26:HTTP/3 支持已可在 HTTP 客户端 API 中使用
java·开发语言·http
下一站丶10 小时前
【JavaScript性能优化实战】
开发语言·javascript·性能优化