创建 Amazon OpenSearch Ingestion 管道 - 亚马逊 OpenSearch 服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建 Amazon OpenSearch Ingestion 管道

管道是 Amazon OpenSearch Ingestion 用来将数据从其来源(数据来源)移动到接收器(数据所在的地方)的机制。在 OpenSearch Ingestion 中,接收器将始终是单个亚马逊 OpenSearch 服务域,而您的数据来源可以是 Amazon S3、Fluent Bit 或 Collector 等客户端。 OpenTelemetry

有关更多信息,请参阅 OpenSearch 文档中的管道

先决条件和所需角色

要创建 OpenSearch 摄取管道,您必须拥有以下资源:

  • 一个 IAM 角色, OpenSearch Ingestion 为了写入接收器而将担任该角色。您将在您的管道配置中包含此角色 ARN。

  • 充当接收器的 OpenSearch 服务域或 OpenSearch 无服务器集合。如果您要写入某个域,则该域必须运行的是 OpenSearch 1.0 或更高版本,或者运行 Elasticsearch 7.4 或更高版本。接收器必须具有向您的 IAM 管道角色授予相应权限的访问策略。

有关创建这些资源的说明,请参阅以下主题:

注意

如果您要写入使用精细访问控制的域,则需要完成一些额外的步骤。请参阅 步骤 3:映射管道角色(仅适用于使用精细访问控制的域)

所需权限

OpenSearch Ingestion 使用以下 IAM 权限来创建管道:

  • osis:CreatePipeline –创建管道。

  • osis:ValidatePipeline – 检查管道配置是否有效。

  • iam:PassRole— 将管道角色传递给 OpenSearch Ingestion,这样它就可以向域写入数据。此权限必须位于管道角色资源(您在管道配置中为 sts_role_arn 选项指定的 ARN)上,或者如果您计划在每个管道中使用不同的角色,则仅 *

例如,以下策略授予创建管道的权限:

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Resource":"*", "Action":[ "osis:CreatePipeline", "osis:ListPipelineBlueprints", "osis:ValidatePipeline" ] }, { "Resource":[ "arn:aws:iam::{your-account-id}:role/{pipeline-role}" ], "Effect":"Allow", "Action":[ "iam:PassRole" ] } ] }

OpenSearch Ingestion 还包括一项名为的权限osis:Ingest,该权限是使用签名版本 4 向管道发送签名请求所必需的。有关更多信息,请参阅 创建摄取角色

注意

此外,第一个在账户中创建管道的用户必须拥有 iam:CreateServiceLinkedRole 操作的权限。有关更多信息,请参阅管道角色资源

有关每项权限的更多信息,请参阅《服务授权参考 OpenSearch 》中的 “摄取操作、资源和条件密钥”。

指定管道版本

配置管道时,必须指定管道将运行的 Data Prepper 的主要版本。要指定版本,请在您的管道配置中包含以下 version 选项:

version: "2" log-pipeline: source: ...

选择 “创建” 时, OpenSearch Ingestion 会确定您指定的主要版本的最新可用要版本,并使用该版本预置管道。例如,如果您指定version: "2",并且最新支持的 Data Prepper 版本为 2.1.1,则 OpenSearch Ingestion 会使用版本 2.1.1 来配置您的管道。我们不会公开显示您的管道正在运行的次要版本。

要在 Data Prepper 新的主要版本可用时升级管道,请编辑管道配置并指定新版本。您无法将管道降级到较早版本。

注意

OpenSearch 新版本的 Data Prepper 发布后,Ingestion 不会立即支持这些版本。在新版本公开发行和 OpenSearch Ingestion 支持新版本之间会有一些延迟。此外, OpenSearch Ingestion 可能明确不完全支持某些主要版本或次要版本。有关完整列表,请参阅支持的 Data Prepper 版本

