版本要求
PHP sdk要求 7.4,
自动版本最低要求 8.0+.
php -v
composer -v
安装php及composer(针对外网机器)
(1)修改yum源为aliyun
yum install -y wget
mv /etc/yum.repos.d /etc/yum.repos.d.backup
mkdir -p /etc/yum.repos.d
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install epel-release
yum -y install https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm
yum -y install sudo
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/epel-testing.repo http://mirrors.aliyun.com/repo/epel-testing.repo
yum clean all
yum makecache
yum repolist
yum update
(2)安装php
sudo yum repolist all |grep php //查看到目前仓库中有的php版本
sudo yum-config-manager --enable remi-php82//切换 PHP8 remi 源
sudo yum install php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json php-redis --skip-broken
验证: php -v
(3)安装composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
验证:composer -v
另:
composer使用--
composer diagnose,
composer clear
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ --设置镜像地址
composer config -g --unset repos.packagist ---取消设置镜像地址
接入
1>示例接入GettingStarted.php
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use OpenTelemetry\SDK\Trace\SpanExporter\ConsoleSpanExporterFactory;
use OpenTelemetry\SDK\Trace\SpanProcessor\SimpleSpanProcessor;
use OpenTelemetry\SDK\Trace\TracerProvider;
echo 'Starting ConsoleSpanExporter' . PHP_EOL;
$tracerProvider = new TracerProvider(
new SimpleSpanProcessor(
(new ConsoleSpanExporterFactory())->create()
)
);
$tracer = $tracerProvider->getTracer('io.opentelemetry.contrib.php');
$rootSpan = $tracer->spanBuilder('root')->startSpan();
$rootScope = $rootSpan->activate();
try {
$span1 = $tracer->spanBuilder('foo')->startSpan();
$scope = $span1->activate();
try {
$span2 = $tracer->spanBuilder('bar')->startSpan();
echo 'OpenTelemetry welcomes PHP' . PHP_EOL;
} finally {
$span2->end();
}
} finally {
$span1->end();
$scope->detach();
}
$rootSpan->end();
$rootScope->detach();
安装对应依赖:
(1)安装 [HTTP Factories (PSR17)] and a [php-http/async-client]的依赖
composer require "php-http/guzzle7-adapter"(2)安装依赖open-telemetry/sdk
composer require open-telemetry/sdk
执行php
php GettingStarted.php
输出:
Starting ConsoleSpanExporter
OpenTelemetry welcomes PHP
2>示例接入GettingStarted2.php(导出到collector http)
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\HttpFactory;
use OpenTelemetry\Contrib\Otlp\OtlpHttpTransportFactory;
use OpenTelemetry\Contrib\Otlp\SpanExporter;
use OpenTelemetry\SDK\Trace\SpanExporter\ConsoleSpanExporter;
use OpenTelemetry\SDK\Trace\SpanProcessor\SimpleSpanProcessor;
use OpenTelemetry\SDK\Trace\TracerProvider;
echo 'Starting OTLP/http Exporter' . PHP_EOL;
$transport = (new OtlpHttpTransportFactory())->create('http://collector:4318/v1/traces', 'application/x-protobuf');
$exporter = new SpanExporter($transport);
$tracerProvider = new TracerProvider(
new SimpleSpanProcessor(
$exporter
)
);
$tracer = $tracerProvider->getTracer('io.opentelemetry.contrib.php');
$rootSpan = $tracer->spanBuilder('root')->startSpan();
$rootSpan->activate();
try {
$span1 = $tracer->spanBuilder('foo')->startSpan();
$scope = $span1->activate();
try {
$span2 = $tracer->spanBuilder('bar')->startSpan();
echo 'OpenTelemetry welcomes PHP' . PHP_EOL;
} finally {
$span2->end();
}
} finally {
$span1->end();
$scope->detach();
}
$rootSpan->end();
$rootScope->detach();
安装对应依赖:
composer require psr/http-client
composer require open-telemetry/exporter-otlp
执行:
php GettingStarted2.php
输出并查看远端数据:
Starting OtlpHttpExporter
OpenTelemetry welcomes PHP
3> 示例接入GettingStarted3.php(导出到collector grpc)
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use OpenTelemetry\API\Common\Signal\Signals;
use OpenTelemetry\Contrib\Grpc\GrpcTransportFactory;
use OpenTelemetry\Contrib\Otlp\OtlpUtil;
use OpenTelemetry\Contrib\Otlp\SpanExporter;
use OpenTelemetry\SDK\Trace\SpanProcessor\SimpleSpanProcessor;
use OpenTelemetry\SDK\Trace\TracerProvider;
$transport = (new GrpcTransportFactory())->create('http://collector:4317' . OtlpUtil::method(Signals::TRACE));
$exporter = new SpanExporter($transport);
echo 'Starting OTLP/grpc Exporter' . PHP_EOL;
$tracerProvider = new TracerProvider(
new SimpleSpanProcessor(
$exporter
)
);
$tracer = $tracerProvider->getTracer('io.opentelemetry.contrib.php');
$rootSpan = $tracer->spanBuilder('root')->startSpan();
$rootSpan->activate();
try {
$span1 = $tracer->spanBuilder('foo')->startSpan();
$scope = $span1->activate();
try {
$span2 = $tracer->spanBuilder('bar')->startSpan();
echo 'OpenTelemetry welcomes PHP' . PHP_EOL;
} finally {
$span2->end();
}
} finally {
$span1->end();
$scope->detach();
}
$rootSpan->end();
$rootScope->detach();
安装对应依赖:
composer require svk/yc-grpc-injector //安装open-telemetry/transport-grpc需要安装ext-grpc相关扩展包
composer require open-telemetry/transport-grpc:"0.0.17" //试了多个最新版本,目前0.0.17能成功
composer require open-telemetry/api
composer require open-telemetry/sdk-contrib
执行:
php GettingStarted2.php
参考:
https://opentelemetry.io/docs/instrumentation/php/exporters/
https://packagist.org/packages/open-telemetry/
https://blog.csdn.net/ecba1988/article/details/109991911