Руководство по локальной отладке с помощью агента Datadog
22 марта 2023 г.Давайте начнем с того, «почему» вообще стоит заморачиваться с настройкой Datadog на локальном компьютере. Я могу поделиться своей мотивацией, чтобы настроить его
Мое серьезное «почему»: попытка разобраться в ненадежных тестах:
У нас был обширный набор комплексных тестов с широким охватом. Но, к сожалению, со временем тесты становились все более и более ненадежными. К моему ужасу, когда тесты проводились изолированно, они проходили. Когда мы запускали весь набор тестов, многие тесты начинали давать сбой. Журналы приложений, соответствующие тестам, должны помочь нам в отладке. Но я даже не мог понять, где начинаются и заканчиваются журналы для конкретного теста, не говоря уже о том, чтобы понять их смысл.
Datadog спешит на помощь 🦸!
В нашем проекте мы использовали Datadog для визуализации производственных журналов и нашли его очень полезным. . Вот тогда у меня было озарение! Что, если я настрою Datadog локально для анализа этих журналов? И это то, что вызвало содержание этого сообщения в блоге.
Наше приложение написано на Java, а моя локальная машина работает на MacOS. Вы можете настроить приведенные ниже шаги в соответствии с вашими потребностями.
Что вам нужно настроить:
- Зарегистрируйтесь в Datadog здесь. Наша задача здесь — только локальная отладка, поэтому бесплатной пробной версии должно быть достаточно.< /li>
- Агент Datadog — это программное обеспечение, которое отслеживает хост, на котором оно работает. В агенте можно настроить такие параметры, как имя службы, среда и т. д.
- dd-trace-java, клиентская Java-библиотека Datadog APM (мониторинг производительности приложений). .
dd-trace-java
— это jar-файл, содержащий API для автоматической или ручной trace< /a> и профиль приложений Java.
Шаг 1 — Процесс регистрации:
- После того, как вы укажете свой адрес электронной почты и другие данные, вам будет предложено выбрать стек технологий на следующей странице.
* после того, как вы нажмете «Далее», наступит самая важная часть. Вам будут даны инструкции по настройке агента. Моя локальная машина — MacOSX, поэтому я выбрал ее правильно. Запишите значения DD_API_KEY и DD_SITE, так как они будут использоваться на последующих этапах.
Шаг 2 — Установка агента Datadog:
Для MacOS вы можете установить через brew (менеджер пакетов для MacOS). Используйте приведенные здесь команды для установки. ¹
- Настройте
datadog-agent
, как показано ниже
- После выполнения описанного выше шага вам будет предложено «Готово» в веб-интерфейсе Datadog.
- Вам будет предложено добавить любые
интеграции
. Вы можете добавитьJava
,Docker
и т. д. (в соответствии с потребностями вашего проекта).
Шаг 3 — Установите трассировщик Datadog:
- Загрузите jar
dd-java-agent
из здесь< /a> ²
* Для вашего 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
* Если вы используете задачу gradle
, вы можете включить jvmArgs
, как показано ниже:
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:
- Чтобы включить потоковую передачу журналов в Datadog, следуйте инструкциям в веб-интерфейсе Datadog. ⁴
- Для
macOS
: каталог конфигурации находится в~/.datadog-agent/conf.d/java.d
, а файл находится в~/.datadog. -agent/conf.d/java.d/conf.yaml
- и теперь
журналы
должны начать передаваться в Datadog.
Несколько советов:
- Добавьте соответствующие журналы
отладки
в начале и в конце каждого метода в приложении. Это очень полезно при отладке.
* Добавлен механизм внедрения span id
и trace id
. Это замечательное спасение, и журналы помещаются в правильный контекст.⁵
Вывод:
После того, как агент Datadog был запущен локально, я смог просматривать все запросы в контексте.
И вуаля! Все мои сквозные тесты проходят успешно 🙂 Удачной регистрации!
Дополнительная информация:
- ¹В качестве альтернативы вы также можете загрузить пакет dmg< /strong> и установите его. Эту ссылку также можно получить на шаге «Настройка агента» выше (см. скриншот)
* ²Непосредственно загрузите jar dd-trace-java.
* ³ Начиная с JDK 11, мы можем использовать FlightRecorder
без какой-либо активации. Более подробную информацию можно найти здесь.
* ⁴Подробнее здесь.
* ⁵Если ваше приложение Java, вы можете использовать эту библиотеку spring-cloud-sleuth для добавления span_id
и trace_id
в запрос.
Оригинал