自托管连接器

edit

自管理的 Elastic 连接器 运行在您自己的基础设施上。 这意味着它们在您的 Elastic 部署之外运行。

您可以从源代码或Docker容器运行连接器服务

我们还提供了一个使用Docker Compose的快速启动选项,可以一次性启动所有必需的服务:Elasticsearch、Kibana和连接器服务。 有关更多信息,请参阅Docker Compose快速启动

以下连接器可作为自托管连接器使用:

可用性和弹性先决条件

edit

自管理连接器目前不支持Windows。 使用此兼容性矩阵来检查哪些操作系统受自管理连接器支持。 在该页面的自管理连接器下找到此信息。

展开 以查看 Elastic 先决条件信息

您的 Elastic 部署必须包括以下 Elastic 服务:

  • Elasticsearch
  • Kibana

(新的 Elastic Cloud 部署默认包含这些服务。)

要运行自管理的连接器,您的自部署连接器服务版本必须与您的Elasticsearch版本匹配。 例如,如果您正在运行Elasticsearch 8.10.1,您的连接器服务应为版本8.10.1.x。 Elastic不支持运行版本不匹配的部署(升级期间除外)。

自8.10.0版本起,新的自管理连接器不再需要企业搜索服务。 然而,如果您是从8.9之前的版本升级连接器,您需要运行一次企业搜索以将您的连接器迁移到新格式。 在未来的版本中,您可能仍然需要运行企业搜索以进行迁移或升级。

您必须有权访问Kibana,并且对.elastic-connectors索引具有write 索引权限

要在自管理环境中使用连接器客户端,您必须部署连接器服务

支持和许可要求

根据您使用自管理连接器的方式,支持和许可要求会有所不同。

请参阅以下订阅页面以获取详细信息。 在客户端集成部分的Elastic Search中找到您感兴趣的连接器:

请注意以下关于自托管连接器支持的信息:

  • 一个转换但未修改的托管连接器由Elastic支持。
  • 一个转换但自定义的托管连接器由Elastic支持。

部署连接器服务

edit

连接器服务是一个Python应用程序,当使用自管理连接器时,您必须在您自己的基础设施上运行它。 源代码托管在elastic/connectors仓库中。

您可以从源代码运行连接器服务或使用Docker:

教程

edit

这些示例使用PostgreSQL连接器,但所有自管理连接器的基本过程是相同的。

连接器测试

edit

连接器框架使您能够在自托管连接器上运行端到端(E2E)测试,针对真实数据源。

为了避免篡改真实的 Elasticsearch 实例,E2E 测试在 Docker 中运行一个隔离的 Elasticsearch 实例。 配置值设置在您的 docker-compose.yml 文件中。 Docker Compose 管理开发环境的设置,包括模拟的 Elasticsearch 实例和模拟的数据源。

E2E 测试使用 默认 配置值进行连接。 请在每个连接器的文档中查找测试说明。

连接器框架

edit

Elastic 连接器框架使您能够:

  • 自定义现有的自管理连接器。
  • 构建您自己的自管理连接器。

更多信息请参考构建和自定义连接器

从Docker容器运行

edit

使用我们的Docker Compose快速入门,通过连接器快速开始使用完整的Elastic Stack部署。

除了从源代码运行连接器服务外,您还可以使用官方 Docker 镜像在容器中运行该服务。

作为前提条件,您需要有一个正在运行的Elasticsearch和Kibana实例。 在您的Kibana界面中,您需要按照初始设置进行操作,就像您从源代码运行服务一样。

当你准备好运行连接器时:

步骤1:下载示例配置文件

下载示例配置文件。 您可以手动下载,也可以运行以下命令:

curl https://raw.githubusercontent.com/elastic/connectors/main/config.yml.example --output </absolute/path/to>/connectors-config/config.yml

不要忘记将 --output 参数的值更改为您希望在本地系统上保存 config.yml 文件的路径。 但请记住您将此文件保存的位置,因为这在下面的 docker run 步骤中是必需的。

