Link Search Menu Expand Document Documentation Menu

对等转发器

对等转发器是一个 HTTP 服务,用于在 OpenSearch Data Prepper 节点之间执行 event 的对等转发以进行聚合。此 HTTP 服务使用哈希环方法来聚合事件并确定它应在给定跟踪上处理哪个 Data Prepper 节点,然后将其重新路由到该节点。目前,对等转发器受 aggregateservice_map_statefulotel_traces_raw 处理器支持。

对等转发器根据受支持的处理器提供的识别键对事件进行分组。对于 service_map_statefulotel_traces_raw,识别键默认为 traceId 且无法配置。aggregate 处理器使用 identification_keys 配置选项进行配置。您可以从此处指定对等转发器要使用的键。有关识别键的更多信息,请参阅 聚合处理器页面

对等发现允许 Data Prepper 查找将与之通信的其他节点。目前,对等发现由静态列表、DNS 记录查找或 AWS Cloud Map 提供。

发现模式

以下部分提供有关发现模式的信息。

静态

静态发现模式允许 Data Prepper 节点使用 IP 地址或域名列表发现节点。以下 YAML 文件提供了静态发现模式的示例

peer_forwarder:4
  discovery_mode: static
  static_endpoints: ["data-prepper1", "data-prepper2"]

DNS 查找

当扩展 Data Prepper 集群时,DNS 发现优于静态发现。DNS 发现将 DNS 提供程序配置为在给定单个域名时返回 Data Prepper 主机列表。此列表包含 DNS A 记录以及给定域的 IP 地址列表。以下 YAML 文件提供了 DNS 查找的示例

peer_forwarder:
  discovery_mode: dns
  domain_name: "data-prepper-cluster.my-domain.net"

AWS Cloud Map

AWS Cloud Map 提供基于 API 的服务发现以及基于 DNS 的服务发现。

对等转发器可以使用 AWS Cloud Map 中基于 API 的服务发现。为了支持这一点,您必须有一个为 API 实例发现配置的现有命名空间。您可以按照 AWS Cloud Map 文档中提供的说明创建一个新的命名空间。

您的 Data Prepper 配置需要包含以下内容

  • aws_cloud_map_namespace_name – 设置为您的 AWS Cloud Map 命名空间名称。
  • aws_cloud_map_service_name – 设置为您的指定命名空间中的服务名称。
  • aws_region – 设置为您的命名空间所在的 AWS 区域。
  • discovery_mode – 设置为 aws_cloud_map

您的 Data Prepper 配置可以选择包含以下内容

  • aws_cloud_map_query_parameters – 键值对用于根据附加到实例的自定义属性过滤结果。结果仅包含与所有指定键值对匹配的实例。

示例配置

请参阅以下 AWS Cloud Map 配置的 YAML 文件示例

peer_forwarder:
  discovery_mode: aws_cloud_map
  aws_cloud_map_namespace_name: "my-namespace"
  aws_cloud_map_service_name: "data-prepper-cluster"
  aws_cloud_map_query_parameters:
    instance_type: "r5.xlarge"
  aws_region: "us-east-1"

具有必要权限的 IAM 策略

Data Prepper 还必须在必要的权限下运行。以下 AWS Identity and Access Management (IAM) 策略显示了必要的权限

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "CloudMapPeerForwarder",
            "Effect": "Allow",
            "Action": "servicediscovery:DiscoverInstances",
            "Resource": "*"
        }
    ]
}

配置

下表提供了可选的配置值。