每当你对启动蓝/绿部署的管道进行更改时, OpenSearch Ingestion 都可以将其升级到当前在管道 YAML 文件中配置的主要版本的最新次要版本。有关更多信息,请参阅使用蓝绿部署进行管道更新。 OpenSearch 除非您在工作流配置中明确更新该version选项,否则 Ingestion 无法更改管道的主要版本。

指定提取路径

对于基于拉取的来源,例如 oTel 跟踪和 o Tel 指标, OpenSearch Ingestion 需要在源配置中添加其他path选项。路径是字符串(例如,/log/ingest),它表示提取的 URI 路径。此路径定义用于向管道发送数据的 URI。

例如,假设您为名为 logs 的提取管道指定了以下条目子管道:

entry-pipeline: source: http: path: "/my/test_path"

向管道中摄取数据时,必须在客户端配置中指定以下端点:https://logs-abcdefgh.us-west-2.osis.amazonaws.com/my/test_path

路径必须以斜杠 (/) 开头,可以包含特殊字符 '-'、'_'、'.'、'/' 以及 ${pipelineName} 占位符。如果您使用(${pipelineName}例如 path: "/${pipelineName}/test_path"),则关联子管道的名称将替代变量。在本例中,它为 https://logs.us-west-2.osis.amazonaws.com/entry-pipeline/test_path

创建管道

本节介绍如何使用 OpenSearch 服务控制台和创建 OpenSearch 摄取管道。 Amazon CLI

要创建管道
  1. 登录亚马逊 OpenSearch 服务控制台,网址为 https://console.aws.amazon.com/aos/home

  2. 在左侧导航窗格中选择管道,然后选择创建管道

  3. 输入管道的名称。

  4. (可选)选择启用持久缓冲功能。持久缓冲功能将您的数据存储在跨多个可用区的、基于磁盘的缓冲区中。更多信息,请参阅持久缓冲功能。如果启用永久缓冲区,请选择加密缓冲区数据的 Amazon Key Management Service 密钥。

  5. 在摄取 OpenSearch 计算单位 (OCU) 中配置最小和最大管道容量。有关更多信息,请参阅 扩缩管道

  6. 管道配置下,以 YAML 格式提供您的管道配置。单个管道配置文件可以包含 1-10 个子管道。每个子管道都由一个来源、零个或多个处理器以及一个接收器组成。对于 OpenSearch 摄取,接收器必须始终是 OpenSearch 服务域。有关支持的选项列表,请参阅 Amazon OpenSearch Ingestion 管道支持的插件和选项

    注意

    您必须在每个子管道中包含 sts_role_arnsigv4 选项。管道采用 sts_role_arn 中定义的规则来签署对域的请求。有关更多信息,请参阅 授予 Amazon OpenSearch Ingestion 管道访问域名的权限

    以下示例配置文件使用 HTTP 源和 Grok 插件来处理非结构化日志数据并将其发送到 OpenSearch 服务域。子管道命名为 log-pipeline

    version: "2" log-pipeline: source: http: path: "/log/ingest" processor: - grok: match: log: [ '%{COMMONAPACHELOG}' ] - date: from_time_received: true destination: "@timestamp" sink: - opensearch: hosts: [ "https://search-my-domain.us-east-1.es.amazonaws.com" ] index: "apache_logs" aws: sts_role_arn: "arn:aws:iam::123456789012:role/{pipeline-role}" region: "us-east-1"
    注意

    如果您在 YAML 管道定义中指定多个接收器,则它们必须全部为同一个 OpenSearch 服务域。一个 OpenSearch 摄取管道无法写入多个不同的域。

    您可以构建自己的管道配置,也可以选择上传文件并导入自行管理的 Data Prepper 管道的现有配置。此外,您也可以使用配置蓝图

  7. 配置管道后,选择验证管道以确认您的配置正确无误。如果验证失败,请修复错误并重新运行验证。

  8. Network(网络)下,选择 VPC access(VPC 访问权限)Public access(公有访问权限)。如果您选择 Public access (公有访问权限),请跳至下一步。如果您选择 VPC 访问,请配置以下设置:

    设置 描述
    VPC

    选择要使用的虚拟私有云 (VPC) 的 ID。VPC 和管道必须位于同一 Amazon Web Services 区域中。

    子网

    选择一个或多个子网。 OpenSearch 服务将在子网中放置 VPC 终端节点和弹性网络接口

    安全组

    选择一个或多个 VPC 安全组,允许所需的应用程序通过管道暴露的端口(80 或 443)和协议(HTTP 或 HTTP)到达接 OpenSearch 入管道。

    有关更多信息,请参阅 保护 VPC 内的 Amazon OpenSearch 摄取管道

  9. (可选)在标签下,将一个或多个标签(键值对)添加到您的管道。有关更多信息,请参阅 标记 Amazon OpenSearch Ingestion 管道

  10. (可选)在 “日志发布选项” 下,开启向 Amazon Logs 发布管道 CloudWatch 日志。建议您启用日志发布,以便更轻松地解决管道问题。有关更多信息,请参阅 监控管道日志

  11. 选择 下一步

  12. 检查您的管道配置,然后选择创建