步骤2:更新您自托管连接器的配置文件

使用以下设置更新配置文件以匹配您的环境:

  • elasticsearch.host
  • elasticsearch.api_key
  • connectors

如果你正在针对Docker化的Elasticsearch和Kibana版本运行连接器服务,你的配置文件将如下所示:

# When connecting to your cloud deployment you should edit the host value
elasticsearch.host: http://host.docker.internal:9200
elasticsearch.api_key: <ELASTICSEARCH_API_KEY>

connectors:
  -
    connector_id: <CONNECTOR_ID_FROM_KIBANA>
    service_type: Zoom # sharepoint_online (example)
    api_key: <CONNECTOR_API_KEY_FROM_KIBANA> # Optional. If not provided, the connector will use the elasticsearch.api_key instead

第三步:运行 Docker 镜像

使用以下命令运行带有连接器服务的Docker镜像:

docker run \
-v "</absolute/path/to>/connectors-config:/config" \ # NOTE: you must change this path to match where the config.yml is located
--rm \
--tty -i \
--network host \
docker.elastic.co/integrations/elastic-connectors:9.0.0-beta1.0 \
/app/bin/elastic-ingest \
-c /config/config.yml

对于未发布的版本,请将 -SNAPSHOT 后缀附加到版本号上。 例如,docker.elastic.co/integrations/elastic-connectors:8.14.0.0-SNAPSHOT

官方注册表中查找所有可用的Docker镜像。

在 Kibana 中输入数据源详细信息

edit

一旦连接器服务运行起来,就可以回到 Kibana UI 来完成连接器配置。 在这一步中,您需要添加有关数据源实例的特定连接详细信息,如 URL、授权凭证等。 如上所述,这些详细信息会根据您连接的第三方数据源而有所不同。

例如,PostgreSQL 连接器需要以下详细信息:

  • 主机
  • 端口
  • 用户名
  • 密码
  • 数据库
  • 逗号分隔的表列表

您现在可以运行同步了。 在 Kibana UI 中选择 全量同步 按钮以开始将文档导入 Elasticsearch。

从源代码运行

edit

运行连接器的基本方式是克隆仓库并在本地运行代码。 如果你熟悉Python并且希望快速迭代,这是一个不错的选择。

在 Kibana 中的初始设置

edit

在Kibana UI中遵循连接器工作流程,以选择连接器摄取方法。

接下来,完成以下步骤:

  1. 选择您希望使用的第三方服务,通过选择一个数据源
  2. 创建并命名一个新的Elasticsearch索引
  3. 生成一个新的API密钥并将其安全地保存在某个地方。
  4. 为您的连接器命名并提供一个可选的描述。
  5. 转换托管连接器为自管理连接器(仅在连接器也原生可用时适用)。此操作不可逆。
  6. 从屏幕上显示的示例中复制配置块。您将在后面的步骤中使用它:

    # ...
    connectors:
      - connector_id: 
        api_key:  # 此连接器的范围API密钥(可选)。如果未指定,则使用顶层的`elasticsearch.api_key`值。
        service_type: gmail # 示例
克隆仓库并编辑 config.yml
edit

一旦您创建了索引并输入了数据源的访问详情,您就可以部署连接器服务了。

首先,你需要克隆 elastic/connectors 仓库。

