菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 参考breadcrumb arrow 组件breadcrumb arrow otelcolbreadcrumb arrow otelcol.exporter.datadog
开源

社区

otelcol.exporter.datadog

社区: 此组件由 Alloy 用户社区开发、维护和支持。Grafana 不为此组件提供商业支持。要启用和使用社区组件,您必须将 --feature.community-components.enabled 标记设置为 true

otelcol.exporter.datadog 接受来自其他 otelcol 组件的指标和追踪遥测数据,并将其发送到 Datadog。

注意

otelcol.exporter.datadog 是 otelcol-contrib 分发版中上游 OpenTelemetry Collector datadog 导出器的包装器。如有必要,错误报告或功能请求将被重定向到上游仓库。

您可以通过为 otelcol.exporter.datadog 组件指定不同的标签来定义多个此类组件。

用法

alloy
otelcol.exporter.datadog "LABEL" {
    api {
        api_key = "YOUR_API_KEY_HERE"
    }
}

参数

支持以下参数

名称类型描述默认值必需
hostnamestring用于没有主机名标识属性的载荷的备用主机名。
only_metadatabool是否仅发送元数据。false

如果未设置 hostname,则自动确定主机名。有关更多信息,请参阅 Datadog 回退主机名逻辑 文档。如果指标或追踪已具有主机名标识属性,此选项将不会更改应用到它们的 hostname。

otelcol.exporter.datadog 定义中支持以下块

层级描述必需
apiapi配置与 Datadog 的认证
tracestraces追踪导出器特定配置。
logslogs日志导出器特定配置。
metricsmetrics指标导出器特定配置。
metrics > exporterexporter指标导出器特定配置。
metrics > histogramshistograms直方图特定配置。
metrics > sumssums求和特定配置
metrics > summariessummaries摘要特定配置
host_metadatahost_metadata主机元数据特定配置。
clientclient配置用于发送遥测数据的 HTTP 客户端。
retry_on_failureretry_on_failure配置失败请求的重试机制。
queuequeue配置发送数据前的批量处理。
debug_metricsdebug_metrics配置此组件生成的用于监控其状态的指标。

> 符号表示更深的嵌套级别。例如,metrics > summaries 指的是 metrics 块中定义的 summaries 块。

api 块

api 块配置与 Datadog API 的认证。这是将遥测数据发送到 Datadog 所必需的。如果您不提供 api 块,则无法将遥测数据发送到 Datadog。

支持以下参数

名称类型描述默认值必需
api_keysecretDatadog API 密钥
sitestring用于发送 Agent 数据的 Datadog 接收站点。"datadoghq.com"
fail_on_invalid_keybool是否在启动时因无效 API 密钥而退出false

traces 块

traces 块配置追踪导出器设置。

支持以下参数

名称类型描述默认值必需
endpointstring用于发送追踪的 Datadog 接收服务器主机。"https://trace.agent.datadoghq.com"
ignore_resourceslist(string)可以提供一个正则表达式黑名单,根据资源的名称禁用追踪。
span_name_remappingsmap(string)一个 Datadog span 操作名称键和首选名称值的映射,用于更新这些名称。
span_name_as_resource_namebool使用 OpenTelemetry 语义约定进行 span 命名true
compute_stats_by_span_kindbool启用基于 span.kind 的 APM 统计计算true
compute_top_level_by_span_kindbool启用基于 span.kind 的顶层 span 识别false
peer_tags_aggregationbool在 Datadog 导出器中启用对等相关标签的聚合false
peer_tagslist(string)超出默认值的补充对等标签列表。
trace_buffernumber指定在丢弃之前缓冲的传出追踪载荷的数量10

如果 compute_stats_by_span_kind 被禁用,则只有顶层和被测量的 span 会计算统计数据。如果您正在发送 OTel 追踪并希望对非顶层 span 计算统计数据,则必须将此标志设置为 true。如果您正在发送 OTel 追踪且不希望按 span kind 计算统计数据,则必须禁用此标志并禁用 compute_top_level_by_span_kind

如果未设置 endpoint,则其值通过api部分中的 site 参数获取。

logs 块

