菜单
文档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 是 OpenTelemetry Collector datadog 导出器(来自 otelcol-contrib 分发版)的包装器。如果需要,错误报告或功能请求将被重定向到上游存储库。

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

用法

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

参数

以下参数被支持

名称类型描述默认值必需
hostname字符串用于没有主机标识属性的有效负载的备用主机名。no
only_metadatabool是否只发送元数据。falseno

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

以下块在 otelcol.exporter.datadog 定义内部被支持

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

“>” 符号表示更深层次的嵌套。例如,“metrics > summaries” 指的是在 metrics 块内定义的 summaries 块。

api 块

“api” 块配置与 Datadog API 的身份验证。这是向 Datadog 发送遥测数据的必要条件。如果不提供“api”块,则无法向 Datadog 发送遥测数据。

以下参数被支持

名称类型描述默认值必需
api_keysecret用于 Datadog 的 API 密钥。yes
site字符串将代理数据发送到 Datadog 收集点的站点。"datadoghq.com"no
fail_on_invalid_keybool是否在启动时退出无效 API 密钥。falseno

traces 块

“traces” 块配置跟踪导出器的设置。

以下参数被支持

名称类型描述默认值必需
endpoint字符串发送跟踪的 Datadog 收集点服务器的地址。"https://trace.agent.datadoghq.com"no
ignore_resourceslist(string)可以提供正则表达式的块列表,以根据资源名称禁用跟踪。no
span_name_remappingsmap(string)将 Datadog 跨度操作名称键映射到首选名称值的映射,以更新这些名称。no
span_name_as_resource_namebool使用 OpenTelemetry 语义约定进行跨度命名。trueno
compute_stats_by_span_kindbool启用基于 span.kind 的 APM 统计计算。trueno
compute_top_level_by_span_kindbool启用基于 span.kind 的顶层跨度识别。falseno
peer_tags_aggregationbool在 Datadog 导出器中启用相关标签的聚合。falseno
peer_tagslist(string)补充的同伴标签列表,超出默认值。no
trace_buffer数字指定在丢弃之前缓冲的出站跟踪有效负载的数量10no

如果禁用 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_compressionbool在通过 HTTPS 发送日志时可用。如果启用,则压缩日志。trueno
compression_levelintcompression_level 参数接受从 0(无压缩)到 9(最大压缩但资源使用更高)的值。仅在 use_compression 设置为 true 时使用。6no
batch_waitint日志代理等待填充每个日志批次的最大时间(以秒为单位),然后发送。5no

如果禁用 use_compression,则 compression_level 无效。

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

度量块

metrics 块配置度量特定导出器设置。

以下参数被支持

名称类型描述默认值必需
delta_ttl数字计算差分的内存中值保持秒数。3600no
endpoint字符串发送度量到 Datadog 入口服务器的主机。"https://api.datadoghq.com"no

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

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

导出器块

exporter 块配置度量导出器设置。

以下参数被支持

名称类型描述默认值必需
resource_attributes_as_tagsbool设置为 true 以将度量资源属性添加到其度量标签中。falseno
instrumentation_scope_metadata_as_tagsbool设置为 true 以将创建度量的仪表范围元数据添加到标签中。falseno

直方图块

histograms 块配置直方图设置。

以下参数被支持

名称类型描述默认值必需
mode字符串如何报告直方图。"distributions"no
send_aggregation_metricsbool是否报告总和、计数、最小值和最大值作为单独的直方图度量。falseno

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启用主机元数据功能trueno
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_connsint限制客户端可以保持打开的空闲 HTTP 连接数。100no
max_idle_conns_per_hostint限制主机可以保持打开的空闲 HTTP 连接数。5no
max_conns_per_hostint限制每个主机的总(拨号、活动和空闲)连接数。no
idle_conn_timeout持续时间在空闲连接自行关闭之前等待的时间。"45s"no
disable_keep_alivesbool禁用 HTTP 保持活动连接。no
insecure_skip_verify布尔值忽略不安全的服务器 TLS 证书。no

retry_on_failure 块

retry_on_failure 块配置对 Datadog 的失败请求的重试方式。

以下参数被支持

名称类型描述默认值必需
启用布尔值启用重试失败的请求。trueno
initial_interval持续时间在重试失败请求之前等待的初始时间。"5s"no
max_elapsed_time持续时间在丢弃失败的批次之前等待的最大时间。"5m"no
max_interval持续时间重试之间等待的最大时间。"30s"no
multiplier数字在重试之前增长等待时间的因子。1.5no
randomization_factor数字在重试之前随机化等待时间的因子。0.5no

enabledtrue 时,在给定间隔后重试失败的批次。如果请求继续失败,则重试之前的等待时间将增加,增加的因子由 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 块配置了批次的内存缓冲区。

以下参数被支持

名称类型描述默认值必需
启用布尔值在向客户端发送数据之前启用内存缓冲区。trueno
num_consumers数字并行发送写入队列的批次的读取器数量。10no
queue_size数字在任何时候允许队列中未写入的批次数量的最大值。1000no

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

queue_size 决定了可以容忍的端点故障时间。假设每秒 100 个请求,默认队列大小 1000 提供约 10 秒的故障容忍时间。要计算 queue_size 的正确值,将每秒平均发出的请求数乘以可以容忍的故障时间(以秒为单位)。一个非常高的值可能会导致内存溢出 (OOM) 杀死。

num_consumers 参数控制了多少个读取器从缓冲区中读取并发送数据。较大的 num_consumers 值可以更快地发送数据,但会增加网络流量。

debug_metrics 块

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

以下参数被支持

名称类型描述默认值必需
disable_high_cardinality_metrics布尔值是否禁用某些高基数指标。trueno
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"

导出字段

以下字段被导出,并且可以被其他组件引用

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

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

组件健康

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

调试信息

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

示例

转发 Prometheus 指标

此示例通过将 Prometheus 指标从 Alloy 通过接收器转换为 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 的导出可以由以下组件消费

注意

连接某些组件可能不合理,或者组件可能需要进一步配置才能正确连接。有关详细信息,请参阅相关文档。