下面是使用 OpenTelemetry 为 PHP 应用自动埋点并接入可观测链路 OpenTelemetry 版的步骤。

1. 前提条件

2. 使用 Slim 框架 PHP 应用

这一步将演示如何构建一个简单的 Web 应用程序。如果您已经有编写好的 PHP 应用程序,这一步可跳过。
  • 应用初始化
mkdir project && cd project   composer init \  --no-interaction \  --stability beta \  --require slim/slim:"^4" \  --require slim/psr7:"^1" composer update
  • 编写应用代码 在 project 目录下创建一个index.php文件,添加如下内容,这段代码模拟扔骰子游戏,返回1-6之间的一个随机数。
<?php use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\ServerRequestInterface as Request; use Slim\Factory\AppFactory; require __DIR__ . '/vendor/autoload.php'; $app = AppFactory::create(); $app->get('/rolldice', function (Request $request, Response $response) {    $result = random_int(1,6);    $response->getBody()->write(strval($result));    return $response; }); $app->run();

3. 构建 OpenTelemetry PHP 插件

  • 下载构建 OpenTelemetry PHP 插件所需要的工具
# Linux(apt) sudo apt-get install gcc make autoconf # macOS brew install gcc make autoconf
  • 使用 pecl 构建 OpenTelemetry PHP 插件
pecl install opentelemetry-beta
  • 启用 OpenTelemetry PHP 插件,在 php.ini 文件中添加如下内容
注意:如果上一步PHP 扩展构建成功时输出了 "Extension opentelemetry enabled in php.ini",表明已经启用,这一步请跳过。
[opentelemetry] extension=opentelemetry.so
  • 验证 OpenTelemetry PHP 插件是否启用成功
php --ri opentelemetry # 预期输出 opentelemetry opentelemetry support => enabled extension version => 1.0.0beta6 # 版本可能不尽相同

4. 为步骤2中的应用程序添加自动埋点所需要的额外依赖

pecl install grpc # 这一步构建时间较长,可能在控制台输出较多内容 composer config allow-plugins.php-http/discovery false composer require \  open-telemetry/sdk \  open-telemetry/opentelemetry-auto-slim \  open-telemetry/exporter-otlp \  php-http/guzzle7-adapter \  open-telemetry/transport-grpc

5. 运行应用

  • 执行以下命令运行应用
env OTEL_PHP_AUTOLOAD_ENABLED=true \    OTEL_SERVICE_NAME=project \    OTEL_TRACES_EXPORTER=otlp \    OTEL_METRICS_EXPORTER=none \    OTEL_LOGS_EXPORTER=none \    OTEL_EXPORTER_OTLP_PROTOCOL=grpc \    OTEL_EXPORTER_OTLP_ENDPOINT=http://tracing-analysis-dc-bj-internal.aliyuncs.com:8090 \          OTEL_EXPORTER_OTLP_HEADERS=Authentication=atno35qauk@191d3eb960d6ecd_atno35qauk@53df7ad2afe8301 \    OTEL_PROPAGATORS=baggage,tracecontext \    php -S localhost:8080
  • 执行以下命令访问应用程序,OpenTelemetry PHP 插件会自动为应用生成调用链并上报至阿里云可观测链路OpenTelemetry版。
curl http://localhost:8080/rolldice

Jack_Ma
2 声望0 粉丝