请按照以下步骤操作:

  • 克隆或分叉 connectors 仓库到本地,使用以下命令:git clone https://github.com/elastic/connectors
  • 运行 make config 以生成初始的 config.yml 文件
  • 在您选择的编辑器中打开 config.yml 配置文件。
  • 替换 host(您的 Elasticsearch 端点)、api_keyconnector_idservice_type 的值。

    展开 查看示例 config.yml 文件

    api_keyconnector_idservice_type 的值替换为你之前复制的值。

    elasticsearch:
      api_key:  # 用于将数据写入 .elastic-connectors 和 .elastic-connectors-sync-jobs
                    # 任何没有特定 `api_key` 值的连接器将默认使用此密钥
    connectors:
      - connector_id: 1234
        api_key:  # 用于将数据写入与连接器 1234 关联的 `search-*` 索引
                        # 您的配置文件中可能有多个连接器!
      - connector_id: 5678
        api_key:  # 用于将数据写入与连接器 5678 关联的 `search-*` 索引
      - connector_id: abcd # 未指定显式 api 密钥,因此此连接器将使用 

    连接器的API密钥

    您可以在您的 config.yml 文件中配置多个连接器。

    Kibana UI 使您能够创建作用于特定索引/连接器的 API 密钥。 如果您没有为特定连接器创建 API 密钥,则使用顶级的 elasticsearch.api_keyelasticsearch.username:elasticsearch.password 值。

    如果这些顶级的 Elasticsearch 凭证没有足够的权限来写入各个连接器索引,您需要创建这些额外的、范围限定的 API 密钥。

    以上面的示例为指导。

运行连接器服务
edit

您需要 Python 版本 3.103.11 才能从源代码运行连接器服务。

一旦配置了连接器代码,您就可以运行连接器服务。

在您的终端或IDE中:

  1. cd 进入你的 connectors 克隆/分支的根目录。
  2. 运行以下命令以编译并运行连接器服务:

    make install
    make run

连接器服务现在应该正在运行。 UI会通知您连接器已成功连接到您的Elasticsearch实例。

提醒一下,这里我们是在本地工作。 在生产环境中,您需要将连接器服务部署到您自己的基础设施中。

Docker Compose 快速入门

edit

使用我们的 Docker Compose 快速入门,轻松设置一个完整的自托管堆栈,并尝试 Elastic Connectors。

我们提供了一个脚本来使用 Docker Compose 启动并运行 Elasticsearch、Kibana 和 Connectors 实例。 该脚本会在启动前提示您配置 Connectors。 此外,您可以使用同一组脚本来手动配置 Connectors 并运行堆栈。

有关更多信息,请参阅README中的elastic/connectors源代码库。

PostgreSQL 自管理连接器教程

edit

本教程将引导您完成为 PostgreSQL 数据源创建自管理连接器的过程。 您将使用 Kibana UI 中的 自管理连接器 工作流程。 这意味着您将在自己的基础设施上部署连接器。 有关此连接器的更多信息,请参阅 Elastic PostgreSQL 连接器参考

您将使用连接器框架来创建连接器。 在本练习中,您将在终端(或您的IDE)和Kibana UI中进行操作。

如果您想为另一个数据源部署一个自托管连接器,请使用本教程作为蓝图。 请参阅可用自托管连接器的列表。

想要快速开始使用 Docker Compose 测试自管理的连接器? 请参考 elastic/connectors 仓库中的这个 README 以获取更多信息。

先决条件

edit
弹性前提条件
edit

首先,确保您满足自管理连接器的前提条件

PostgreSQL 先决条件
edit

你需要:

  • PostgreSQL 版本 11+。
  • 表必须由 PostgreSQL 用户拥有。
  • 需要数据库 superuser 权限来索引所有数据库表。

您应该启用PostgreSQL事务的提交时间记录。 否则,所有数据将在每次同步中被索引。 默认情况下,track_commit_timestampoff

通过在 PosgreSQL 服务器命令行上运行以下命令来启用此功能:

ALTER SYSTEM SET track_commit_timestamp = on;

然后重新启动 PostgreSQL 服务器。

步骤

edit

要完成本教程,您需要完成以下步骤:

创建一个Elasticsearch索引

edit

弹性连接器使您能够在Elasticsearch中创建数据源的可搜索、只读副本。 设置自管理连接器的第一步是创建一个索引。

Kibana 用户界面中,转到 搜索 > 内容 > Elasticsearch 索引