OpenSearch Ingestion 运行异步进程来构建管道。当管道状态为 Active 时,您可以开始将数据提取到管道。

create-pipeline 命令接受以字符串形式或在 .yaml 文件中的管道配置。如果您以字符串形式提供配置,则必须使用 \n 转义每一个新行。例如,"log-pipeline:\n source:\n http:\n processor:\n - grok:\n ...

以下示例命令采用以下配置创建管道:

  • 最少 4 个 Ingestion OCU,最多 10 个 Ingestion OCU

  • 在虚拟私有云 (VPC) 中预调配

  • 启用日志发布

aws osis create-pipeline \ --pipeline-name my-pipeline \ --min-units 4 \ --max-units 10 \ --log-publishing-options IsLoggingEnabled=true,CloudWatchLogDestination={LogGroup="MyLogGroup"} \ --vpc-options SecurityGroupIds={sg-12345678,sg-9012345},SubnetIds=subnet-1212234567834asdf \ --pipeline-configuration-body "file://pipeline-config.yaml"

OpenSearch Ingestion 运行异步进程来构建管道。当管道状态为 Active 时,您可以开始将数据提取到管道。要检查管道的状态,请使用GetPipeline命令。

要使用 OpenSearch Ingestion API 创建 OpenSearch 摄取管道,请调用该操作。CreatePipeline

成功创建管道后,您可以配置客户端并开始将数据提取到您的 OpenSearch 服务域中。有关更多信息,请参阅 使用 Amazon OpenSearch Ingestion 管道集成

跟踪管道创建的状态

在 OpenSearch Ingestion 配置管道并准备好接收数据时,您可以跟踪管道的状态。

最初创建管道后,当 OpenSearch Ingestion 为采集数据做准备时,它会经历多个阶段。要查看管道创建的各个阶段,请选择管道名称以查看其管道设置页面。在状态下,选择查看详细信息

管道要经过以下几个阶段才可以摄取数据:

  • 验证 — 验证管道配置。此阶段完成后,所有验证均已成功。

  • 创建环境 — 准备和预调配资源。此阶段完成后,即创建了新的管道环境。

  • 部署管道 — 部署管道。此阶段完成后,管道已成功部署。

  • 检查管道运行状况 — 检查管道的运行状况。此阶段完成后,所有运行状况检查均已通过。

  • 启用流量 — 允许管道摄取数据。此阶段完成后,您可以开始将数据提取到管道。

使用get-pipeline-change-progress命令检查管道的状态。以下 Amazon CLI 请求检查名为的管道的状态my-pipeline

aws osis get-pipeline-change-progress \ --pipeline-name my-pipeline

响应:

{ "ChangeProgressStatuses": { "ChangeProgressStages": [ { "Description": "Validating pipeline configuration", "LastUpdated": 1.671055851E9, "Name": "VALIDATION", "Status": "PENDING" } ], "StartTime": 1.671055851E9, "Status": "PROCESSING", "TotalNumberOfStages": 5 } }

