社区
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 回退主机名逻辑 文档。如果指标或跟踪已经具有主机名识别属性,则此选项不会更改应用于它们的主机名。
块
在 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 和已测量的 span 将计算统计信息。如果您正在发送 OTel 跟踪并希望获得非顶级 span 的统计信息,则必须将此标志设置为 true
。如果您正在发送 OTel 跟踪并且不希望按 span 类型计算统计信息,则必须禁用此标志并禁用 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 | 日志代理在发送之前等待填充每个日志批次的最长时间(秒)。 | 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 分布(推荐)。"nobuckets"
:不报告 bucket 指标。"counters"
:每个直方图 bucket 报告一个指标。
sums 块
sums
块配置总和设置。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
cumulative_monotonic_mode | string | 如何报告累积单调总和。 | "to_delta" | 否 |
initial_cumulative_monotonic_value | string | 如何报告累积单调总和的初始值。 | "auto" | 否 |
cumulative_monotonic_mode
的有效值包括
"to_delta"
:在客户端计算总和的增量,并作为 Datadog 计数报告。"raw_value"
:将原始值作为 Datadog 仪表报告。
initial_cumulative_monotonic_value
的有效值包括
"auto"
:如果设置了初始值的开始时间戳,并且发生在进程启动之后,则报告初始值。"drop"
:始终丢弃初始值。"keep"
:始终报告初始值。
summaries 块
summaries
块配置摘要设置。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
mode | string | 如何报告摘要。 | "gauges" | 否 |
mode
的有效值包括
"noquantiles"
:不报告分位数指标。"gauges"
:每个分位数报告一个仪表指标。
host_metadata 块
host_metadata
块配置主机元数据配置。主机元数据是用于填充基础设施列表和主机地图的信息,并在 Datadog 应用程序中提供主机标签功能。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
enabled | bool | 启用主机元数据功能 | true | 否 |
hostname_source | string | 主机元数据的主机名来源。 | "config_or_system" | 否 |
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 | 将请求标记为失败之前等待的时间。 | "15s" | 否 |
max_idle_conns | int | 限制客户端可以保持打开状态的空闲 HTTP 连接数。 | 100 | 否 |
max_idle_conns_per_host | int | 限制主机可以保持打开状态的空闲 HTTP 连接数。 | 5 | 否 |
max_conns_per_host | int | 限制每个主机的连接总数(拨号、活动和空闲)。 | 否 | |
idle_conn_timeout | duration | 空闲连接自行关闭之前等待的时间。 | "45s" | 否 |
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 | 重试失败请求之前等待的初始时间。 | "5s" | 否 |
max_elapsed_time | duration | 丢弃失败批次之前等待的最长时间。 | "5m" | 否 |
max_interval | duration | 重试之间等待的最长时间。 | "30s" | 否 |
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 | 否 |
当 enabled
为 true
时,数据首先写入内存缓冲区,然后再发送到配置的服务器。发送到组件的 input
导出字段的批次会添加到缓冲区,只要未发送批次的数量不超过配置的 queue_size
。
queue_size
确定端点中断的容忍时间。假设每秒 100 个请求,默认队列大小 1000
提供大约 10 秒的中断容忍度。要计算 queue_size
的正确值,请将平均每秒传出请求数乘以容忍中断的时间(秒)。非常高的值可能会导致内存不足 (OOM) 终止。
num_consumers
参数控制有多少读取器从缓冲区读取数据并并行发送数据。num_consumers
的值越大,数据发送速度越快,但会增加网络流量。
debug_metrics 块
debug_metrics
块配置此组件生成的用于监视其状态的指标。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
disable_high_cardinality_metrics | boolean | 是否禁用某些高基数指标。 | true | 否 |
level | string | 控制包装的收集器发出的指标的详细程度。 | "detailed" | 否 |
disable_high_cardinality_metrics
是 Grafana Alloy 等效于 OpenTelemetry Collector 中的 telemetry.disableHighCardinalityMetrics
功能门。它会删除可能导致高基数指标的属性。例如,删除了有关 HTTP 和 gRPC 连接的指标中包含 IP 地址和端口号的属性。
注意
如果已配置,则
disable_high_cardinality_metrics
仅适用于otelcol.exporter.*
和otelcol.receiver.*
组件。
level
是 Alloy 等效于 OpenTelemetry Collector 中的 telemetry.metrics.level
功能门。可能的值为 "none"
、"basic"
、"normal"
和 "detailed"
。
导出的字段
导出以下字段,并且可以被其他组件引用
名称 | 类型 | 描述 |
---|---|---|
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
具有可以被以下组件使用的导出项
- 使用 OpenTelemetry
otelcol.Consumer
的组件
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接的文档。