创建一个新的连接器索引:

  1. 选择数据摄取方法下选择连接器
  2. 从连接器列表中选择PostgreSQL
  3. 命名您的索引,并可选择更改语言分析器以匹配您的数据源的人类语言。 (您提供的索引名称会自动加上前缀search-。)
  4. 保存您的更改。

索引已创建并准备好进行配置。

设置连接器

edit

一旦您创建了索引,您就可以设置连接器。 您将在用户界面中引导完成此过程。

  1. 编辑连接器的名称和描述。 这将帮助您的团队识别连接器。
  2. 克隆并编辑连接器服务代码。 在这个示例中,我们将使用Python框架。 请按照以下步骤操作:

    • 使用以下命令在本地克隆或分叉该仓库:git clone https://github.com/elastic/connectors
    • 在您选择的编辑器中打开 config.yml 配置文件。
    • hostapi_keyconnector_id 的值替换为您之前收集的值 earlier。 使用此连接器的 service_typepostgresql

      展开 以查看示例 config.yml 文件

      hostapi_keyconnector_id 的值替换为您自己的值。 对于此连接器,使用 service_typepostgresql

      elasticsearch:
        host: > # 您的 Elasticsearch 端点
        api_key: '' # 您的顶级 Elasticsearch API 密钥
      ...
      connectors:
        -
          connector_id: ""
          api_key: "'" # 您的范围连接器索引 API 密钥(可选)。如果未提供,则使用顶级 API 密钥。
          service_type: "postgresql"

运行连接器服务

edit

现在您已经配置了连接器代码,可以运行连接器服务了。

在您的终端或IDE中:

  1. cd 进入你的 connectors 克隆/分支的根目录。
  2. 运行以下命令:make run

连接器服务现在应该正在运行。 UI会通知您连接器已成功连接到Elasticsearch。

这里我们在本地工作。 在生产环境中,您需要将连接器服务部署到您自己的基础设施中。 如果您更喜欢使用 Docker,请参考 repo docs 获取说明。

同步您的 PostgreSQL 数据源

edit
输入您的 PostgreSQL 数据源详细信息
edit

一旦配置了连接器,您就可以使用它来索引您的数据源。

您现在可以在 Kibana UI 中输入您的 PostgreSQL 实例详细信息。

输入以下信息:

  • 主机. PostgreSQL实例的服务器主机地址。
  • 端口. PostgreSQL实例的端口号。
  • 用户名. PostgreSQL账户的用户名。
  • 密码. 该用户的密码。
  • 数据库. PostgreSQL数据库的名称。
  • 逗号分隔的表列表. * 将从配置的数据库中的所有表中获取数据。

一旦您输入了所有这些详细信息,请选择保存配置

启动同步
edit

如果您在 Kibana UI 中导航到 概览 选项卡,您可以看到连接器的 摄取状态。 此时应该已经更改为 已配置

现在是时候通过选择同步按钮来启动同步了。

如果您导航到运行连接器服务的终端窗口,您应该会看到类似以下的输出:

[FMWK][13:22:26][INFO] Fetcher <create: 499 update: 0 |delete: 0>
[FMWK][13:22:26][INF0] Fetcher <create: 599 update: 0 |delete: 0>
[FMWK][13:22:26][INFO] Fetcher <create: 699 update: 0 |delete: 0>
...
[FMWK][23:22:28][INF0] [oRXQwYYBLhXTs-qYpJ9i] Sync done: 3864 indexed, 0 deleted.
(27 seconds)

这确认了连接器已从您的 PostgreSQL 表中获取记录,并将其转换为 Elasticsearch 索引中的文档。

在 Kibana UI 的 文档 标签页中验证您的 Elasticsearch 文档。

如果你对结果满意,请在调度标签页中设置一个定期同步计划。 这将确保你的Elasticsearch中的可搜索数据始终与PostgreSQL数据源的更改保持同步。

了解更多

edit