Сервіс оплати
Цей сервіс відповідає за обробку платежів кредитними картками для замовлень. Він поверне помилку, якщо кредитна картка недійсна або платіж не може бути оброблений.
Інструментування без коду
Цей сервіс на Node.js використовує інструментування без коду OpenTelemetry Node.js, налаштовуючись шляхом підключення модуля @opentelemetry/auto-instrumentations-node/register під час запуску. Точки доступу експорту, атрибути ресурсів та назва сервісу автоматично встановлюються на основі змінних середовища. Це можна зробити у скрипті запуску package.json сервісу або через NODE_OPTIONS.
"scripts": {
"start": "node --require @opentelemetry/auto-instrumentations-node/register index.js"
}
Трейси
Додавання атрибутів до автоінструментованих відрізків
Під час виконання автоінструментованого коду ви можете отримати поточний відрізок з контексту.
const span = opentelemetry.trace.getActiveSpan();
Додавання атрибутів до відрізка здійснюється за допомогою функції setAttributes на обʼєкті відрізка. У функції chargeServiceHandler атрибут додається до відрізка як анонімний обʼєкт (map) для пари ключ/значення атрибута.
span?.setAttributes({
'demo.payment.amount': parseFloat(`${amount.units}.${amount.nanos}`).toFixed(
2,
),
});
Виключення та статус відрізків
Ви можете використовувати функцію recordException обʼєкта відрізка для створення події відрізка з повним стеком обробленої помилки. При записі виключення також обовʼязково встановіть статус відрізка відповідно. Ви можете побачити це у функції charge у файлі charge.js.
span.recordException(err);
span.setStatus({ code: SpanStatusCode.ERROR, message: err.message });
Метрики
Створення лічильників та інструментів
Лічильники можуть бути створені за допомогою пакету @opentelemetry/api. Ви можете створити лічильники, як показано нижче, а потім використовувати створений лічильник для створення інструментів.
const { metrics } = require('@opentelemetry/api');
const meter = metrics.getMeter('payment');
const transactionsCounter = meter.createCounter('demo.payment.transactions');
Лічильники та інструменти повинні залишатися. Це означає, що ви повинні отримати лічильник або інструмент один раз, а потім використовувати його за потреби, якщо це можливо.
Логи
TBD
Baggage
OpenTelemetry Baggage використовується у цьому сервісі для перевірки, чи є запит синтетичним (від генератора навантаження). Синтетичні запити не будуть оплачуватись, що вказується атрибутом відрізка. Файл charge.js, який виконує фактичну обробку платежів, має логіку для перевірки baggage.
// перевірити baggage на synthetic_request=true та додати атрибут charged відповідно
const baggage = propagation.getBaggage(context.active());
if (
baggage &&
baggage.getEntry('synthetic_request') &&
baggage.getEntry('synthetic_request').value === 'true'
) {
span.setAttribute('demo.payment.charged', false);
} else {
span.setAttribute('demo.payment.charged', true);
}
Зворотний зв’язок
Чи була ця сторінка корисною?
Дякуємо. Ми цінуємо ваші відгуки!
Будь ласка, дайте нам знати як ми можемо покращити цю сторінку. Ми цінуємо ваші відгуки!