跳到主要内容

Micrometer Datadog

DeepSeek V3 中英对照 Datadog Micrometer Datadog

Datadog 是一个基于维度的时间序列 SaaS 平台,内置了仪表盘和告警功能。

1. 安装与配置

Micrometer 支持通过其 HTTP API 或通过 StatsD 注册表 使用 DogStatsD 将指标直接发送到 Datadog。如果在这两者之间选择,API 方法要高效得多。

备注

如果您在使用 Datadog API 方法时遇到速率限制问题,请尝试使用 DogStatsD 方法或 Datadog 文档中描述的其他替代方案

建议使用 Micrometer(或您的框架,如果有)提供的 BOM,您可以在此处查看如何配置它 here。以下示例假设您正在使用 BOM。

1.1. 直接到 Datadog API 的方法

1.1.1. Gradle

配置 好 BOM 之后,添加以下依赖:

implementation 'io.micrometer:micrometer-registry-datadog'
groovy
备注

由于该依赖项的版本由 BOM 定义,因此不需要指定版本。

1.1.2. Maven

在 BOM 配置 完成后,添加以下依赖项:

<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-datadog</artifactId>
</dependency>
xml
备注

由于该依赖项的版本由 BOM 定义,因此不需要指定版本。

指标经过速率聚合后定期推送到 datadoghq。注册表执行的速率聚合生成的数据集与 dogstatsd 生成的数据集类似。

DatadogConfig config = new DatadogConfig() {
@Override
public Duration step() {
return Duration.ofSeconds(10);
}

@Override
public String get(String k) {
return null; // accept the rest of the defaults
}
};
MeterRegistry registry = new DatadogMeterRegistry(config, Clock.SYSTEM);
java

DatadogConfig 是一个包含一组默认方法的接口。如果在 get(String k) 的实现中,你不再返回 null,而是将其绑定到一个属性源,那么你可以通过属性来覆盖默认配置。例如,Spring Boot 的 Micrometer 支持直接将属性绑定到 DatadogConfig。有关详细信息,请参阅 Spring Boot 参考文档中的 Datadog 部分。

DatadogConfig.hostTag() 指定一个标签键,该键在将指标发送到 Datadog 时映射到主机字段。例如,如果 DatadogConfig.hostTag() 返回 host,则使用键为 host 的标签。你可以通过使用通用标签来设置该标签,如下所示:

registry.config().commonTags("host", "my-host");
java

uri 是一个需要配置的重要属性。默认值为 [api.datadoghq.com](https://api.datadoghq.com)。根据 Datadog 站点(区域)的不同,API 端点也会有所不同。要找到适合你账户的正确 uri,请按照以下步骤操作:

  1. 阅读 Datadog 站点 的相关内容。

  2. 前往 Metrics API 参考文档,并从 "DATADOG SITE" 下拉菜单中选择你自己的选项。

  3. 检查任意 API 请求的端点。

例如,对于 US5 站点,正确的 API 端点是 [api.us5.datadoghq.com](https://api.us5.datadoghq.com)。对于 US3 站点,它是 [api.us3.datadoghq.com](https://api.us3.datadoghq.com)

1.2. 通过 DogStatsD 方法

1.2.1. Gradle

配置 好 BOM 之后,添加以下依赖:

implementation 'io.micrometer:micrometer-registry-statsd'
groovy
备注

这个依赖不需要指定版本,因为它由 BOM 定义。

1.2.2. Maven

在配置好 BOM 后,添加以下依赖:

<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-statsd</artifactId>
</dependency>
xml
备注

由于版本由 BOM 定义,因此此依赖项不需要指定版本。

指标会立即使用 Datadog 的 StatsD 行协议风格发送到 DogStatsD。java-dogstatsd-client 不需要在类路径上,因为 Micrometer 使用了自己的实现。

StatsdConfig config = new StatsdConfig() {
@Override
public String get(String k) {
return null;
}

@Override
public StatsdFlavor flavor() {
return StatsdFlavor.DATADOG;
}
};

MeterRegistry registry = new StatsdMeterRegistry(config, Clock.SYSTEM);
java

如果 DD_ENTITY_ID 环境变量设置正确,Micrometer 支持在 Kubernetes 上使用 DogStatsD 的 UDP 源检测 功能。

默认情况下,Micrometer 将 Timer 仪表发布为 DogStatsD 的“timing”指标类型,单位为 ms。这些指标会以直方图类型指标的形式发送到 Datadog。同样,默认情况下,Micrometer 将 DistributionSummary 仪表发布为直方图类型指标。

当为仪表启用 percentileHistogram 时,Micrometer 会将 TimerDistributionSummary 仪表作为 Datadog Distributions 发送到 DogStatsD。你可以创建一个启用了 percentileHistogramDistributionSummary,如下所示:

DistributionSummary responseSizeSummary = DistributionSummary.builder("http.server.response.size")
.baseUnit("bytes")
.publishPercentileHistogram()
.register(registry);
java