让我们从“为什么”开始,甚至要费心在本地机器上设置 Datadog。我可以分享我设置它的动机 我强烈的“为什么”:试图理解这些不稳定的测试: 我们有一个广泛的端到端测试套件,覆盖率很高。但遗憾的是,随着时间的推移,测试变得越来越不稳定。令我沮丧的是,当测试单独运行时,它们会通过。当我们运行整个测试套件时,许多测试将开始失败。测试对应的应用日志应该可以帮助我们调试。但我什至无法理解特定测试的日志从哪里开始和结束,更不用说理解它们了。 Datadog 来救援🦸! 我们一直在使用 在我们的项目中可视化生产日志,我们发现它非常有用。这时候我顿悟了!如果我在本地设置 Datadog 来剖析这些日志会怎样?这就是触发这篇博文内容的原因。 数据狗 我们的应用程序是用 Java 编写的,我的本地计算机在 MacOS 上运行。您可以调整以下步骤以满足您的需要。 你需要设置什么: 注册 Datadog .我们这里的范围只是本地调试,所以 应该足够了。 这里 免费试用 Datadog Agent 是 可以在代理中进行服务名称、环境等设置。 监控其运行所在主机的软件。 ,Datadog 的 APM(App Performance Monitoring)客户端 Java 库。 是一个包含自动或手动 API 的 jar 和 Java 应用程序。 dd-trace-java dd-trace-java 痕迹 轮廓 第 1 步 — 注册过程: 在提供您的电子邮件 ID 和其他详细信息后,系统会提示您在下一页上选择您的技术栈。 单击“下一步”后,最重要的部分来了。您将获得“代理设置”说明。我的本地机器是 MacOSX,所以我选择得当。请记下 和 值,因为它们将在后续步骤中使用。 DD_API_KEY DD_SITE 第 2 步 — Datadog 代理安装: 对于 MacOS,您可以通过安装 (MacOS 的包管理器)。使用 . ¹ 酿造 此处给出的安装命令 如下图自定义 datadog-agent 完成上述步骤后,系统会要求您在 Datadog-web-UI 中“完成”。 系统将提示您添加任何 。您可以添加 、 等(根据您的项目需要)。 integrations Java Docker 第 3 步 — 安装 Datadog 跟踪器: 从下载 jar ² dd-java-agent 这里 对于您的 Java 应用程序,请确保您使用的是带有内置 的 Java 版本。这是跟踪所必需的。 OpenJdK8 带有一个内置的 。如果您使用的是 Oracle Java,则需要商业许可证才能使用 **FlightRecorder。**³ FlightRecorder FlightRecorder 运行您的应用程序: 为我们的 java 应用程序添加 VM 选项: -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 Web UI 中的说明进行操作。 ⁴ 对于 — 配置目录是 ,文件位于 macOS ~/.datadog-agent/conf.d/java.d ~/.datadog-agent/conf.d/java.d/conf.yaml 现在, 应该开始在 Datadog 中流动。 logs 一些技巧: 在应用程序中每个方法的开头和结尾添加适当的 日志。它在调试时非常有用。 debug 添加一种机制来注入 和 。这是一个了不起的救星,并将日志放在适当的上下文中。⁵ span id trace id 结论: 一旦我在本地启动并运行了 Datadog 代理,我就能够根据上下文查看所有请求。 瞧!我所有的端到端测试现在都通过了 🙂 快乐的日志记录! 附加信息: ¹或者,您也可以下载 并安装它。这个链接也可以在上面的“代理设置”步骤中获得(参考截图) 药物包 ²直接下载 罐。 dd-trace-java ³ 从 JDK 11 开始,我们可以在不激活任何东西的情况下使用 。可以找到更多详细信息 . FlightRecorder 这里 ⁴更多细节是 . 这里 ⁵如果你的应用程序是 Java,你可以使用这个库 用于将 和 添加到请求中。 春云侦探 span_id trace_id