本文介绍如何将Elasticsearch数据导入到日志服务,实现数据的查询分析、加工等操作。

前提条件

创建数据导入配置

  1. 登录日志服务控制台
  2. 接入数据区域的数据导入页签中,选择Elasticsearch-数据导入
  3. 选择目标Project和Logstore,单击下一步
  4. 设置导入配置。
    1. 导入配置步骤中,配置如下参数。
      参数说明
      配置名称设置配置的名称。
      服务实例URLElasticsearch服务器的URL地址,格式为http://host:port/

      支持设置多个地址,各个地址之间使用英文逗号(,)隔开,例如http://host1:port1/,http://host2:port2/

      通常情况下,Elasticsearch服务器的服务端口为9200。

      重要 如果您设置了VPC实例ID,则此处必须设置host为对应ECS实例的IP地址(IPv4)。
      ES索引列表待导入的索引,多个索引之间使用英文逗号(,)隔开,例如index1,index2,index3
      ES用户名称Elasticsearch用户名。仅当Elasticsearch集群需要用户认证时,此处才需配置。
      ES用户密码Elasticsearch用户密码。
      时间字段Elasticsearch索引中代表时间的列名,用于指定日志时间。

      如果不指定时间字段,则日志服务默认采用数据导入时的系统时间。

      重要 如果要进行增量导入,则必须设置时间字段
      时间字段格式设置时间格式,用于解析时间字段的值。
      • 支持Java SimpleDateFormat语法的时间格式,例如yyyy-MM-dd HH:mm:ss。时间格式的语法详情请参见Class SimpleDateFormat。常见的时间格式请参见时间格式
      • 支持epoch格式,可选值为epoch、epochMillis、epochMacro、epochNano。
      重要 Java SimpleDateFormat不支持Unix时间戳,如果您要使用Unix时间戳,需设置时间字段格式为epoch格式。
      时间字段时区选择时间字段对应的时区。

      时间字段格式为epoch格式时,不需要设置时区。

      ES查询过滤数据的查询语句,需符合Elasticsearch的query_string格式,例如gender:male and city:Shanghai。更多信息,请参见Query string query
      导入模式选择数据导入的模式。
      • 只导入历史数据:数据导入完成后,导入任务自动结束。
      • 自动导入新增数据:导入任务将一直运行。
        重要 如果选择自动导入新增数据,必须设置时间字段
      起始时间指定起始时间后,当时间字段的值大于等于起始时间时,数据才会被导入日志服务。
      重要 只有设置了时间字段后,此配置才有效。
      结束时间指定结束时间后,当时间字段的值小于等于结束时间时,数据才会被导入日志服务。
      重要 只有设置了时间字段且设置导入模式只导入历史数据后,此配置才有效。
      数据最大延迟秒数指定数据产生到写入Elasticsearch的最大延迟时间。
      重要
      • 如果设置的值比真实延迟小,将导致有些数据无法从Elasticsearch导入到日志服务。
      • 设置了时间字段且设置导入模式自动导入新增数据后,此配置才有效。
      检查新数据周期(秒)检查Elasticsearch中新增数据的周期。默认值:300秒,最小值:60秒。
      VPC实例ID如果Elasticsearch集群是VPC环境下的阿里云Elasticsearch集群或ECS上自建的Elasticsearch集群,您可以通过设置VPC实例ID,实现日志服务通过阿里云内网读取Elasticsearch集群的数据。通过阿里云内网读取数据,具备更好的安全性和网络稳定性。
      重要 Elasticsearch集群需允许被IP网段100.104.0.0/16访问。
    2. 单击预览,预览导入结果。
    3. 确认无误后,单击下一步
  5. 预览数据及创建索引,然后单击下一步
    日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击自动生成索引,日志服务将自动生成字段索引。更多信息,请参见创建索引
    重要 如果您要查询和分析日志,那么全文索引和字段索引必须至少启用一种。同时启用时,以字段索引为准。
  6. 单击查询日志,进入查询和分析页面,确认是否成功导入Elasticsearch数据。
    等待1分钟左右,如果能查询到目标Elasticsearch数据,则说明导入成功。

查看导入配置

创建导入配置成功后,您可以在控制台中查看已创建的导入配置及生成的统计报表。

  1. 单击目标Project。
  2. 选择目标日志库下的数据接入 > 数据导入,单击配置名称。
  3. 导入配置概览页面,查看导入配置的基本信息和统计报表。
    Elasticsearch导入

