Розширення

Розширення додають можливості агенту без необхідності створювати окремий дистрибутив.

Вступ

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

Розглянемо інструментований клієнт бази даних, який створює span для кожного виклику бази даних і витягує дані з підключення до бази даних для надання атрибутів span. Нижче наведені приклади використання для цього сценарію, які можна вирішити за допомогою розширень:

  • “Я не хочу цей відрізок взагалі”:

    Створіть розширення для вимкнення вибраного інструментування, надаючи нові стандартні налаштування.

  • “Я хочу редагувати деякі атрибути, які не залежать від жодного екземпляра підключення до бази даних”:

    Створіть розширення, яке надає користувацький SpanProcessor.

  • “Я хочу редагувати деякі атрибути, і їх значення залежать від конкретного екземпляра підключення до бази даних”:

    Створіть розширення з новим інструментуванням, яке впроваджує власну пораду в той самий метод, що й оригінальне. Ви можете використовувати метод order, щоб забезпечити його виконання після оригінального інструментування та доповнити поточний відрізок новою інформацією.

  • “Я хочу видалити деякі атрибути”:

    Створіть розширення з користувацьким експортером або використовуйте функціональність фільтрації атрибутів в OpenTelemetry Collector.

  • “Мені не подобаються відрізки OTel. Я хочу змінити їх і їх життєвий цикл”:

    Створіть розширення, яке вимикає наявне інструментування та замінює його новим, яке впроваджує Advice в той самий (або кращий) метод, що й оригінальне інструментування. Ви можете написати свій Advice для цього і використовувати наявний Tracer безпосередньо або розширити його. Оскільки у вас є власний Advice, ви можете контролювати, який Tracer ви використовуєте.

Приклади розширень

Щоб отримати демонстрацію, як створити розширення для агента інструментування OpenTelemetry Java, зберіть і запустіть проєкт розширення.