Руководство по локальной отладке с помощью агента Datadog

Руководство по локальной отладке с помощью агента Datadog

22 марта 2023 г.

Давайте начнем с того, «почему» вообще стоит заморачиваться с настройкой Datadog на локальном компьютере. Я могу поделиться своей мотивацией, чтобы настроить его

Мое серьезное «почему»: попытка разобраться в ненадежных тестах:

У нас был обширный набор комплексных тестов с широким охватом. Но, к сожалению, со временем тесты становились все более и более ненадежными. К моему ужасу, когда тесты проводились изолированно, они проходили. Когда мы запускали весь набор тестов, многие тесты начинали давать сбой. Журналы приложений, соответствующие тестам, должны помочь нам в отладке. Но я даже не мог понять, где начинаются и заканчиваются журналы для конкретного теста, не говоря уже о том, чтобы понять их смысл.

Datadog спешит на помощь 🦸!

В нашем проекте мы использовали Datadog для визуализации производственных журналов и нашли его очень полезным. . Вот тогда у меня было озарение! Что, если я настрою Datadog локально для анализа этих журналов? И это то, что вызвало содержание этого сообщения в блоге.

Наше приложение написано на Java, а моя локальная машина работает на MacOS. Вы можете настроить приведенные ниже шаги в соответствии с вашими потребностями.

Что вам нужно настроить:

components needed for set-up

  1. Зарегистрируйтесь в Datadog здесь. Наша задача здесь — только локальная отладка, поэтому бесплатной пробной версии должно быть достаточно.< /li>
  2. Агент Datadog — это программное обеспечение, которое отслеживает хост, на котором оно работает. В агенте можно настроить такие параметры, как имя службы, среда и т. д.
  3. dd-trace-java, клиентская Java-библиотека Datadog APM (мониторинг производительности приложений). . dd-trace-java — это jar-файл, содержащий API для автоматической или ручной trace< /a> и профиль приложений Java.

Шаг 1 — Процесс регистрации:

  • После того, как вы укажете свой адрес электронной почты и другие данные, вам будет предложено выбрать стек технологий на следующей странице.

* после того, как вы нажмете «Далее», наступит самая важная часть. Вам будут даны инструкции по настройке агента. Моя локальная машина — MacOSX, поэтому я выбрал ее правильно. Запишите значения DD_API_KEY и DD_SITE, так как они будут использоваться на последующих этапах.

instructions for installing the agent

Шаг 2 — Установка агента Datadog:

Для MacOS вы можете установить через brew (менеджер пакетов для MacOS). Используйте приведенные здесь команды для установки. ¹

open the downloaded brew pkg & install using the wizard

  • Настройте datadog-agent, как показано ниже

customise-local-datadog-agent-settings

  • После выполнения описанного выше шага вам будет предложено «Готово» в веб-интерфейсе Datadog.

prompt-to-finish-Datadog-setup

  • Вам будет предложено добавить любые интеграции. Вы можете добавить Java, Docker и т. д. (в соответствии с потребностями вашего проекта).

Шаг 3 — Установите трассировщик Datadog:

* Для вашего Java-приложения убедитесь, что вы используете версию Java со встроенным FlightRecorder. Это нужно для отслеживания. OpenJdK8 поставляется со встроенным FlightRecorder. Если вы используете Oracle Java, вам потребуется коммерческая лицензия для использования **FlightRecorder**³

.

Запуск вашего приложения:

  • добавьте параметры виртуальной машины для нашего Java-приложения:
-javaagent:"/Users/home/Downloads/dd-java-agent.jar" -Ddd.profiling.enabled=true -Ddd.logs.injection=true -Ddd.agent.port=8126 -Ddd.service=ecommerce-service -Ddd.env=local -XX:FlightRecorderOptions=stackdepth=256

JVM args for java application

* Если вы используете задачу gradle, вы можете включить jvmArgs, как показано ниже:

JVM args for Gradle task

jvmArgs = ["-javaagent:/Users/home/Downloads/dd-java-agent.jar", "-XX:FlightRecorderOptions=stackdepth=256", "-Ddd.profiling.enabled=true", "-Ddd.logs.injection=true", "-Ddd.agent.port=8126", "-Ddd.service=ecommerce-service", "-Ddd.env=local"]

* Теперь запустите приложение Java. Если трассировка выполняется правильно, вы должны увидеть следующие журналы:

Datadog tracing started — logs

Вход в Datadog:

  • Чтобы включить потоковую передачу журналов в Datadog, следуйте инструкциям в веб-интерфейсе Datadog. ⁴

configure log source

  • Для macOS: каталог конфигурации находится в ~/.datadog-agent/conf.d/java.d, а файл находится в ~/.datadog. -agent/conf.d/java.d/conf.yaml

an example ‘conf.yaml’ file from local

  • и теперь журналы должны начать передаваться в Datadog.

Datadog logs

Несколько советов:

  • Добавьте соответствующие журналы отладки в начале и в конце каждого метода в приложении. Это очень полезно при отладке.

* Добавлен механизм внедрения span id и trace id. Это замечательное спасение, и журналы помещаются в правильный контекст.⁵

Вывод:

После того, как агент Datadog был запущен локально, я смог просматривать все запросы в контексте.

My tests — before debugging & after using Datadog

И вуаля! Все мои сквозные тесты проходят успешно 🙂 Удачной регистрации!

Дополнительная информация:

* ²Непосредственно загрузите jar dd-trace-java.

* ³ Начиная с JDK 11, мы можем использовать FlightRecorder без какой-либо активации. Более подробную информацию можно найти здесь.

* ⁴Подробнее здесь.

* ⁵Если ваше приложение Java, вы можете использовать эту библиотеку spring-cloud-sleuth для добавления span_id и trace_id в запрос.


Оригинал