要使用 OpenSearch Ingestion API 跟踪管道创建的状态,请调用该操作。GetPipelineChangeProgress

使用蓝图创建管道

不要从头开始创建管道定义,而是使用配置蓝图,这些蓝图是针对常见提取场景(例如 Trace Analytics 或 Apache 日志)的预调配 YAML 模板。配置蓝图可帮助您轻松预调配管道,而不必从头开始编写配置。

要使用管道蓝图
  1. 登录亚马逊 OpenSearch 服务控制台,网址为 https://console.aws.amazon.com/aos/home

  2. 在左侧导航窗格中选择管道,然后选择创建管道

  3. 管道配置下,选择配置蓝图

  4. 选择一个蓝图。管道配置会填充您所选用例的子管道。

  5. 查看注释的文本,该文本将指导您完成蓝图的配置。

    重要

    初始的管道蓝图是无效的。您需要进行一些修改,例如提供 Amazon Web Services 区域 和角色 ARN 以用于身份验证,否则管道验证将失败。

要使用获取所有可用蓝图的列表 Amazon CLI,请发送list-pipeline-blueprints请求。

aws osis list-pipeline-blueprints

该请求返回所有可用蓝图的列表。

要获取有关特定蓝图的更多详细信息,请使用以下get-pipeline-blueprint命令:

aws osis get-pipeline-blueprint --blueprint-name AWS-ApacheLogPipeline

该请求返回 Apache 日志管道蓝图的内容:

{ "Blueprint":{ "PipelineConfigurationBody":"###\n # Limitations: https://docs.aws.amazon.com/opensearch-service/latest/ingestion/ingestion.html#ingestion-limitations\n###\n###\n # apache-log-pipeline:\n # This pipeline receives logs via http (e.g. FluentBit), extracts important values from the logs by matching\n # the value in the 'log' key against the grok common Apache log pattern. The grokked logs are then sent\n # to OpenSearch to an index named 'logs'\n###\n\nversion: \"2\"\napache-log-pipeline:\n source:\n http:\n # Provide the path for ingestion. ${pipelineName} will be replaced with pipeline name configured for this pipeline.\n # In this case it would be \"/apache-log-pipeline/logs\". This will be the FluentBit output URI value.\n path: \"/${pipelineName}/logs\"\n processor:\n - grok:\n match:\n log: [ \"%{COMMONAPACHELOG_DATATYPED}\" ]\n sink:\n - opensearch:\n # Provide an AWS OpenSearch Service domain endpoint\n # hosts: [ \"https://search-mydomain-1a2a3a4a5a6a7a8a9a0a9a8a7a.us-east-1.es.amazonaws.com\" ]\n aws:\n # Provide a Role ARN with access to the domain. This role should have a trust relationship with osis-pipelines.amazonaws.com\n # sts_role_arn: \"arn:aws:iam::123456789012:role/Example-Role\"\n # Provide the region of the domain.\n # region: \"us-east-1\"\n # Enable the 'serverless' flag if the sink is an Amazon OpenSearch Serverless collection\n # serverless: true\n index: \"logs\"\n # Enable the S3 DLQ to capture any failed requests in an S3 bucket\n # dlq:\n # s3:\n # Provide an S3 bucket\n # bucket: \"your-dlq-bucket-name\"\n # Provide a key path prefix for the failed requests\n # key_path_prefix: \"${pipelineName}/logs/dlq\"\n # Provide the region of the bucket.\n # region: \"us-east-1\"\n # Provide a Role ARN with access to the bucket. This role should have a trust relationship with osis-pipelines.amazonaws.com\n # sts_role_arn: \"arn:aws:iam::123456789012:role/Example-Role\"\n", "BlueprintName":"AWS-ApacheLogPipeline" } }

要使用 OpenSearch Ingestion API 获取有关管道蓝图的信息,请使用和操作。ListPipelineBlueprintsGetPipelineBlueprint