社区
otelcol.exporter.datadog
社区: 此组件由 Alloy 用户社区开发、维护和支持。Grafana 不为此组件提供商业支持。要启用和使用社区组件,您必须将
--feature.community-components.enabled
标记设置为true
。
otelcol.exporter.datadog
接受来自其他 otelcol
组件的指标和追踪遥测数据,并将其发送到 Datadog。
注意
otelcol.exporter.datadog
是 otelcol-contrib 分发版中上游 OpenTelemetry Collectordatadog
导出器的包装器。如有必要,错误报告或功能请求将被重定向到上游仓库。
您可以通过为 otelcol.exporter.datadog
组件指定不同的标签来定义多个此类组件。
用法
otelcol.exporter.datadog "LABEL" {
api {
api_key = "YOUR_API_KEY_HERE"
}
}
参数
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
hostname | string | 用于没有主机名标识属性的载荷的备用主机名。 | 否 | |
only_metadata | bool | 是否仅发送元数据。 | false | 否 |
如果未设置 hostname
,则自动确定主机名。有关更多信息,请参阅 Datadog 回退主机名逻辑 文档。如果指标或追踪已具有主机名标识属性,此选项将不会更改应用到它们的 hostname。
块
otelcol.exporter.datadog
定义中支持以下块
层级 | 块 | 描述 | 必需 |
---|---|---|---|
api | api | 配置与 Datadog 的认证 | 是 |
traces | traces | 追踪导出器特定配置。 | 否 |
logs | logs | 日志导出器特定配置。 | 否 |
metrics | metrics | 指标导出器特定配置。 | 否 |
metrics > exporter | exporter | 指标导出器特定配置。 | 否 |
metrics > histograms | histograms | 直方图特定配置。 | 否 |
metrics > sums | sums | 求和特定配置 | 否 |
metrics > summaries | summaries | 摘要特定配置 | 否 |
host_metadata | host_metadata | 主机元数据特定配置。 | 否 |
client | client | 配置用于发送遥测数据的 HTTP 客户端。 | 否 |
retry_on_failure | retry_on_failure | 配置失败请求的重试机制。 | 否 |
queue | queue | 配置发送数据前的批量处理。 | 否 |
debug_metrics | debug_metrics | 配置此组件生成的用于监控其状态的指标。 | 否 |
>
符号表示更深的嵌套级别。例如,metrics > summaries
指的是 metrics
块中定义的 summaries
块。
api 块
api
块配置与 Datadog API 的认证。这是将遥测数据发送到 Datadog 所必需的。如果您不提供 api
块,则无法将遥测数据发送到 Datadog。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
api_key | secret | Datadog API 密钥 | 是 | |
site | string | 用于发送 Agent 数据的 Datadog 接收站点。 | "datadoghq.com" | 否 |
fail_on_invalid_key | bool | 是否在启动时因无效 API 密钥而退出 | false | 否 |
traces 块
traces
块配置追踪导出器设置。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
endpoint | string | 用于发送追踪的 Datadog 接收服务器主机。 | "https://trace.agent.datadoghq.com" | 否 |
ignore_resources | list(string) | 可以提供一个正则表达式黑名单,根据资源的名称禁用追踪。 | 否 | |
span_name_remappings | map(string) | 一个 Datadog span 操作名称键和首选名称值的映射,用于更新这些名称。 | 否 | |
span_name_as_resource_name | bool | 使用 OpenTelemetry 语义约定进行 span 命名 | true | 否 |
compute_stats_by_span_kind | bool | 启用基于 span.kind 的 APM 统计计算 | true | 否 |
compute_top_level_by_span_kind | bool | 启用基于 span.kind 的顶层 span 识别 | false | 否 |
peer_tags_aggregation | bool | 在 Datadog 导出器中启用对等相关标签的聚合 | false | 否 |
peer_tags | list(string) | 超出默认值的补充对等标签列表。 | 否 | |
trace_buffer | number | 指定在丢弃之前缓冲的传出追踪载荷的数量 | 10 | 否 |
如果 compute_stats_by_span_kind
被禁用,则只有顶层和被测量的 span 会计算统计数据。如果您正在发送 OTel 追踪并希望对非顶层 span 计算统计数据,则必须将此标志设置为 true
。如果您正在发送 OTel 追踪且不希望按 span kind 计算统计数据,则必须禁用此标志并禁用 compute_top_level_by_span_kind
。
如果未设置 endpoint
,则其值通过api部分中的 site
参数获取。
logs 块
logs
块配置日志导出器设置。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
endpoint | string | 用于发送日志的 Datadog 接收服务器主机。 | "https://http-intake.logs.datadoghq.com" | 否 false |
use_compression | bool | 通过 HTTPS 发送日志时可用。如果启用,则压缩日志。 | true | 否 |
compression_level | int | compression_level 参数接受从 0 (无压缩) 到 9 (最大压缩但资源使用量更高) 的值。仅在 use_compression 设置为 true 时使用。 | 6 | 否 |
batch_wait | int | 日志 agent 在发送每批日志之前等待填充的最长时间(秒)。 | 5 | 否 |
如果 use_compression
被禁用,则 compression_level
不生效。
如果未设置 endpoint
,则其值通过api部分中的 site
参数获取。
metrics 块
metrics
块配置指标导出器特定设置。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
delta_ttl | number | 在内存中保留值用于计算增量的时间(秒)。 | 3600 | 否 |
endpoint | string | 用于发送指标的 Datadog 接收服务器主机。 | "https://api.datadoghq.com" | 否 |
语义映射列表中的任何资源属性子集都会转换为 Datadog 约定并设置为指标标签,无论是否启用 resource_attributes_as_tags
。
如果未设置 endpoint
,则其值通过api部分中的 site
参数获取。
exporter 块
exporter
块配置指标导出器设置。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
resource_attributes_as_tags | bool | 设置为 true ,将指标的资源属性添加到其指标标签中。 | false | 否 |
instrumentation_scope_metadata_as_tags | bool | 设置为 true ,添加关于创建指标的插桩范围的元数据。 | false | 否 |
histograms 块
histograms
块配置直方图设置。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
mode | string | 如何报告直方图。 | "distributions" | 否 |
send_aggregation_metrics | bool | 是否将总和、计数、最小值和最大值作为单独的直方图指标报告。 | false | 否 |
mode
的有效值包括
"distributions"
将指标作为 Datadog distribution 报告(推荐)。"nobuckets"
不报告 bucket 指标。"counters"
为每个直方图 bucket 报告一个指标。
sums 块
sums
块配置求和设置。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
cumulative_monotonic_mode | string | 如何报告累积单调求和。 |
| 否 |
initial_cumulative_monotonic_value | string | 如何报告累积单调求和的初始值。 |
| 否 |
cumulative_monotonic_mode
的有效值包括
"to_delta"
在客户端计算总和的增量并作为 Datadog count 报告。"raw_value"
将原始值作为 Datadog gauge 报告。
initial_cumulative_monotonic_value
的有效值包括
"auto"
如果设置了初始值的开始时间戳,并且该时间戳发生在进程启动后,则报告初始值。"drop"
始终丢弃初始值。"keep"
始终报告初始值。
summaries 块
summaries
块配置摘要设置。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
mode | string | 如何报告摘要。 |
| 否 |
mode
的有效值包括
"noquantiles"
不报告分位数指标。"gauges"
为每个分位数报告一个 gauge 指标。
host_metadata 块
host_metadata
块配置主机元数据。主机元数据用于填充基础设施列表和主机地图,并在 Datadog 应用中提供主机标签功能。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
enabled | bool | 启用主机元数据功能 | true | 否 |
hostname_source | string | 主机元数据主机名的来源。 |
| 否 |
tags | list(string) | 要作为主机元数据一部分发送的主机标签列表。 | 否 |
默认情况下,导出器仅发送单个主机的元数据,其名称根据 host_metadata::hostname_source
选择。
hostname_source
的有效值包括
"first_resource"
从到达导出器的第一个 OTLP 载荷的资源属性中选择主机元数据主机名。如果第一个载荷缺乏类似主机名的属性,它将回退到 ‘config_or_system’ 行为。如果从多个主机接收数据,请勿使用此主机名来源。"config_or_system"
从 ‘hostname’ 设置中选择主机元数据主机名,如果未设置,则回退到系统和云提供商 API。
client 块
client
块配置组件使用的 HTTP 客户端。Datadog 导出器并非支持所有字段。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
read_buffer_size | string | HTTP 客户端用于读取服务器响应的读取缓冲区大小。 | 否 | |
write_buffer_size | string | HTTP 客户端用于写入请求的写入缓冲区大小。 | 否 | |
timeout | duration | 标记请求失败前等待的时间。 |
| 否 |
max_idle_conns | int | 限制客户端可以保持打开的空闲 HTTP 连接数。 | 100 | 否 |
max_idle_conns_per_host | int | 限制每个主机可以保持打开的空闲 HTTP 连接数。 | 5 | 否 |
max_conns_per_host | int | 限制每个主机的总连接数(拨号中、活动和空闲)。 | 否 | |
idle_conn_timeout | duration | 空闲连接在关闭自身前等待的时间。 |
| 否 |
disable_keep_alives | bool | 禁用 HTTP Keep-alive。 | 否 | |
insecure_skip_verify | boolean | 忽略不安全的服务器 TLS 证书。 | 否 |
retry_on_failure 块
retry_on_failure
块配置如何重试发送到 Datadog 的失败请求。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
enabled | boolean | 启用重试失败的请求。 | true | 否 |
initial_interval | duration | 重试失败请求前等待的初始时间。 |
| 否 |
max_elapsed_time | duration | 在丢弃失败批次前等待的最长时间。 |
| 否 |
max_interval | duration | 重试之间等待的最长时间。 |
| 否 |
multiplier | number | 重试前等待时间增长的因子。 | 1.5 | 否 |
randomization_factor | number | 重试前等待时间随机化的因子。 | 0.5 | 否 |
当 enabled
为 true
时,失败的批次会在给定的间隔后重试。initial_interval
参数指定第一次重试尝试前等待的时间。如果请求持续失败,重试前的等待时间会按 multiplier
参数指定的因子增加,该因子必须大于 1.0
。max_interval
参数指定重试之间等待时间的上限。
randomization_factor
参数有助于在重试的 Alloy 实例之间增加抖动。如果 randomization_factor
大于 0
,则重试前的等待时间将乘以一个随机因子,范围在 [ I - randomization_factor * I, I + randomization_factor * I]
之间,其中 I
是当前间隔。
如果一个批次未成功发送,它将在 max_elapsed_time
指定的时间过去后被丢弃。如果 max_elapsed_time
设置为 "0s"
,失败的请求将永远重试,直到成功。
queue 块
queue
块配置在数据发送到 HTTP 服务器之前,批次的内存缓冲区。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
enabled | boolean | 在将数据发送到客户端之前启用内存缓冲区。 | true | 否 |
num_consumers | number | 并行发送写入队列的批次的读取器数量。 | 10 | 否 |
queue_size | number | 队列中同时允许的最大未写入批次数量。 | 1000 | 否 |
blocking | boolean | 如果 true ,则阻塞直到队列有空间容纳新请求。 | false | 否 |
当 enabled
为 true
时,数据首先写入内存缓冲区,然后发送到配置的服务器。只要未发送批次的数量不超过配置的 queue_size
,发送到组件的 input
导出字段的批次就会被添加到缓冲区。
queue_size
决定了对端点中断的容忍时间。假设每秒 100 个请求,默认队列大小 1000 大约提供 10 秒的中断容忍时间。要计算 queue_size
的正确值,请将每秒平均传出请求数乘以中断可容忍的时间(秒)。非常高的值可能会导致内存不足 (OOM) 终止。
num_consumers
参数控制从缓冲区读取数据并并行发送的读取器数量。较大的 num_consumers
值允许更快地发送数据,但会增加网络流量。
debug_metrics 块
debug_metrics
块配置此组件生成的用于监控其状态的指标。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
disable_high_cardinality_metrics | boolean | 是否禁用某些高基数指标。 | true | 否 |
disable_high_cardinality_metrics
等效于 OpenTelemetry Collector 中的 telemetry.disableHighCardinalityMetrics
功能门。它会移除可能导致高基数指标的属性。例如,关于 HTTP 和 gRPC 连接的指标中带有 IP 地址和端口号的属性会被移除。
注意
如果配置了
disable_high_cardinality_metrics
,它仅适用于otelcol.exporter.*
和otelcol.receiver.*
组件。
导出字段
导出以下字段,可供其他组件引用
名称 | 类型 | 描述 |
---|---|---|
input | otelcol.Consumer | 其他组件可以用来发送遥测数据的值。 |
input
接受用于任何遥测信号(指标、日志或追踪)的 otelcol.Consumer
数据。
组件健康状况
只有在给定无效配置时,otelcol.exporter.datadog
才会被报告为不健康。
调试信息
otelcol.exporter.datadog
不暴露任何组件特定的调试信息。
示例
转发 Prometheus 指标
此示例将来自 Alloy 的 Prometheus 指标通过接收器转发,先转换为 Open Telemetry 格式,最后发送到 Datadog。如果您使用美国 Datadog API,则需要 api
字段导出器才能正常工作。
prometheus.exporter.self "default" {
}
prometheus.scrape "metamonitoring" {
targets = prometheus.exporter.self.default.targets
forward_to = [otelcol.receiver.prometheus.default.receiver]
}
otelcol.receiver.prometheus "default" {
output {
metrics = [otelcol.exporter.datadog.default.input]
}
}
otelcol.exporter.datadog "default" {
api {
api_key = "API_KEY"
}
metrics {
endpoint = "https://api.ap1.datadoghq.com"
resource_attributes_as_tags = true
}
}
完整的 OTel 流水线
此示例将以 Datadog 格式接收的指标和追踪转发到 Alloy,将它们转换为 OTel 格式,然后导出到 Datadog。
otelcol.receiver.datadog "default" {
output {
metrics = [otelcol.exporter.otlp.default.input, otelcol.exporter.datadog.default input]
traces = [otelcol.exporter.otlp.default.input, otelcol.exporter.datadog.default.input]
}
}
otelcol.exporter.otlp "default" {
client {
endpoint = "database:4317"
}
}
otelcol.exporter.datadog "default" {
client {
timeout = "10s"
}
api {
api_key = "abc"
fail_on_invalid_key = true
}
traces {
endpoint = "https://trace.agent.datadoghq.com"
ignore_resources = ["(GET|POST) /healthcheck"]
span_name_remappings = {
"instrumentation:express.server" = "express",
}
}
metrics {
delta_ttl = 1200
endpoint = "https://api.datadoghq.com"
exporter {
resource_attributes_as_tags = true
}
histograms {
mode = "counters"
}
sums {
initial_cumulative_monotonic_value = "keep"
}
summaries {
mode = "noquantiles"
}
}
}
兼容的组件
otelcol.exporter.datadog
具有可供以下组件消费的导出项
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接的文档。