You need to enable JavaScript to run this app.
导航

从 Elasticsearch 导入数据

最近更新时间2024.03.28 10:17:48

首次发布时间2023.04.24 11:20:10

日志服务提供便捷高效的数据导入功能,支持 Elasticsearch 等多种数据源。数据导入功能可以将您在 Elasticsearch 中的数据进行结构化,并保存在日志服务中,以便后续的查询分析、多平台消费处理。本文档介绍从 Elasticsearch 中导入数据到日志服务的操作步骤。

功能概述

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎。在服务上云、应用迁站等数据迁移场景中,您可以将数据从原有的 ELK 系统中快速导入到日志服务中。目前支持的数据源包括火山引擎 Elasticsearch、自建 Elasticsearch 集群、其他云厂商的 Elasticsearch 集群等。从 Elasticsearch 导入数据时,支持通过查询语句过滤数据、设置时间字段等。创建导入任务后还可以在日志服务控制台中查看导入进度及状态信息,或通过服务日志分析查看进度和状态的详细数据。
此外,日志服务还会为导入的日志数据添加以下元数据字段:

字段

说明

__tag____index__

该日志所属来源索引。

__tag____meta_id__

该日志所属文档 ID。

__source__

导入索引的对应 url,即索引所在 Elasticsearch 集群的服务地址。

注意事项

  • 目前仅支持导入历史数据,即成功创建导入任务之后写入 Elasticsearch 的数据暂不支持导入到日志服务中。历史数据导入完成后,导入任务自动结束。
  • 仅支持通过公网导入数据到日志服务,如果您的数据源为火山引擎 Elasticsearch 或火山引擎 ECS 自建 Elasticsearch 集群,则需要为集群开启公网访问。
  • 创建导入任务之后,建议为字段开启索引,以便预览或查询分析导入的日志数据。
  • 如果 Elasticsearch 中的的字段 key 以下划线(_)开头,则日志服务会默认为其添加 tag 前缀,以便后续开启索引、日志检索与分析。

使用限制

限制项

说明

单条数据大小

支持导入的单条数据最大为 1MiB。导入时,如果数据大小超过此限制,该数据会被丢弃。

数据导入配置数量

每个日志项目最多可创建 100 个不同类型的数据导入任务。

导入数据范围

仅支持导入历史数据,即成功创建导入任务之后写入 Elasticsearch 的数据暂不支持导入到日志服务中。历史数据导入完成后,导入任务自动结束。

并发任务数量

导入任务采用 Scroll 模式拉取 Elasticsearch 数据,而 Elasticsearch 服务端存在 Scroll 请求数量限制,因此每个 Elasticsearch 集群所有导入任务对应的分区总数不能超过该限制,否则部分导入任务将失败。
该限制由参数 Elasticsearch 集群中的search.max_open_scroll_context指定,默认为 500 个。

修改导入任务

创建日志导入任务后,不可修改任务的数据源等配置。如果配置错误,请删除配置后重新创建。

性能说明

ElasticSearch 数据导入功能的服务性能与多种因素有关。主要因素包括:

  • ES 查询语句的复杂度:导入任务中需要配置 ES 查询语句,用于过滤数据。导入任务中配置的 ES 查询语句越复杂,ES 服务端就会消耗越多的时间去执行请求,从而影响当前导入任务的的数据读取速度。
  • 目标日志主题写入速度:目标日志主题的 Shard 数量决定了数据的写入速度。日志主题单个 Shard 的写入速率上限是 5 MiB/s,建议根据数据量合理评估目标日志主题 Shard 数量,例如开启自动分裂功能,或者当数据量较大时,及时增加目标日志主题的 Shard 数量。关于 Shard 的详细信息,请参考管理分区

费用说明

从 ElasticSearch 导入数据涉及日志服务的数据存储费用和内网读流量费用。具体的价格信息请参考日志服务计费项

计费项

说明

写流量

ElasticSearch 数据写入到日志服务中,在日志服务中涉及写流量费用。流量费用根据压缩后的数据量进行计费。

日志存储

日志保存到日志服务后,后端会自动对其进行压缩,存储费用以压缩后的实际大小为准。

其他

  • 推荐为已导入的数据开启索引,便于后续的查询分析与数据统计。开启索引后会产生索引存储费用。按照压缩前的日志数据被建立的索引所占用的存储空间计费。
  • 已导入的数据如果后续产生数据读取、数据加工、数据投递等操作,则按照计费标准进行收费。

