让我们从“为什么”开始,甚至要费心在本地机器上设置 Datadog。我可以分享我设置它的动机
我们有一个广泛的端到端测试套件,覆盖率很高。但遗憾的是,随着时间的推移,测试变得越来越不稳定。令我沮丧的是,当测试单独运行时,它们会通过。当我们运行整个测试套件时,许多测试将开始失败。测试对应的应用日志应该可以帮助我们调试。但我什至无法理解特定测试的日志从哪里开始和结束,更不用说理解它们了。
我们一直在使用
我们的应用程序是用 Java 编写的,我的本地计算机在 MacOS 上运行。您可以调整以下步骤以满足您的需要。
dd-trace-java
是一个包含自动或手动 API 的 jar
在提供您的电子邮件 ID 和其他详细信息后,系统会提示您在下一页上选择您的技术栈。
单击“下一步”后,最重要的部分来了。您将获得“代理设置”说明。我的本地机器是 MacOSX,所以我选择得当。请记下DD_API_KEY和DD_SITE值,因为它们将在后续步骤中使用。
对于 MacOS,您可以通过安装
如下图自定义datadog-agent
完成上述步骤后,系统会要求您在 Datadog-web-UI 中“完成”。
integrations
。您可以添加Java
、 Docker
等(根据您的项目需要)。从下载dd-java-agent
jar
对于您的 Java 应用程序,请确保您使用的是带有内置FlightRecorder的 Java 版本。这是跟踪所必需的。 OpenJdK8 带有一个内置的FlightRecorder 。如果您使用的是 Oracle Java,则需要商业许可证才能使用 **FlightRecorder。**³
-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"]
macOS
— 配置目录是~/.datadog-agent/conf.d/java.d
,文件位于~/.datadog-agent/conf.d/java.d/conf.yaml
现在, logs
应该开始在 Datadog 中流动。
在应用程序中每个方法的开头和结尾添加适当的debug
日志。它在调试时非常有用。
添加一种机制来注入span id
和trace id
。这是一个了不起的救星,并将日志放在适当的上下文中。⁵
一旦我在本地启动并运行了 Datadog 代理,我就能够根据上下文查看所有请求。
瞧!我所有的端到端测试现在都通过了 🙂 快乐的日志记录!
¹或者,您也可以下载
²直接下载
³ 从 JDK 11 开始,我们可以在不激活任何东西的情况下使用FlightRecorder
。可以找到更多详细信息
⁴更多细节是
⁵如果你的应用程序是 Java,你可以使用这个库span_id
和trace_id
添加到请求中。