logs 块配置日志导出器设置。

支持以下参数

名称类型描述默认值必需
endpointstring用于发送日志的 Datadog 接收服务器主机。"https://http-intake.logs.datadoghq.com"false
use_compressionbool通过 HTTPS 发送日志时可用。如果启用,则压缩日志。true
compression_levelintcompression_level 参数接受从 0 (无压缩) 到 9 (最大压缩但资源使用量更高) 的值。仅在 use_compression 设置为 true 时使用。6
batch_waitint日志 agent 在发送每批日志之前等待填充的最长时间(秒)。5

如果 use_compression 被禁用,则 compression_level 不生效。

如果未设置 endpoint,则其值通过api部分中的 site 参数获取。

metrics 块

metrics 块配置指标导出器特定设置。

支持以下参数

名称类型描述默认值必需
delta_ttlnumber在内存中保留值用于计算增量的时间(秒)。3600
endpointstring用于发送指标的 Datadog 接收服务器主机。"https://api.datadoghq.com"

语义映射列表中的任何资源属性子集都会转换为 Datadog 约定并设置为指标标签,无论是否启用 resource_attributes_as_tags

如果未设置 endpoint,则其值通过api部分中的 site 参数获取。

exporter 块

exporter 块配置指标导出器设置。

支持以下参数

名称类型描述默认值必需
resource_attributes_as_tagsbool设置为 true,将指标的资源属性添加到其指标标签中。false
instrumentation_scope_metadata_as_tagsbool设置为 true,添加关于创建指标的插桩范围的元数据。false

histograms 块

histograms 块配置直方图设置。

支持以下参数

名称类型描述默认值必需
modestring如何报告直方图。"distributions"
send_aggregation_metricsbool是否将总和、计数、最小值和最大值作为单独的直方图指标报告。false

mode 的有效值包括

  • "distributions" 将指标作为 Datadog distribution 报告(推荐)。
  • "nobuckets" 不报告 bucket 指标。
  • "counters" 为每个直方图 bucket 报告一个指标。

sums 块

sums 块配置求和设置。

支持以下参数

名称类型描述默认值必需
cumulative_monotonic_modestring如何报告累积单调求和。"to_delta"
initial_cumulative_monotonic_valuestring如何报告累积单调求和的初始值。"auto"

cumulative_monotonic_mode 的有效值包括

  • "to_delta" 在客户端计算总和的增量并作为 Datadog count 报告。
  • "raw_value" 将原始值作为 Datadog gauge 报告。

initial_cumulative_monotonic_value 的有效值包括

  • "auto" 如果设置了初始值的开始时间戳,并且该时间戳发生在进程启动后,则报告初始值。
  • "drop" 始终丢弃初始值。
  • "keep" 始终报告初始值。

summaries 块

summaries 块配置摘要设置。

支持以下参数

名称类型描述默认值必需
modestring如何报告摘要。"gauges"

mode 的有效值包括

  • "noquantiles" 不报告分位数指标。
  • "gauges" 为每个分位数报告一个 gauge 指标。

host_metadata 块

host_metadata 块配置主机元数据。主机元数据用于填充基础设施列表和主机地图,并在 Datadog 应用中提供主机标签功能。

支持以下参数

名称类型描述默认值必需
enabledbool启用主机元数据功能true
hostname_sourcestring主机元数据主机名的来源。"config_or_system"
tagslist(string)要作为主机元数据一部分发送的主机标签列表。

默认情况下,导出器仅发送单个主机的元数据,其名称根据 host_metadata::hostname_source 选择。

hostname_source 的有效值包括

  • "first_resource" 从到达导出器的第一个 OTLP 载荷的资源属性中选择主机元数据主机名。如果第一个载荷缺乏类似主机名的属性,它将回退到 ‘config_or_system’ 行为。如果从多个主机接收数据,请勿使用此主机名来源。
  • "config_or_system" 从 ‘hostname’ 设置中选择主机元数据主机名,如果未设置,则回退到系统和云提供商 API。

client 块

client 块配置组件使用的 HTTP 客户端。Datadog 导出器并非支持所有字段。

支持以下参数

