配置 OpenSearch Data Prepper
您可以通过编辑 Data Prepper 安装中的 data-prepper-config.yaml
文件来自定义 OpenSearch Data Prepper 配置。以下配置选项独立于管道配置选项。
Data Prepper 配置
使用以下选项自定义您的 Data Prepper 配置。
选项 | 必需 | 类型 | 描述 |
---|---|---|---|
SSL | 否 | 布尔型 | 指示服务器 API 是否应使用 TLS。默认为 true。 |
keyStoreFilePath | 否 | 字符串 | .jks 或 .p12 密钥库文件的路径。如果 ssl 为 true,则此项为必填项。 |
keyStorePassword | 否 | 字符串 | 密钥库的密码。可选,默认为空字符串。 |
privateKeyPassword | 否 | 字符串 | 密钥库中私钥的密码。可选,默认为空字符串。 |
serverPort | 否 | 整数 | 服务器 API 使用的端口号。默认为 4900。 |
metricRegistries | 否 | 列表 | 用于发布生成指标的指标注册表。目前支持 Prometheus 和 Amazon CloudWatch。默认为 Prometheus。 |
metricTags | 否 | 映射 | 作为通用指标标签到指标注册表的键值对映射。最大对数为三。请注意,serviceName 是一个保留标签键,默认标签值为 DataPrepper 。或者,管理员可以通过环境变量 DATAPREPPER_SERVICE_NAME 设置此值。如果在 metricTags 中定义了 serviceName ,则该值将覆盖通过上述方法设置的值。 |
身份验证 | 否 | 对象 | 身份验证配置。有效选项是 http_basic ,带有 username 和 password 属性。如果未定义,服务器不执行身份验证。 |
processorShutdownTimeout | 否 | 持续时间 | 处理器清理任何传输中数据并优雅关闭的时间。默认为 30 秒。 |
sinkShutdownTimeout | 否 | 持续时间 | 接收器清理任何传输中数据并优雅关闭的时间。默认为 30 秒。 |
peer_forwarder | 否 | 对象 | 对等转发器配置。有关详细信息,请参阅对等转发器选项。 |
circuit_breakers | 否 | circuit_breakers | 配置传入数据的断路器。 |
extensions | 否 | 对象 | 管道扩展插件配置。有关详细信息,请参阅扩展插件。 |
对等转发器选项
以下部分详细介绍了对等转发器的各种配置选项。
对等转发的通用选项
选项 | 必需 | 类型 | 描述 |
---|---|---|---|
端口 | 否 | 整数 | 对等转发服务器端口。有效选项介于 0 到 65535 之间。默认为 4994。 |
请求超时 | 否 | 整数 | 对等转发器 HTTP 服务器的请求超时(毫秒)。默认为 10000。 |
server_thread_count | 否 | 整数 | 对等转发器服务器使用的线程数。默认为 200。 |
client_thread_count | 否 | 整数 | 对等转发器客户端使用的线程数。默认为 200。 |
最大连接数 | 否 | 整数 | 对等转发器服务器的最大打开连接数。默认为 500。 |
max_pending_requests | 否 | 整数 | ScheduledThreadPool 工作队列中允许的最大任务数。默认为 1024。 |
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 服务发现时的 Cloud Map 命名空间。如果 discovery_mode 设置为 aws_cloud_map ,则此项为必填项。 |
aws_cloud_map_service_name | 有条件地 | 字符串 | 使用 AWS Cloud Map 服务发现时的 Cloud Map 服务名称。如果 discovery_mode 设置为 aws_cloud_map ,则此项为必填项。 |
aws_cloud_map_query_parameters | 否 | 映射 | 键值对映射,用于根据附加到实例的自定义属性过滤结果。仅返回与所有指定键值对匹配的实例。 |
buffer_size | 否 | 整数 | 缓冲区接受的最大未检查记录数。未检查记录数是写入缓冲区的记录数和尚未由检查点 API 检查的传输中记录数的总和。默认为 512。 |
batch_size | 否 | 整数 | 缓冲区读取时返回的最大记录数。默认为 48。 |
aws_region | 有条件地 | 字符串 | 与 ACM、S3 或 AWS Cloud Map 一起使用的 AWS 区域。如果 use_acm_certificate_for_ssl 设置为 true,或者 ssl_certificate_file 和 ssl_key_file 是 AWS S3 路径,或者 discovery_mode 设置为 aws_cloud_map ,则此项为必填项。 |
drain_timeout | 否 | 持续时间 | 对等转发器在关闭前完成数据处理的等待时间。默认为 10s 。 |
对等转发器的 TLS/SSL 选项
选项 | 必需 | 类型 | 描述 |
---|---|---|---|
SSL | 否 | 布尔型 | 启用 TLS/SSL。默认为 true 。 |
SSL 证书文件 | 有条件地 | 字符串 | SSL 证书链文件路径或 AWS S3 路径。S3 路径示例 s3://<bucketName>/<path> 。如果 ssl 为 true 且 use_acm_certificate_for_ssl 为 false,则此项为必填项。默认为 config/default_certificate.pem ,这是默认证书文件。有关如何生成证书文件的更多信息,请参阅此处。 |
SSL 密钥文件 | 有条件地 | 字符串 | SSL 密钥文件路径或 AWS S3 路径。S3 路径示例 s3://<bucketName>/<path> 。如果 ssl 为 true 且 use_acm_certificate_for_ssl 为 false,则此项为必填项。默认为 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 证书 ARN。ACM 证书优先于 S3 或本地文件系统证书。如果 use_acm_certificate_for_ssl 设置为 true,则此项为必填项。 |
ACM 私钥密码 | 否 | 字符串 | 解密私钥的 ACM 私钥密码。如果未提供,Data Prepper 会生成一个随机密码。 |
ACM 证书超时毫秒数 | 否 | 整数 | ACM 获取证书的超时时间(毫秒)。默认为 120000。 |
aws_region | 有条件地 | 字符串 | 与 ACM、S3 或 AWS Cloud Map 一起使用的 AWS 区域。如果 use_acm_certificate_for_ssl 设置为 true,或者 ssl_certificate_file 和 ssl_key_file 是 AWS S3 路径,或者 discovery_mode 设置为 aws_cloud_map ,则此项为必填项。 |
对等转发器的身份验证选项
选项 | 必需 | 类型 | 描述 |
---|---|---|---|
身份验证 | 否 | 映射 | 要使用的身份验证方法。有效选项是 mutual_tls (使用 mTLS)或 unauthenticated (无身份验证)。默认为 unauthenticated 。 |
断路器
Data Prepper 提供断路器,以帮助防止 Java 内存耗尽。当管道包含有状态处理器时,这会很有用,因为这些处理器可以在缓冲区之外保留内存使用量。
当断路器跳闸时,Data Prepper 会拒绝传入数据路由到缓冲区。
选项 | 必需 | 类型 | 描述 |
---|---|---|---|
堆 | 否 | 堆 | 启用堆断路器。默认情况下,此功能未启用。 |
堆断路器
配置 Data Prepper,使其在 JVM 堆达到指定使用阈值时跳闸断路器。
选项 | 必需 | 类型 | 描述 |
---|---|---|---|
使用量 | 是 | 字节 | 指定 JVM 堆使用量,在此使用量下断路器跳闸。如果当前 Java 堆使用量超过此值,则断路器将打开。这可以是一个值,例如 6.5gb 。 |
重置 | 否 | 持续时间 | 断路器跳闸后,在此时间过去之前不会进行新的检查。这有效地设置了断路器保持打开状态以允许清除内存的最短时间。默认为 1s 。 |
check_interval | 否 | 持续时间 | 指定堆大小检查之间的时间。默认为 500ms 。 |
扩展插件
Data Prepper 支持用户可配置的扩展插件。扩展插件是跨管道插件共享的通用配置,例如源、缓冲区、处理器和接收器。
AWS 扩展插件
要使用 AWS 扩展插件,请在 data-prepper-config.yaml
中的 aws
下添加以下设置。
选项 | 必需 | 类型 | 描述 |
---|---|---|---|
aws | 否 | 对象 | AWS 扩展插件配置。 |
AWS secrets 扩展插件
AWS secrets 扩展插件配置 AWS Secrets Manager,以便在管道插件配置中引用,示例如下:
extensions:
aws:
secrets:
<YOUR_SECRET_CONFIG_ID_1>:
secret_id: <YOUR_SECRET_ID_1>
region: <YOUR_REGION_1>
sts_role_arn: <YOUR_STS_ROLE_ARN_1>
refresh_interval: <YOUR_REFRESH_INTERVAL>
disable_refresh: false
<YOUR_SECRET_CONFIG_ID_2>:
...
要使用 secrets 扩展插件,请在 pipeline.yaml
中的 extensions
> aws
下添加以下设置。
选项 | 必需 | 类型 | 描述 |
---|---|---|---|
secrets | 否 | 对象 | AWS Secrets Manager 扩展插件配置。有关详细信息,请参阅Secrets。 |
Secrets
在 secrets
扩展设置下使用以下设置。
选项 | 必需 | 类型 | 描述 |
---|---|---|---|
secret_id | 是 | 字符串 | AWS 秘密名称或 ARN。 |
region | 否 | 字符串 | 秘密的 AWS 区域。默认为 us-east-1 。 |
sts_role_arn | 否 | 字符串 | 用于对 AWS Secrets Manager 请求的 AWS 安全令牌服务 (AWS STS) 角色。默认为 null ,这将使用标准的 SDK 凭证行为。 |
refresh_interval | 否 | 持续时间 | AWS Secrets 扩展插件轮询新秘密值的刷新间隔。默认为 PT1H 。有关详细信息,请参阅自动刷新秘密。 |
disable_refresh | 否 | 布尔型 | 禁用 AWS secrets 扩展插件内部最新秘密值的定期轮询。默认为 false 。当设置为 true 时,refresh_interval 将不被使用。 |
引用秘密
在 pipelines.yaml
中,可以在管道插件中通过以下格式引用秘密值
- 纯文本:
${{aws_secrets:<YOUR_SECRET_CONFIG_ID>}}
。 - JSON(键值对):
${{aws_secrets:<YOUR_SECRET_CONFIG_ID>:<YOUR_KEY>}}
将 <YOUR_SECRET_CONFIG_ID>
替换为 /extensions/aws/secrets
下对应的秘密配置 ID。将 <YOUR_KEY>
替换为秘密 JSON 值中所需的键。秘密值引用字符串格式可解析为以下插件设置数据类型:
- 字符串
- 数字
- 长整型
- Short
- 整数
- Double
- 浮点型
- 布尔型
- Character
以下 data-prepper-config.yaml
示例部分命名了两个秘密配置 ID:host-secret-config
和 credential-secret-config
extensions:
aws:
secrets:
host-secret-config:
secret_id: <YOUR_SECRET_ID_1>
region: <YOUR_REGION_1>
sts_role_arn: <YOUR_STS_ROLE_ARN_1>
refresh_interval: <YOUR_REFRESH_INTERVAL_1>
credential-secret-config:
secret_id: <YOUR_SECRET_ID_2>
region: <YOUR_REGION_2>
sts_role_arn: <YOUR_STS_ROLE_ARN_2>
refresh_interval: <YOUR_REFRESH_INTERVAL_2>
配置 <YOUR_SECRET_CONFIG_ID>
后,您可以在 pipelines.yaml
中引用这些 ID。
sink:
- opensearch:
hosts: [ "${{aws_secrets:host-secret-config}}" ]
username: "${{aws_secrets:credential-secret-config:username}}"
password: "${{aws_secrets:credential-secret-config:password}}"
index: "test-migration"
自动刷新秘密
对于每个单独的秘密配置,系统会定期轮询最新的秘密值,以支持 AWS Secrets Manager 中的秘密刷新。刷新的秘密值将被某些管道插件用于刷新其组件,例如与后端服务的连接和身份验证。
对于多个秘密配置,在初始秘密轮询期间,所有配置将应用 60s
内的抖动。