php手动接入opentelemetry(trace)

版本要求

 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值