对等转发器
对等转发器是一个 HTTP 服务,用于在 OpenSearch Data Prepper 节点之间执行 event
的对等转发以进行聚合。此 HTTP 服务使用哈希环方法来聚合事件并确定它应在给定跟踪上处理哪个 Data Prepper 节点,然后将其重新路由到该节点。目前,对等转发器受 aggregate
、service_map_stateful
和 otel_traces_raw
处理器支持。
对等转发器根据受支持的处理器提供的识别键对事件进行分组。对于 service_map_stateful
和 otel_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_node 、static 、dns 和 aws_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 | 字符串 | 表示使用 ACM 、Amazon S3 或 AWS Cloud Map 的 AWS 区域,并且在满足以下任何条件时为必填项- use_acm_certificate_for_ssl 设置为 true 。- ssl_certificate_file 或 ssl_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 设置为 true 或 ssl_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_tls
或 unauthenticated
。默认值为 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 | 测量实际本地处理的记录总数。此值是 recordsToBeProcessedLocally 和 recordsFailedForwarding 的总和。 |
recordsReceivedFromPeers | 测量从远程对等点接收的记录总数。 |
Gauge
peerEndpoints
测量动态发现的对等 Data Prepper 端点数量。对于 static
模式,大小是固定的。