社区
otelcol.exporter.datadog
社区:此组件由Alloy用户社区开发、维护和支持。Grafana不提供此组件的商业支持。要启用和使用社区组件,您必须将
--feature.community-components.enabled
标志设置为true
。
otelcol.exporter.datadog
接受来自其他 otelcol
组件的指标和跟踪遥测数据,并将其发送到 Datadog。
注意
otelcol.exporter.datadog
是 OpenTelemetry Collectordatadog
导出器(来自otelcol-contrib
分发版)的包装器。如果需要,错误报告或功能请求将被重定向到上游存储库。
您可以通过指定不同的标签来指定多个 otelcol.exporter.datadog
组件。
用法
otelcol.exporter.datadog "LABEL" {
api {
api_key = "YOUR_API_KEY_HERE"
}
}
参数
以下参数被支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
hostname | 字符串 | 用于没有主机标识属性的有效负载的备用主机名。 | no | |
only_metadata | bool | 是否只发送元数据。 | false | no |
如果未设置 hostname
,则自动确定主机名。有关更多信息,请参阅 Datadog 备用主机名逻辑 文档。此选项将不会更改已具有主机名标识属性的应用程序指标或跟踪中的主机名。
块
以下块在 otelcol.exporter.datadog
定义内部被支持
层次结构 | 块 | 描述 | 必需 |
---|---|---|---|
api | api | 配置与 Datadog 的身份验证。 | yes |
traces | traces | 跟踪导出器特定配置。 | no |
logs | logs | 日志导出器特定配置。 | no |
metrics | metrics | 指标导出器特定配置。 | no |
metrics > exporter | exporter | 指标导出器特定配置。 | no |
metrics > histograms | histograms | 直方图特定配置。 | no |
metrics > sums | sums | 求和特定配置 | no |
metrics > summaries | summaries | 汇总特定配置 | no |
host_metadata | host_metadata | 主机元数据特定配置。 | no |
client | client | 配置用于发送遥测数据的 HTTP 客户端。 | no |
retry_on_failure | retry_on_failure | 配置失败请求的重试机制。 | no |
queue | queue | 配置发送前数据的批量处理。 | no |
debug_metrics | debug_metrics | 配置此组件生成的指标以监控其状态。 | no |
“>” 符号表示更深层次的嵌套。例如,“metrics > summaries” 指的是在 metrics
块内定义的 summaries
块。
api 块
“api” 块配置与 Datadog API 的身份验证。这是向 Datadog 发送遥测数据的必要条件。如果不提供“api”块,则无法向 Datadog 发送遥测数据。
以下参数被支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
api_key | secret | 用于 Datadog 的 API 密钥。 | yes | |
site | 字符串 | 将代理数据发送到 Datadog 收集点的站点。 | "datadoghq.com" | no |
fail_on_invalid_key | bool | 是否在启动时退出无效 API 密钥。 | false | no |
traces 块
“traces” 块配置跟踪导出器的设置。
以下参数被支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
endpoint | 字符串 | 发送跟踪的 Datadog 收集点服务器的地址。 | "https://trace.agent.datadoghq.com" | no |
ignore_resources | list(string) | 可以提供正则表达式的块列表,以根据资源名称禁用跟踪。 | no | |
span_name_remappings | map(string) | 将 Datadog 跨度操作名称键映射到首选名称值的映射,以更新这些名称。 | no | |
span_name_as_resource_name | bool | 使用 OpenTelemetry 语义约定进行跨度命名。 | true | no |
compute_stats_by_span_kind | bool | 启用基于 span.kind 的 APM 统计计算。 | true | no |
compute_top_level_by_span_kind | bool | 启用基于 span.kind 的顶层跨度识别。 | false | no |
peer_tags_aggregation | bool | 在 Datadog 导出器中启用相关标签的聚合。 | false | no |
peer_tags | list(string) | 补充的同伴标签列表,超出默认值。 | no | |
trace_buffer | 数字 | 指定在丢弃之前缓冲的出站跟踪有效负载的数量 | 10 | no |
如果禁用 compute_stats_by_span_kind
,则只有顶级和测量的跨度将计算统计信息。如果您正在发送 OTel 跟踪并且希望对非顶级跨度进行统计,则必须将此标志设置为 true
。如果您正在发送 OTel 跟踪并且不希望按跨度类型计算统计信息,则必须禁用此标志并禁用 compute_top_level_by_span_kind
。
如果 endpoint
未设置,则通过 api 部分的 site
参数获取值。
日志块
logs
块配置日志导出器设置。
以下参数被支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
endpoint | 字符串 | 发送日志的 Datadog 入口服务器的主机。 | "https://http-intake.logs.datadoghq.com" | 无 false |
use_compression | bool | 在通过 HTTPS 发送日志时可用。如果启用,则压缩日志。 | true | no |
compression_level | int | compression_level 参数接受从 0(无压缩)到 9(最大压缩但资源使用更高)的值。仅在 use_compression 设置为 true 时使用。 | 6 | no |
batch_wait | int | 日志代理等待填充每个日志批次的最大时间(以秒为单位),然后发送。 | 5 | no |
如果禁用 use_compression
,则 compression_level
无效。
如果 endpoint
未设置,则通过 api 部分的 site
参数获取值。
度量块
metrics
块配置度量特定导出器设置。
以下参数被支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
delta_ttl | 数字 | 计算差分的内存中值保持秒数。 | 3600 | no |
endpoint | 字符串 | 发送度量到 Datadog 入口服务器的主机。 | "https://api.datadoghq.com" | no |
在 语义映射列表 中的任何子集资源属性都转换为 Datadog 约定,并设置为度量标签,无论是否启用 resource_attributes_as_tags
。
如果 endpoint
未设置,则通过 api 部分的 site
参数获取值。
导出器块
exporter
块配置度量导出器设置。
以下参数被支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
resource_attributes_as_tags | bool | 设置为 true 以将度量资源属性添加到其度量标签中。 | false | no |
instrumentation_scope_metadata_as_tags | bool | 设置为 true 以将创建度量的仪表范围元数据添加到标签中。 | false | no |
直方图块
histograms
块配置直方图设置。
以下参数被支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
mode | 字符串 | 如何报告直方图。 | "distributions" | no |
send_aggregation_metrics | bool | 是否报告总和、计数、最小值和最大值作为单独的直方图度量。 | false | no |
mode
的有效值是
"distributions"
将度量报告为 Datadog 分布(推荐)。"nobuckets"
不报告桶度量。"counters"
为每个直方图桶报告一个度量。
总和块
sums
块配置总和设置。
以下参数被支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
cumulative_monotonic_mode | 字符串 | 如何报告累积单调总和。 | "to_delta" | no |
initial_cumulative_monotonic_value | 字符串 | 如何报告累积单调总和的初始值。 | "auto" | no |
cumulative_monotonic_mode
的有效值是
"to_delta"
计算客户端的差分并将总和报告为 Datadog 计数。"raw_value"
将原始值报告为 Datadog 仪表。
initial_cumulative_monotonic_value
的有效值是
"auto"
如果设置起始时间戳并且在进程启动后发生,则报告初始值。"drop"
总是丢弃初始值。"keep"
总是报告初始值。
汇总块
summaries
块配置汇总设置。
以下参数被支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
mode | 字符串 | 如何报告汇总。 | "仪表板" | no |
mode
的有效值是
"noquantiles"
不报告分位数度量。"gauges"
每个分位数报告一个仪表板度量。
host_metadata 块
host_metadata
块配置主机元数据配置。主机元数据是用于填充基础设施列表和主机映射的信息,并在 Datadog 应用中提供主机标签功能。
以下参数被支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
启用 | bool | 启用主机元数据功能 | true | no |
hostname_source | 字符串 | 主机元数据主机名的来源。 | "config_or_system" | no |
标签 | list(string) | 要作为主机元数据发送的主机标签列表。 | no |
默认情况下,导出器只会发送单个主机的元数据,该主机的名称根据 host_metadata::hostname_source
选择。
hostname_source
的有效值包括
"first_resource"
从第一个 OTLP 有效负载的资源属性中选取主机元数据的主机名,该有效负载到达导出器。如果第一个有效负载缺少类似主机名的属性,它将回退到“config_or_system”行为。 如果从多个主机接收数据,请不要使用此主机名来源。"config_or_system"
从“hostname”设置中选择主机元数据的主机名,回退到系统和云提供商的 API。
client 块
client
块配置组件使用的 HTTP 客户端。并非 Datadog 导出器支持所有字段。
以下参数被支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
read_buffer_size | 字符串 | HTTP 客户端用于读取服务器响应的读取缓冲区大小。 | no | |
write_buffer_size | 字符串 | HTTP 客户端用于写入请求的写入缓冲区大小。 | no | |
timeout | 持续时间 | 在标记请求为失败之前等待的时间。 | "15s" | no |
max_idle_conns | int | 限制客户端可以保持打开的空闲 HTTP 连接数。 | 100 | no |
max_idle_conns_per_host | int | 限制主机可以保持打开的空闲 HTTP 连接数。 | 5 | no |
max_conns_per_host | int | 限制每个主机的总(拨号、活动和空闲)连接数。 | no | |
idle_conn_timeout | 持续时间 | 在空闲连接自行关闭之前等待的时间。 | "45s" | no |
disable_keep_alives | bool | 禁用 HTTP 保持活动连接。 | no | |
insecure_skip_verify | 布尔值 | 忽略不安全的服务器 TLS 证书。 | no |
retry_on_failure 块
retry_on_failure
块配置对 Datadog 的失败请求的重试方式。
以下参数被支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
启用 | 布尔值 | 启用重试失败的请求。 | true | no |
initial_interval | 持续时间 | 在重试失败请求之前等待的初始时间。 | "5s" | no |
max_elapsed_time | 持续时间 | 在丢弃失败的批次之前等待的最大时间。 | "5m" | no |
max_interval | 持续时间 | 重试之间等待的最大时间。 | "30s" | no |
multiplier | 数字 | 在重试之前增长等待时间的因子。 | 1.5 | no |
randomization_factor | 数字 | 在重试之前随机化等待时间的因子。 | 0.5 | no |
当 enabled
为 true
时,在给定间隔后重试失败的批次。如果请求继续失败,则重试之前的等待时间将增加,增加的因子由 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"
,则失败的请求会无限重试,直到成功。
队列阻塞
在将数据发送到 HTTP 服务器之前,queue
块配置了批次的内存缓冲区。
以下参数被支持
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
启用 | 布尔值 | 在向客户端发送数据之前启用内存缓冲区。 | true | no |
num_consumers | 数字 | 并行发送写入队列的批次的读取器数量。 | 10 | no |
queue_size | 数字 | 在任何时候允许队列中未写入的批次数量的最大值。 | 1000 | no |
当 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 | 布尔值 | 是否禁用某些高基数指标。 | true | no |
level | 字符串 | 控制封装收集器发出的指标的详细程度。 | "detailed" | no |
disable_high_cardinality_metrics
是 Grafana Alloy 中 telemetry.disableHighCardinalityMetrics
功能门的等效功能。它移除了可能导致高基数指标的属性。例如,从 HTTP 和 gRPC 连接的指标中移除了包含 IP 地址和端口号的属性。
注意
如果配置了,disable_high_cardinality_metrics
只适用于otelcol.exporter.*
和otelcol.receiver.*
组件。
level
是 OpenTelemetry Collector 中 telemetry.metrics.level
功能门的 Alloy 等效功能。可能的值是 "none"
、"basic"
、"normal"
和 "detailed"
。
导出字段
以下字段被导出,并且可以被其他组件引用
名称 | 类型 | 描述 |
---|---|---|
input | otelcol.Consumer | 其他组件可以使用它来发送遥测数据。 |
input
接受任何遥测信号(指标、日志或跟踪)的 otelcol.Consumer
数据。
组件健康
otelcol.exporter.datadog
只有在给出无效配置时才报告为不健康。
调试信息
otelcol.exporter.datadog
不暴露任何特定于组件的调试信息。
示例
转发 Prometheus 指标
此示例通过将 Prometheus 指标从 Alloy 通过接收器转换为 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
的导出可以由以下组件消费
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能正确连接。有关详细信息,请参阅相关文档。