Сервіс котирувань

Цей сервіс відповідає за розрахунок вартості доставки, залежно від кількості предметів для надсилання. Сервіс котирувань викликається з Сервісу Доставки через HTTP.

Сервіс Котирувань реалізовано з використанням фреймворку Slim та php-di для управління Впровадженням Залежностей.

Інструментування PHP може відрізнятися при використанні іншого фреймворку.

Джерело сервісу котирувань

Трейси

Ініціалізація Трейсування

У цьому демо, SDK OpenTelemetry автоматично створюється як частина автозавантаження SDK, яке відбувається як частина автозавантаження composer.

Це увімкнено шляхом встановлення змінної середовища OTEL_PHP_AUTOLOAD_ENABLED=true.

require __DIR__ . '/../vendor/autoload.php';

Існує кілька способів створити або отримати Tracer, у цьому прикладі ми отримуємо його від глобального постачальника трейсерів, який був ініціалізований вище, як частина автозавантаження SDK:

$tracer = Globals::tracerProvider()->getTracer('manual-instrumentation');

Ручне створення відрізків

Створення відрізка вручну можна здійснити через Tracer. Типово відрізок буде дочірнім до активного відрізка в поточному контексті виконання:

$span = Globals::tracerProvider()
    ->getTracer('manual-instrumentation')
    ->spanBuilder('calculate-quote')
    ->setSpanKind(SpanKind::KIND_INTERNAL)
    ->startSpan();
/* розрахунок котирування */
$span->end();

Додавання атрибутів до відрізка

Ви можете отримати поточний відрізок за допомогою OpenTelemetry\API\Trace\Span.

$span = Span::getCurrent();

Додавання атрибутів до відрізка здійснюється за допомогою setAttribute на обʼєкті відрізка. У функції calculateQuote додаються 2 атрибути до childSpan.

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

Додавання подій до відрізка

Додавання подій до відрізка здійснюється за допомогою addEvent на обʼєкті відрізка. У маршруті getquote додаються події відрізка. Деякі події мають додаткові атрибути, інші — ні.

Додавання події відрізка без атрибутів:

$span->addEvent('Отримано запит на котирування, обробляємо його');

Додавання події відрізка з додатковими атрибутами:

$span->addEvent('Котирування оброблено, відповідь надіслано назад', [
    'app.quote.cost.total' => $payload
]);

Метрики

У цьому демо метрики генеруються пакетними процесорами трейсів та логів. Метрики описують внутрішній стан процесора, такі як кількість експортованих відрізків або логів, ліміт черги та використання черги.

Ви можете увімкнути метрики, встановивши змінну середовища OTEL_PHP_INTERNAL_METRICS_ENABLED на true.

Також генерується ручна метрика, яка рахує кількість створених котирувань, включаючи атрибут для кількості предметів.

Лічильник створюється з глобально налаштованого Постачальника Метрик і збільшується кожного разу, коли створюється котирування:

static $counter;
$counter ??= Globals::meterProvider()
    ->getMeter('quotes')
    ->createCounter('quotes', 'quotes', 'number of quotes calculated');
$counter->add(1, ['number_of_items' => $numberOfItems]);

Метрики накопичуються та експортуються періодично на основі значення, налаштованого в OTEL_METRIC_EXPORT_INTERVAL.

Логи

Сервіс котирувань генерує повідомлення в лог після розрахунку котирування. Пакет логування Monolog налаштований з Міст Логів, який перетворює логи Monolog у формат OpenTelemetry. Логи, надіслані до цього логера, будуть експортовані через глобально налаштований логер OpenTelemetry.


Востаннє змінено December 26, 2024: [uk] Ukrainian documentation for OpenTelemetry (2a3c5648)