Телеметрія вебсайту
Примітки щодо дизайну для функції телеметрії вебсайту.
Шлюз розгортання
Завантажуйте трасувальник для кожного розгортання сайту проєкту на Netlify і жодного іншого розгортання. Частковий шаблон body-end розпізнає цей сайт за змінною збірки SITE_NAME, яку встановлює Netlify.
- Попередні перегляди мають трасуватися. Обмеження за ідентичністю сайту, а не за середовищем Hugo, ставить виробництво, deploy preview і розгортання гілок в однакові умови, тож зміна в трасуванні видно в її deploy preview.
- Форки не мають трасуватися. Форк, розгорнутий на власному сайті Netlify, має власний
SITE_NAME, тож він успадковує шлюз, але не трасування. - Це простий шлюз розгортання. Значення Netlify не можна змінити, але будь-хто, хто контролює власну збірку, може встановити будь-яку змінну. Відхилення сфабрикованої телеметрії є завданням збирача, а не сайту.
- Незаданий
SITE_NAMEзакриває шлюз без сигналу; перейменування сайту Netlify дало б той самий результат, доки шаблон не наздожене. Локальна збірка долучається, встановивши змінну (Build та serve).
Менеджер контексту
Використовуйте StackContextManager з @opentelemetry/sdk-trace, пакунка, який посібник з міграції на 3.x JS SDK називає заміною sdk-trace-web, а не ZoneContextManager.
zone.jsперехоплює поширені асинхронні API у браузері (Promise, таймери, обробники подій) і додає близько 13 КБ після gzip-стиснення до кожної сторінки. Його поширення контексту через зворотні виклики справжнє, але воно не може перетнути нативніasync/await, а статичному сайту з одним-двома викликамиfetchна сторінку це не потрібно.
Контекст не поширюється автоматично через await чи в незвʼязаний зворотний виклик: відрізок, розпочатий там, є власним коренем, якщо код явно не передає батьківський контекст, як це робить інструментування fetch для свого preflight-відрізка. Для телеметрії цього сайту це прийнятно.
Збирач
Збирач, що стоїть за експортом, має іншого власника й інший цикл випуску, ніж сайт, тож його версія OTLP не привʼязана до версії експортера сайту, і оновлення експортера може надсилати поля, які збирач ще не приймає. Збій експорту не впливає на сторінку. SDK не повідомляє про нього (діагностичний логер не налаштовано), тож єдиною ознакою є власний запис браузера про відхилений запит на панелі мережі DevTools (консолі Chromium також його логують, але Firefox ні); відрізки, які друкує консольний експортер, нічого не кажуть про те, чи прийняв їх збирач.