Splunk Observability Cloud 用に PHP アプリケーションを手動でインストルメンテーションする 🔗
PHP 用 OpenTelemetryインストルメンテーションは、独自の手動インストルメンテーションを追加することで構築できるベースを提供します。自動インストルメンテーションと手動インストルメンテーションの両方を使うことで、アプリケーションやクライアント、フレームワークのロジックや機能をよりよくインストルメンテーションできるようになります。
カスタムスパンとトレースの作成 🔗
カスタムのスパンとトレースを作成するには、以下の手順に従ってください:
インストルメンテーションライブラリを使用しない場合は、
TracerProvider
エントリポイントを作成します:$tracerProvider = Globals::tracerProvider();
トレーサーを作成する:
// Acquire the tracer only where needed $tracer = $tracerProvider->getTracer( 'instrumentation-scope-name', // Name (Required) 'instrumentation-scope-version', // Version 'http://example.com/my-schema', // Schema URL ['foo' => 'bar'] // Resource attributes );
スパンの作成:
<?php public function roll($rolls) { $span = $this->tracer->spanBuilder("rollTheDice")->startSpan(); $result = []; for ($i = 0; $i < $rolls; $i++) { $result[] = $this->rollOnce(); } $span->end(); return $result; }
オプションで、スパンのメタデータを充実させる属性を設定します:
$span->setAttribute(TraceAttributes::CODE_FUNCTION, 'rollOnce'); $span->setAttribute(TraceAttributes::CODE_FILEPATH, __FILE__);
カスタムメトリクスの作成 🔗
カスタムメトリクスを作成するには、以下の手順に従います:
以下の依存関係を追加します:
use OpenTelemetry\SDK\Metrics\MetricExporter\ConsoleMetricExporterFactory; use OpenTelemetry\SDK\Metrics\MeterProvider; use OpenTelemetry\SDK\Metrics\MetricReader\ExportingReader; require 'vendor/autoload.php';
MeterProvider
エントリポイントを作成する:$meterProvider = Globals::meterProvider();
インストルメンテーションを作成します。例えば、ゲージ:
$queue = [ 'job1', 'job2', 'job3', ]; $reader = $meterProvider ->getMeter('demo_meter') ->createObservableGauge('queued', 'jobs', 'The number of jobs enqueued') ->observe(static function (ObserverInterface $observer) use (&$queue): void { $observer->observe(count($queue)); }); $reader->collect(); array_pop($queue); $reader->collect();