类型 描述
端口 整数 一个介于 0 到 65535 之间的值,表示对等转发器服务器正在运行的端口。默认值为 4994
请求超时 整数 表示对等转发器 HTTP 服务器的请求超时持续时间(毫秒)。默认值为 10000
server_thread_count 整数 表示对等转发器服务器使用的线程数。默认值为 200
client_thread_count 整数 表示对等转发器客户端使用的线程数。默认值为 200
maxConnectionCount 整数 表示对等转发器服务器的最大打开连接数。默认值为 500
discovery_mode 字符串 表示要使用的对等发现模式。允许的值为 local_nodestaticdnsaws_cloud_map。默认为 local_node,它在本地处理事件。
static_endpoints 列表 包含所有 Data Prepper 实例的端点。如果 discovery_mode 设置为 static,则为必填项。
domain_name 字符串 表示用于对 DNS 进行查询的单个域名。通常通过为同一域创建多个 DNS A 记录来使用。如果 discovery_mode 设置为 dns,则为必填项。
aws_cloud_map_namespace_name 字符串 使用 AWS Cloud Map 服务发现时,表示 AWS Cloud Map 命名空间。如果 discovery_mode 设置为 aws_cloud_map,则为必填项。
aws_cloud_map_service_name 字符串 使用 AWS Cloud Map 服务发现时,表示 AWS Cloud Map 服务。如果 discovery_mode 设置为 aws_cloud_map,则为必填项。
aws_cloud_map_query_parameters 映射 键值对,用于根据附加到实例的自定义属性过滤结果。仅返回与所有指定键值对匹配的实例。
buffer_size 整数 表示缓冲区接受的未检查记录的最大数量(未检查记录的数量等于写入缓冲区的记录数量加上仍在处理且尚未由检查点 API 检查的记录数量)。默认值为 512
batch_size 整数 表示缓冲区在读取时返回的最大记录数。默认值为 48
aws_region 字符串 表示使用 ACMAmazon S3AWS Cloud Map 的 AWS 区域,并且在满足以下任何条件时为必填项
- use_acm_certificate_for_ssl 设置为 true
- ssl_certificate_filessl_key_file 指定 Amazon 简单存储服务 (Amazon S3) URI(例如,s3://mybucket/path/to/public.cert)。
- discovery_mode 设置为 aws_cloud_map
drain_timeout 持续时间 表示对等转发器在关闭前等待完成数据处理的时间量。

SSL 配置

下表提供了可选的 SSL 配置值,允许您为对等转发器客户端设置信任管理器,以便连接到其他 Data Prepper 实例。

类型 描述
SSL 布尔型 启用 TLS/SSL。默认值为 true
SSL 证书文件 字符串 表示 SSL 证书链文件路径或 Amazon S3 路径。以下是 Amazon S3 路径的示例:s3://<bucketName>/<path>。默认为默认证书文件 config/default_certificate.pem。有关证书生成方式的更多信息,请参阅 默认证书
SSL 密钥文件 字符串 表示 SSL 密钥文件路径或 Amazon S3 路径。Amazon S3 路径示例:s3://<bucketName>/<path>。默认为 config/default_private_key.pem,即默认私钥文件。有关私钥文件生成方式的更多信息,请参阅 默认证书
ssl_insecure_disable_verification 布尔型 禁用对服务器 TLS 证书链的验证。默认值为 false
ssl_fingerprint_verification_only 布尔型 禁用对服务器 TLS 证书链的验证,改为仅验证证书指纹。默认值为 false
对 SSL 使用 ACM 证书 布尔型 使用 AWS Certificate Manager (ACM) 中的证书和私钥启用 TLS/SSL。默认值为 false
ACM 证书 ARN 字符串 表示 ACM 证书 Amazon 资源名称 (ARN)。ACM 证书优先于 Amazon S3 或本地文件系统证书。如果 use_acm_certificate_for_ssl 设置为 true,则为必填项。
ACM 私钥密码 字符串 表示将用于解密私钥的 ACM 私钥密码。如果未提供,将生成一个随机密码。
ACM 证书超时毫秒数 整数 表示 ACM 获取证书所需的超时时间(毫秒)。默认值为 120000
aws_region 字符串 表示使用 ACM、Amazon S3 或 AWS Cloud Map 的 AWS 区域。如果 use_acm_certificate_for_ssl 设置为 truessl_certificate_file,则为必填项。当 ssl_key_file 设置为使用 Amazon S3 路径或 discovery_mode 设置为 aws_cloud_map 时也需要。

示例配置

以下 YAML 文件提供了示例配置

peer_forwarder:
  ssl: true
  ssl_certificate_file: "<cert-file-path>"
  ssl_key_file: "<private-key-file-path>"

身份验证

Authentication 是可选的 Map,用于启用相互 TLS (mTLS)。它可以是 mutual_tlsunauthenticated。默认值为 unauthenticated。以下 YAML 文件提供了身份验证示例

peer_forwarder:
  authentication:
    mutual_tls:

指标

核心对等转发器引入了以下自定义指标。所有指标均以 core.peerForwarder 为前缀。

计时器

对等转发器的计时器功能提供以下信息

  • requestForwardingLatency:测量对等转发器客户端转发请求的延迟。
  • requestProcessingLatency:测量对等转发器服务器处理请求的延迟。

计数器

下表提供了计数器指标选项。

描述
requests 测量转发请求的总数。
requestsFailed 测量失败请求的总数。适用于 HTTP 响应代码不是 200 的请求。
requestsSuccessful 测量成功请求的总数。适用于 HTTP 响应代码为 200 的请求。
requestsTooLarge 测量因太大而无法写入对等转发器缓冲区的请求总数。适用于 HTTP 响应代码为 413 的请求。
requestTimeouts 测量在将内容写入对等转发器缓冲区时超时的请求总数。适用于 HTTP 响应代码为 408 的请求。
requestsUnprocessable 测量因不可处理实体而失败的请求总数。适用于 HTTP 响应代码为 422 的请求。
badRequests 测量请求格式错误的请求总数。适用于 HTTP 响应代码为 400 的请求。
recordsSuccessfullyForwarded 测量成功转发的记录总数。
recordsFailedForwarding 测量未能转发的记录总数。
recordsToBeForwarded 测量要转发的记录总数。
recordsToBeProcessedLocally 测量要本地处理的记录总数。
recordsActuallyProcessedLocally 测量实际本地处理的记录总数。此值是 recordsToBeProcessedLocallyrecordsFailedForwarding 的总和。
recordsReceivedFromPeers 测量从远程对等点接收的记录总数。

Gauge

peerEndpoints 测量动态发现的对等 Data Prepper 端点数量。对于 static 模式,大小是固定的。

剩余 350 字符

有问题?

想贡献吗?