Skip to content

Commit d1535f9

Browse files
brettmcpuckpuckjulianocosta89
authored
[quoteservice] manual metrics, logs export (#1519)
* [quoteservice] adding manual metrics to quoteservice - add a manual metric to the php quote service - randomize per-item cost to add some variability to quotes - bump dependencies to latest - fix a monolog deprecation - ensure logs are exported per the configured delay * update changelog * fix * rename variable * remove total cost from metric attributes * quote service returns randomized cost --------- Co-authored-by: Pierre Tessier <[email protected]> Co-authored-by: Juliano Costa <[email protected]>
1 parent a29c2a7 commit d1535f9

File tree

6 files changed

+22
-6
lines changed

6 files changed

+22
-6
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ the release.
1515
([#1507](https://github.com/open-telemetry/opentelemetry-demo/pull/1507))
1616
* [cartservice] update .NET package to 1.8.0 release
1717
([#1514](https://github.com/open-telemetry/opentelemetry-demo/pull/1514))
18+
* [quoteservice] add manual metric, export logs periodically
19+
([#1519](https://github.com/open-telemetry/opentelemetry-demo/pull/1519))
1820

1921
## 1.9.0
2022

src/quoteservice/app/routes.php

+10-1
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,20 @@ function calculateQuote($jsonObject): float
2626
throw new \InvalidArgumentException('numberOfItems not provided');
2727
}
2828
$numberOfItems = intval($jsonObject['numberOfItems']);
29-
$quote = round(8.90 * $numberOfItems, 2);
29+
$costPerItem = rand(400, 1000)/10;
30+
$quote = round($costPerItem * $numberOfItems, 2);
3031

3132
$childSpan->setAttribute('app.quote.items.count', $numberOfItems);
3233
$childSpan->setAttribute('app.quote.cost.total', $quote);
3334

3435
$childSpan->addEvent('Quote calculated, returning its value');
36+
37+
//manual metrics
38+
static $counter;
39+
$counter ??= Globals::meterProvider()
40+
->getMeter('quotes')
41+
->createCounter('quotes', 'quotes', 'number of quotes calculated');
42+
$counter->add(1, ['number_of_items' => $numberOfItems]);
3543
} catch (\Exception $exception) {
3644
$childSpan->recordException($exception);
3745
} finally {
@@ -55,6 +63,7 @@ function calculateQuote($jsonObject): float
5563
$span->addEvent('Quote processed, response sent back', [
5664
'app.quote.cost.total' => $data
5765
]);
66+
//exported as an opentelemetry log (see dependencies.php)
5867
$logger->info('Calculated quote', [
5968
'total' => $data,
6069
]);

src/quoteservice/app/settings.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
use App\Application\Settings\Settings;
1010
use App\Application\Settings\SettingsInterface;
1111
use DI\ContainerBuilder;
12-
use Monolog\Logger;
12+
use Psr\Log\LogLevel;
1313

1414
return function (ContainerBuilder $containerBuilder) {
1515
// Global Settings Object
@@ -22,7 +22,7 @@
2222
'logger' => [
2323
'name' => 'slim-app',
2424
'path' => 'php://stdout',
25-
'level' => Logger::DEBUG,
25+
'level' => LogLevel::DEBUG,
2626
],
2727
]);
2828
}

src/quoteservice/composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"monolog/monolog": "3.5.0",
1010
"open-telemetry/api": "1.0.3",
1111
"open-telemetry/sdk": "1.0.8",
12-
"open-telemetry/exporter-otlp": "1.0.3",
12+
"open-telemetry/exporter-otlp": "1.0.4",
1313
"open-telemetry/opentelemetry-auto-slim": "1.0.4",
1414
"open-telemetry/detector-container": "1.0.0",
1515
"open-telemetry/opentelemetry-logger-monolog": "1.0.0",

src/quoteservice/public/index.php

+6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use OpenTelemetry\API\Globals;
1212
use OpenTelemetry\SDK\Common\Configuration\Configuration;
1313
use OpenTelemetry\SDK\Common\Configuration\Variables;
14+
use OpenTelemetry\SDK\Logs\LoggerProviderInterface;
1415
use OpenTelemetry\SDK\Metrics\MeterProviderInterface;
1516
use OpenTelemetry\SDK\Trace\TracerProviderInterface;
1617
use Psr\Http\Message\ServerRequestInterface;
@@ -61,6 +62,11 @@
6162
$tracerProvider->forceFlush();
6263
});
6364
}
65+
if (($loggerProvider = Globals::loggerProvider()) instanceof LoggerProviderInterface) {
66+
Loop::addPeriodicTimer(Configuration::getInt(Variables::OTEL_BLRP_SCHEDULE_DELAY)/1000, function() use ($loggerProvider) {
67+
$loggerProvider->forceFlush();
68+
});
69+
}
6470
if (($meterProvider = Globals::meterProvider()) instanceof MeterProviderInterface) {
6571
Loop::addPeriodicTimer(Configuration::getInt(Variables::OTEL_METRIC_EXPORT_INTERVAL)/1000, function() use ($meterProvider) {
6672
$meterProvider->forceFlush();

test/tracetesting/shipping-service/quote.yaml

+1-2
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,4 @@ spec:
3737
selector: span[tracetest.span.type="general" name="Tracetest trigger"]
3838
assertions:
3939
- attr:tracetest.response.body | json_path '$.costUsd.currencyCode' = "USD"
40-
- attr:tracetest.response.body | json_path '$.costUsd.units' = 17
41-
- attr:tracetest.response.body | json_path '$.costUsd.nanos' = 800000000
40+
- attr:tracetest.response.body | json_path '$.costUsd.units' > 0

0 commit comments

Comments
 (0)