前提条件

  • 已创建 Elasticsearch 集群。
  • 已创建日志项目和日志主题。具体操作步骤请参考创建资源
  • 从阿里云或腾讯云 Elasticsearch 导入数据前,您需要在源端节点配置 IP 地址白名单,允许日志服务数据导入任务访问源端节点的数据。IP 地址列表请参考 IP 地址列表
  • 首次使用日志导入或日志投递功能之前,需要完成云资源访问授权,即授予日志服务产品访问并写入资源的权限。如果尚未授权,日志服务会在控制台创建日志导入任务时引导您进行操作,推荐使用火山引擎主账号进行授权,相关说明请参考跨服务访问授权

创建 ES 数据导入任务

步骤一 基础信息配置

  1. 登录日志服务控制台

  2. 在顶部导航栏中选择日志服务所在的地域。

  3. 在左侧导航栏中选择日志服务 > 日志项目管理,并单击指定的日志项目名称。

  4. 在左侧导航栏中单击日志接入

  5. 数据导入区域选择 Elasticsearch

  6. 填写基础信息配置

    配置

    说明

    导入类型

    日志导入任务的类型,默认为从Elasticsearch导入

    日志主题名称

    目的端日志主题的名称,即从 Elasticsearch 导出的日志数据,在火山引擎日志服务中保存的日志主题名称。

    说明

    云产品日志、服务日志等专属日志主题不支持导入数据。

    任务名称

    日志导入任务的名称。

步骤二 数据源配置

  1. 填写数据源配置。

    配置

    说明

    ES接入URL

    Elasticsearch 集群的服务地址,URL 格式,即 http://host:port/

    用户名

    Elasticsearch 用户名。
    仅在 Elasticsearch 集群开启用户认证时需要设置。

    密码

    Elasticsearch 用户密码。
    仅在 Elasticsearch 集群开启用户认证时需要设置。

    索引列表

    待导入到日志服务中的索引。可设置多个索引,索引之间使用英文逗号(,)分隔,例如indexA,indexB,indexC

    ES 查询语句

    用于过滤数据的查询语句,符合查询条件的数据才会导入到日志服务中。指定为 * 或置空表示导入时不过滤数据。
    查询语句必须符合 Elasticsearch 的 query_string 格式,例如 project:tls and owner:zhangsan。详细信息请参考 Query string query

    指定时间段

    是否用指定 Elasticsearch 列作为日志时间。默认情况下,日志服务采用数据导入时的系统时间作为日志时间。您也可以开启指定时间段设置,开启后需要指定 Elasticsearch 索引中表示时间的列名,日志服务会用该字段值作为日志时间。
    开启时,应同时指定以下配置:

    • 时间字段名称:时间字段的 Key。
    • 时间字段格式:时间字段的格式,用于解析时间字段的 Value。支持的时间格式设置请参考时间格式,例如时间字段内容为 1651648409,则可配置时间字段格式为 %s,时间字段内容为 1651648416882,则可配置时间字段格式为 %F,时间字段内容为 2022-01-01T15:30:00.999+0800,则可配置时间字段格式为 %Y-%m-%dT%H:%M:%S.%f%z
    • 导入时间范围:待导入数据的起始时间和结束时间。符合时间范围的数据才会被导入的日志服务中。
    • 时区:时间字段对应的时区。

    导入模式

    选择数据导入的模式。目前仅支持导入历史日志,即成功创建导入任务之后写入 ES 的数据暂不支持导入到日志服务中。历史数据导入完成后,导入任务自动结束。

    预览

    单击预览,可查看基于当前配置的数据导入结果。如果预览到的数据不符合预期,请修改配置后重试。

  2. 确认配置后单击下一步

步骤三 检查索引配置

  1. 检查索引配置。
    根据页面提示,按需设置或更新索引,您也可以单击导入已有索引配置,导入其他日志主题的索引。
    • 若此日志主题未设置索引,可以参考配置索引进行设置。
    • 若此日志主题已设置索引,可以根据采集规则中解析的日志字段判断是否需要更新索引。

    说明

    • 启用索引后,您才能检索分析采集到的日志数据。
    • 更新后的索引设置仅对后续写入的新数据生效。其他检索分析的使用说明及限制请参考检索概述分析概述
  2. 单击完成:检查索引配置

验证数据导入结果

  1. 在左侧导航栏中单击检索分析。
  2. 在检索分析页面中预览数据。
    数据写入大约 1 分钟之后可在日志服务检索分析页面中预览。默认展示最新 5 分钟写入的日志数据,您也可以设置其他时间范围或检索语句。如果成功预览或查询到 ES 集群中导入的数据,表示导入成功。
    您也可以在数据导入任务列表页面中查看导入任务的状态信息,详细说明请参考查看导入任务

查看导入任务

