paint-brush
Datadog Agent 本地调试指南经过@hacker5281989
5,856 讀數
5,856 讀數

Datadog Agent 本地调试指南

经过 Dhivya Dandapani4m2023/03/21
Read on Terminal Reader

太長; 讀書

Datadog 工具用于可视化生产日志。它可以安装在 MacOSX 机器上。该工具是用 Java 编写的,可用于监视 Java 应用程序。它是免费的,可在公司网站上免费获得。以下说明适用于本地安装。
featured image - Datadog Agent 本地调试指南
Dhivya Dandapani HackerNoon profile picture
0-item
1-item

让我们从“为什么”开始,甚至要费心在本地机器上设置 Datadog。我可以分享我设置它的动机

我强烈的“为什么”:试图理解这些不稳定的测试:

我们有一个广泛的端到端测试套件,覆盖率很高。但遗憾的是,随着时间的推移,测试变得越来越不稳定。令我沮丧的是,当测试单独运行时,它们会通过。当我们运行整个测试套件时,许多测试将开始失败。测试对应的应用日志应该可以帮助我们调试。但我什至无法理解特定测试的日志从哪里开始和结束,更不用说理解它们了。


Datadog 来救援🦸!

我们一直在使用数据狗在我们的项目中可视化生产日志,我们发现它非常有用。这时候我顿悟了!如果我在本地设置 Datadog 来剖析这些日志会怎样?这就是触发这篇博文内容的原因。


我们的应用程序是用 Java 编写的,我的本地计算机在 MacOS 上运行。您可以调整以下步骤以满足您的需要。


你需要设置什么:

设置所需的组件

  1. 注册 Datadog这里.我们这里的范围只是本地调试,所以免费试用应该足够了。
  2. Datadog Agent 是监控其运行所在主机的软件。可以在代理中进行服务名称、环境等设置。
  3. dd-trace-java ,Datadog 的 APM(App Performance Monitoring)客户端 Java 库。 dd-trace-java是一个包含自动或手动 API 的 jar痕迹轮廓Java 应用程序。


第 1 步 — 注册过程:

  • 在提供您的电子邮件 ID 和其他详细信息后,系统会提示您在下一页上选择您的技术栈。


  • 单击“下一步”后,最重要的部分来了。您将获得“代理设置”说明。我的本地机器是 MacOSX,所以我选择得当。请记下DD_API_KEYDD_SITE值,因为它们将在后续步骤中使用。


安装代理的说明

第 2 步 — Datadog 代理安装:

对于 MacOS,您可以通过安装酿造(MacOS 的包管理器)。使用此处给出的安装命令. ¹


打开下载的 brew pkg 并使用向导安装

  • 如下图自定义datadog-agent


自定义本地数据狗代理设置

  • 完成上述步骤后,系统会要求您在 Datadog-web-UI 中“完成”。


提示完成 Datadog 设置

  • 系统将提示您添加任何integrations 。您可以添加JavaDocker等(根据您的项目需要)。

第 3 步 — 安装 Datadog 跟踪器:

  • 从下载dd-java-agent jar这里²


  • 对于您的 Java 应用程序,请确保您使用的是带有内置FlightRecorder的 Java 版本。这是跟踪所必需的。 OpenJdK8 带有一个内置的FlightRecorder 。如果您使用的是 Oracle Java,则需要商业许可证才能使用 **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 


Java 应用程序的 JVM args



  • 如果您使用的是gradle任务,则可以包含如下的jvmArgs

Gradle 任务的 JVM args


 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,请按照 Datadog Web UI 中的说明进行操作。 ⁴

配置日志源

  • 对于macOS — 配置目录是~/.datadog-agent/conf.d/java.d ,文件位于~/.datadog-agent/conf.d/java.d/conf.yaml

来自本地的示例“conf.yaml”文件

  • 现在, logs应该开始在 Datadog 中流动。


数据狗日志


一些技巧:

  • 在应用程序中每个方法的开头和结尾添加适当的debug日志。它在调试时非常有用。


  • 添加一种机制来注入span idtrace id 。这是一个了不起的救星,并将日志放在适当的上下文中。⁵

结论:

一旦我在本地启动并运行了 Datadog 代理,我就能够根据上下文查看所有请求。

我的测试——调试之前和使用 Datadog 之后

瞧!我所有的端到端测试现在都通过了 🙂 快乐的日志记录!

附加信息:

  • ¹或者,您也可以下载药物包并安装它。这个链接也可以在上面的“代理设置”步骤中获得(参考截图)


  • ²直接下载dd-trace-java罐。


  • ³ 从 JDK 11 开始,我们可以在不激活任何东西的情况下使用FlightRecorder 。可以找到更多详细信息这里.


  • ⁴更多细节是这里.


  • ⁵如果你的应用程序是 Java,你可以使用这个库春云侦探用于将span_idtrace_id添加到请求中。