38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?php
 | 
						|
 | 
						|
declare(strict_types=1);
 | 
						|
 | 
						|
use OpenTelemetry\API\Metrics\ObserverInterface;
 | 
						|
use OpenTelemetry\SDK\Metrics\Data\Temporality;
 | 
						|
use OpenTelemetry\SDK\Metrics\MeterProvider;
 | 
						|
use OpenTelemetry\SDK\Metrics\MetricExporter\ConsoleMetricsExporter;
 | 
						|
use OpenTelemetry\SDK\Metrics\MetricReader\ExportingReader;
 | 
						|
use OpenTelemetry\SDK\Resource\ResourceInfoFactory;
 | 
						|
 | 
						|
require 'vendor/autoload.php';
 | 
						|
 | 
						|
/**
 | 
						|
 * Basic async/observable metrics generation example. This uses the console
 | 
						|
 * metrics exporter to print metrics out in a human-readable format (but does
 | 
						|
 * not require protobuf or the OTLP exporter)
 | 
						|
 */
 | 
						|
 | 
						|
$reader = new ExportingReader(
 | 
						|
    new ConsoleMetricsExporter(Temporality::DELTA)
 | 
						|
);
 | 
						|
 | 
						|
$meterProvider = MeterProvider::builder()
 | 
						|
    ->setResource(ResourceInfoFactory::emptyResource())
 | 
						|
    ->addReader($reader)
 | 
						|
    ->build();
 | 
						|
 | 
						|
$meterProvider
 | 
						|
    ->getMeter('demo_meter')
 | 
						|
    ->createObservableGauge('number', 'items', 'Random number')
 | 
						|
    ->observe(static function (ObserverInterface $observer): void {
 | 
						|
        $observer->observe(random_int(0, 256));
 | 
						|
    });
 | 
						|
 | 
						|
//metrics are collected every time `collect()` is called
 | 
						|
$reader->collect();
 |