相关操作

  • 删除导入配置
    导入配置概览页面,您可以单击删除配置,删除该导入配置。
    警告 删除后不可恢复,请谨慎操作。
  • 停止和重启导入任务
    创建导入配置后,日志服务会对应生成一个导入任务。您可以在导入配置概览页面,单击停止,停止导入任务。停止后,支持重启。
    重要 导入任务被停止后,其状态最长保留24小时。如果在停止的24小时内没有重启该任务,则该任务将不可用。即在停止的24小时后,再重启该任务,后续任务运行过程中将出错。

常见问题

问题可能原因解决方法
预览时出现Elasticsearch连接错误(failed to connect)。
  • 设置Elasticsearch服务器的URL地址错误。
  • 没有在白名单中添加导入服务对应的IP地址,导致导入服务无法访问Elasticsearch集群。
  • 导入部署在阿里云上的Elasticsearch集群数据时,没有设置VPC实例ID。
  • 确保设置了正确的Elasticsearch服务器的URL地址。
  • 在白名单中添加IP地址,允许导入服务连接Elasticsearch集群。更多信息,请参见IP地址白名单
  • 采用阿里云内网导入部署在阿里云上的Elasticsearch集群数据时,确保设置了VPC实例ID。
预览时出现超时错误(preview request timed out)。待导入的Elasticsearch索引中没有数据或没有符合过滤条件的数据。
  • 如果Elasticsearch索引中无数据,请在写入数据后,再重试预览。
  • 设置时间字段和时间格式时,确保该设置与真实数据中的时间字段、格式相匹配。
  • 设置Elasticsearch查询条件或时间范围时,确保Elasticsearch索引中存在符合条件的数据。
日志服务中显示的数据时间和数据本身的时间不一致。设置导入配置时,没有指定日志时间字段或者设置时间格式、时区有误。设置指定的日志时间字段以及正确的时间格式和时区。更多信息,请参见创建数据导入配置
导入数据后,无法查询和分析数据。
  • 数据不在查询范围内。
  • 未配置索引。
  • 索引未生效。
  • 检查待查询数据的时间是否在查询时间范围内。

    如果不在查询范围内,请调整查询范围并重新查询。

  • 检查是否已为Logstore设置索引。

    如果未设置,请先设置索引。具操操作,请参见创建索引重建索引

  • 如果已设置索引,且数据处理流量观测仪表盘中显示的成功导入数据量符合预期,则可能原因是索引未生效,请尝试重建索引。具体操作,请参见重建索引
导入的数据条目数量少于预期。存在大于3 MB的Elasticsearch数据,您可以通过数据处理流量观测仪表盘确认。缩小单条Elasticsearch数据的大小。
开启增量导入时,新数据存在明显的延迟。
  • 设置数据最大延迟秒数过大。
  • Elasticsearch集群带宽达到限制。
  • 通过公网导入数据时,网络不稳定。
  • Logstore Shard数量过少。
  • 更多原因,请参见性能限制
  • 确保设置了合理的数据最大延迟秒数,并根据真实情况进行调整。
  • 检查Elasticsearch集群流量是否达到带宽限制(特别是部署在阿里云上的Elasticsearch集群),如果达到或接近带宽限制,则需要进行带宽扩容。
  • 如果通过公网导入Elasticsearch数据,则需保证公网带宽足够大。
  • Logstore Shard数量较少时,请尝试增加Shard的个数,并观察延迟情况。具体操作,请参见管理Shard

错误处理机制

错误项说明
与Elasticsearch集群通信异常导入任务采用Scroll模式拉取Elasticsearch数据,默认使用的keep-alive时长为24小时。遇到网络连接错误或其他无法与Elasticsearch服务正常通信的错误(例如用户认证错误)时,导入任务会自动重试。

如果在24小时内无法恢复正常连接,Scroll Session信息将被Elasticsearch服务端清除,导致重试导入任务也无法恢复正常运行(提示No search context found错误),您只能重建导入任务。

SLS Logstore不存在导入任务会定期重试,如果在24小时内重建Logstore,导入任务会从之前中断的位置继续读取Elasticsearch数据。否则,Scroll Session信息将被Elasticsearch服务端清除,您只能重建导入任务。