名称类型描述默认值必需
read_buffer_sizestringHTTP 客户端用于读取服务器响应的读取缓冲区大小。
write_buffer_sizestringHTTP 客户端用于写入请求的写入缓冲区大小。
timeoutduration标记请求失败前等待的时间。"15s"
max_idle_connsint限制客户端可以保持打开的空闲 HTTP 连接数。100
max_idle_conns_per_hostint限制每个主机可以保持打开的空闲 HTTP 连接数。5
max_conns_per_hostint限制每个主机的总连接数(拨号中、活动和空闲)。
idle_conn_timeoutduration空闲连接在关闭自身前等待的时间。"45s"
disable_keep_alivesbool禁用 HTTP Keep-alive。
insecure_skip_verifyboolean忽略不安全的服务器 TLS 证书。

retry_on_failure 块

retry_on_failure 块配置如何重试发送到 Datadog 的失败请求。

支持以下参数

名称类型描述默认值必需
enabledboolean启用重试失败的请求。true
initial_intervalduration重试失败请求前等待的初始时间。"5s"
max_elapsed_timeduration在丢弃失败批次前等待的最长时间。"5m"
max_intervalduration重试之间等待的最长时间。"30s"
multipliernumber重试前等待时间增长的因子。1.5
randomization_factornumber重试前等待时间随机化的因子。0.5

enabledtrue 时,失败的批次会在给定的间隔后重试。initial_interval 参数指定第一次重试尝试前等待的时间。如果请求持续失败,重试前的等待时间会按 multiplier 参数指定的因子增加,该因子必须大于 1.0max_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 服务器之前,批次的内存缓冲区。

支持以下参数

名称类型描述默认值必需
enabledboolean在将数据发送到客户端之前启用内存缓冲区。true
num_consumersnumber并行发送写入队列的批次的读取器数量。10
queue_sizenumber队列中同时允许的最大未写入批次数量。1000
blockingboolean如果 true,则阻塞直到队列有空间容纳新请求。false

enabledtrue 时,数据首先写入内存缓冲区,然后发送到配置的服务器。只要未发送批次的数量不超过配置的 queue_size,发送到组件的 input 导出字段的批次就会被添加到缓冲区。

queue_size 决定了对端点中断的容忍时间。假设每秒 100 个请求,默认队列大小 1000 大约提供 10 秒的中断容忍时间。要计算 queue_size 的正确值,请将每秒平均传出请求数乘以中断可容忍的时间(秒)。非常高的值可能会导致内存不足 (OOM) 终止。

num_consumers 参数控制从缓冲区读取数据并并行发送的读取器数量。较大的 num_consumers 值允许更快地发送数据,但会增加网络流量。

debug_metrics 块

debug_metrics 块配置此组件生成的用于监控其状态的指标。

支持以下参数

名称类型描述默认值必需
disable_high_cardinality_metricsboolean是否禁用某些高基数指标。true

disable_high_cardinality_metrics 等效于 OpenTelemetry Collector 中的 telemetry.disableHighCardinalityMetrics 功能门。它会移除可能导致高基数指标的属性。例如,关于 HTTP 和 gRPC 连接的指标中带有 IP 地址和端口号的属性会被移除。

注意

如果配置了 disable_high_cardinality_metrics,它仅适用于 otelcol.exporter.*otelcol.receiver.* 组件。

导出字段

导出以下字段,可供其他组件引用

名称类型描述
inputotelcol.Consumer其他组件可以用来发送遥测数据的值。

input 接受用于任何遥测信号(指标、日志或追踪)的 otelcol.Consumer 数据。

组件健康状况

只有在给定无效配置时,otelcol.exporter.datadog 才会被报告为不健康。

调试信息

otelcol.exporter.datadog 不暴露任何组件特定的调试信息。

示例

转发 Prometheus 指标

此示例将来自 Alloy 的 Prometheus 指标通过接收器转发,先转换为 Open Telemetry 格式,最后发送到 Datadog。如果您使用美国 Datadog API,则需要 api 字段导出器才能正常工作。

alloy
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。

alloy
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 具有可供以下组件消费的导出项

注意

连接某些组件可能不合理,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接的文档。