查看配置详情

  1. 登录日志服务控制台

  2. 在顶部导航栏中选择日志服务所在的地域。

  3. 在左侧导航栏中单击日志项目管理,并单击指定的日志项目名称。

  4. 在左侧导航栏中单击日志接入 > 数据导入

  5. 单击日志导入任务名称,在配置详情页签中查看任务的配置信息。 配置详情页签可查看导入任务的基本信息、数据源配置及日志提取模式。

    展示项

    说明

    基本信息

    任务名称

    ES 数据导入任务的名称。

    任务ID

    ES 数据导入任务的 ID。

    导入任务状态

    导入任务的状态。详细说明请参考任务状态说明

    任务类型

    导入任务的类型,Elasticsearch 表示 ES 数据导入任务。

    所属日志主题ID

    导入的数据存储的日志主题。您可以根据页面提示配置索引,以便后续的查询分析与数据统计。

    创建时间

    导入任务的创建时间。

    数据源配置

    ES接入URL

    Elasticsearch 集群的服务地址。

    用户名

    Elasticsearch 用户名。

    密码

    Elasticsearch 密码。

    索引列表

    待导入到日志服务中的索引。

    ES 查询语句

    用于过滤数据的查询语句

    导入模式

    数据导入的模式。目前仅支持导入历史日志,即成功创建导入任务之后写入 ES 的数据暂不支持导入到日志服务中

    指定时间段

    是否指定 Elasticsearch 索引中表示时间的列名,用该字段值作为日志时间。

    时间字段名称

    时间字段的 Key。
    仅在指定时间段设置为开启状态时显示。

    时间字段格式

    时间字段的格式。
    仅在指定时间段设置为开启状态时显示。

    导入时间范围

    待导入数据的起始时间和结束时间。
    仅在指定时间段设置为开启状态时显示。

    时区

    时间字段对应的时区。
    仅在指定时间段设置为开启状态时显示。

任务状态说明

导入任务的状态说明如下:

状态

说明

导入中

导入任务执行中。您可以通过服务日志中 BytesTransferred 和 BytesTotal 字段判断当前的任务执行进度。

导入完成

导入任务已执行完毕。符合导入规则的所有数据已被成功导入到日志服务的指定日志主题中。

导入异常

导入任务异常。
任意一条数据导入失败都会导致整个任务的异常状态,例如 ES 中索引被删除、ES 集群网络故障等原因引起的索引导入失败。建议处理异常问题之后,重新导入问题数据。 此外,您可以通过服务日志查看问题索引的详细信息,日志字段请参考服务日志

删除导入任务

如果数据导入任务遇到了故障或异常,您可以删除故障的导入任务,重新导入数据。如果已完成存量日志数据的迁移,或者不再需要导入日志到火山引擎日志服务,您可以参考以下步骤删除日志导入任务。

说明

  • 删除日志导入任务不影响已成功导入的日志数据。
  • 删除日志导入任务之后不可恢复,请谨慎操作。
  1. 登录日志服务控制台
  2. 在顶部导航栏中选择日志服务所在的地域。
  3. 在左侧导航栏中选择日志服务 > 日志项目管理,并单击指定的日志项目名称。
  4. 在左侧导航栏中单击日志接入
  5. 数据导入页签中的任务列表区域找到需要删除的日志导入任务,并在其对应的操作列单击删除
  6. 在弹出对话框中确认待删除的任务信息,并单击确定

问题处理与故障排查

常见问题

可能原因

解决方法

预览日志时出现报错 “time out”。

  • 导入任务 Elasticsearch URL 有误或不合法。
  • 没有配置 IP 白名单,Elasticsearch 集群屏蔽了火山引擎日志服务的访问。
  • 检查导入使用的 Elasticsearch URL 是否正确。
  • 检查是否已在 Elasticsearch 白名单中正确配置日志服务的公网 IP 地址。IP 地址列表请参考 IP 地址列表

预览日志时出现报错 “invalid arguement”。

  • 使用的检索语句 query_string 不合法。
  • 访问 Elasticsearch 的用户名、密码不合法。
  • 检查检索语句是否符合 Elasticsearch 标准
  • 检查任务中配置的 Elasticsearch 用户名、密码是否正确。

预览时,日志时间不符合预期。

未配置日志时间字段,或者字段格式不正确。

开启指定时间段配置,并正确设置时间字段格式。支持的时间格式设置请参考时间格式

导入数据后,部分日志检索不到。

开始导入之后再创建日志索引,导致索引对开启前导入的日志不生效。

日志索引仅对开启索引设置之后采集的日志有效,修改索引后新索引配置也是如此。建议后续创建新的导入任务时,提前为目标 Topic 设置索引。