From 1b63a3b1c31c387a373497cf94042546fa4d4f72 Mon Sep 17 00:00:00 2001 From: Brett McBride Date: Wed, 17 May 2023 10:41:55 +1000 Subject: [PATCH] adding console metric exporter (#1005) allow the existing metric exporter to be created from env vars, by creating a factory and registering it against 'console'. Now, OTEL_METRICS_EXPORTER=console will create a metrics provider with console output. Note that it lives in contrib/otlp, since it uses the existing otlp converters. --- .../exporters/console_from_factory.php | 23 +++++++++++++++++++ examples/metrics/exporters/otlp_grpc.php | 1 - examples/metrics/exporters/otlp_http.php | 1 - examples/metrics/exporters/stream.php | 1 - .../Otlp/ConsoleMetricExporterFactory.php | 19 +++++++++++++++ src/Contrib/Otlp/_register.php | 1 + .../Otlp/ConsoleMetricExporterFactoryTest.php | 21 +++++++++++++++++ 7 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 examples/metrics/exporters/console_from_factory.php create mode 100644 src/Contrib/Otlp/ConsoleMetricExporterFactory.php create mode 100644 tests/Unit/Contrib/Otlp/ConsoleMetricExporterFactoryTest.php diff --git a/examples/metrics/exporters/console_from_factory.php b/examples/metrics/exporters/console_from_factory.php new file mode 100644 index 00000000..58628075 --- /dev/null +++ b/examples/metrics/exporters/console_from_factory.php @@ -0,0 +1,23 @@ +create(); + +$meter = $meterProvider->getMeter('io.opentelemetry.contrib.php'); +$hist = $meter ->createHistogram('example', 'bytes', 'The number of bytes received.'); +for ($i=0; $i<=5000; $i++) { + $hist->record(rand(0, 1024)); +} + +$meterProvider->shutdown(); diff --git a/examples/metrics/exporters/otlp_grpc.php b/examples/metrics/exporters/otlp_grpc.php index b7dff237..36c37e9d 100644 --- a/examples/metrics/exporters/otlp_grpc.php +++ b/examples/metrics/exporters/otlp_grpc.php @@ -20,7 +20,6 @@ $reader = new ExportingReader( new MetricExporter( (new GrpcTransportFactory())->create('http://collector:4317' . OtlpUtil::method(Signals::METRICS)) ), - $clock ); $metricsGenerator = new ExampleMetricsGenerator($reader, $clock); diff --git a/examples/metrics/exporters/otlp_http.php b/examples/metrics/exporters/otlp_http.php index 0bd23b4b..d546029d 100644 --- a/examples/metrics/exporters/otlp_http.php +++ b/examples/metrics/exporters/otlp_http.php @@ -15,7 +15,6 @@ $reader = new ExportingReader( new MetricExporter( PsrTransportFactory::discover()->create('http://collector:4318/v1/metrics', \OpenTelemetry\Contrib\Otlp\ContentTypes::JSON) ), - $clock ); $metricsGenerator = new ExampleMetricsGenerator($reader, $clock); diff --git a/examples/metrics/exporters/stream.php b/examples/metrics/exporters/stream.php index 84f6c0e8..bd4ec591 100644 --- a/examples/metrics/exporters/stream.php +++ b/examples/metrics/exporters/stream.php @@ -15,7 +15,6 @@ $reader = new ExportingReader( new MetricExporter( new StreamTransport(STDOUT, 'application/x-ndjson') ), - $clock ); $metricsGenerator = new ExampleMetricsGenerator($reader, $clock); diff --git a/src/Contrib/Otlp/ConsoleMetricExporterFactory.php b/src/Contrib/Otlp/ConsoleMetricExporterFactory.php new file mode 100644 index 00000000..b8e82e3c --- /dev/null +++ b/src/Contrib/Otlp/ConsoleMetricExporterFactory.php @@ -0,0 +1,19 @@ +create('php://stdout', 'application/x-ndjson'); + + return new MetricExporter($transport); + } +} diff --git a/src/Contrib/Otlp/_register.php b/src/Contrib/Otlp/_register.php index b3acdc3a..7248f3e1 100644 --- a/src/Contrib/Otlp/_register.php +++ b/src/Contrib/Otlp/_register.php @@ -3,6 +3,7 @@ declare(strict_types=1); \OpenTelemetry\SDK\Registry::registerSpanExporterFactory('otlp', \OpenTelemetry\Contrib\Otlp\SpanExporterFactory::class); \OpenTelemetry\SDK\Registry::registerMetricExporterFactory('otlp', \OpenTelemetry\Contrib\Otlp\MetricExporterFactory::class); +\OpenTelemetry\SDK\Registry::registerMetricExporterFactory('console', \OpenTelemetry\Contrib\Otlp\ConsoleMetricExporterFactory::class); \OpenTelemetry\SDK\Registry::registerTransportFactory('http', \OpenTelemetry\Contrib\Otlp\OtlpHttpTransportFactory::class); diff --git a/tests/Unit/Contrib/Otlp/ConsoleMetricExporterFactoryTest.php b/tests/Unit/Contrib/Otlp/ConsoleMetricExporterFactoryTest.php new file mode 100644 index 00000000..a117890e --- /dev/null +++ b/tests/Unit/Contrib/Otlp/ConsoleMetricExporterFactoryTest.php @@ -0,0 +1,21 @@ +create(); + $this->assertInstanceOf(MetricExporter::class, $exporter); + } +}