【技术干货】想要高效采集数据到阿里云Elasticsearch,这些方法你知道吗?

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 本文全面介绍了Elastic Beats、Logstash、语言客户端以及Kibana开发者工具的特性及数据采集到阿里云Elasticsearch(简称ES)服务中的解决方案。帮助您全面了解原理并选择符合自身业务特色的数据采集方案。

简介:

本文全面介绍了Elastic Beats、Logstash、语言客户端以及Kibana开发者工具的特性及数据采集到阿里云Elasticsearch(简称ES)服务中的解决方案。帮助您全面了解原理并选择符合自身业务特色的数据采集方案。

本文字数:2763
阅读时间:预计10分钟

以下是正文


背景信息

对于数据搜索和分析来说,Elasticsearch无处不在。开发人员和社区可使用Elasticsearch寻找各种各样的用例,从应用程序搜索和网站搜索,到日志、基础架构监测APM安全分析,不一而足。虽然现在有针对这些用例的免费解决方案,但是开发人员首先需要将其数据提供给Elasticsearch。

本文提供了以下几种常见的将数据采集到阿里云ES中的方法。

  • Elastic Beats
  • Logstash
  • 语言客户端
  • Kibana开发工具

Elasticsearch提供了灵活的RESTful API,用于与客户端应用程序通信。因此,REST调用被用来采集数据、执行搜索和数据分析,以及管理集群及其索引。实际上,上述所有方法都依赖于REST API将数据采集到Elasticsearch。

Elastic Beats

Elastic Beats是一组轻量型的数据采集器,可以方便地将数据发送给Elasticsearch服务。由于是轻量型的,Beats不会产生太多的运行时开销,因此,可以在硬件资源有限的设备(如 IoT 设备、边缘设备或嵌入式设备)上运行和收集数据。如果您需要收集数据,但没有资源来运行资源密集型数据收集器,那么Beats会是您最佳的选择。这种无处不在(涵盖所有联网设备)的数据收集方式,让您能够快速检测到异常情况做出反应,例如系统范围内的问题和安全事件等。
当然,Beats并不局限于资源有限的系统,它们还可用于具有更多可用硬件资源的系统。
Beats有多种风格,可以收集不同类型的数据:

  • Filebeat
    支持您从以文件形式提供的源中读取、预处理和传输数据。虽然大多数用户使用Filebeat来读取日志文件,但它也支持非二进制文件格式。Filebeat还支持多种其他数据源,包括TCP/UDP、容器、Redis和Syslog。借助丰富的模块,可以轻松针对Apache、MySQL和Kafka等常见应用程序的日志格式,进行收集,并解析相应的数据。
  • Metricbeat
    可以收集并预处理系统和服务指标。系统指标包括关于运行中进程的相关信息,以及CPU/内存/磁盘/网络利用率方面的数据。这些模块可用于收集来自许多不同服务的数据,包括Kafka、Palo Alto Networks、Redis等。
  • Packetbeat
    可收集并预处理实时网络数据,从而支持应用程序监测、安全和网络性能分析。此外,Packetbeat还支持DHCP、DNS、HTTP、MongoDB、NFS和TLS协议。
  • Winlogbeat
    可从Windows操作系统捕获事件日志,包括应用程序事件、硬件事件,以及安全和系统事件。
  • Auditbeat
    可以检测对关键文件的更改,并从Linux的审计框架收集事件。不同的模块简化了它的部署,这主要在安全分析用例中使用。
  • Heartbeat
    使用探测来监测系统和服务的可用性。因此,Heartbeat在许多场景中都很有用,例如基础架构监测和安全分析。ICMP、TCP和HTTP都是受支持的协议。
  • Functionbeat
    可以从无服务器环境(如 AWS Lambda)中收集日志和指标。

您可以参考阿里云Elasticsearch通过Beats搭建可视化运维系统,学习Beats的使用方法。其他Beats的使用方法与此类似。

Logstash

Logstash是一个强大而灵活的工具,可以读取、处理和传送任何类型的数据。Logstash提供了许多功能,这些功能目前还不可用,或者通过Beats执行成本太高,例如通过对外部数据源执行查找来丰富文档。不管采用哪种方式,Logstash的这种功能和灵活性都是有代价的。此外,Logstash的硬件要求也显著高于Beats。严格来说,Logstash通常不应部署在低资源设备上。因此,在Beats功能不足以满足特定用例要求的情况下,可将Logstash用作其替代选择。

一种常见的架构模式是将Beats和Logstash组合起来:使用Beats来收集数据,并使用Logstash来执行Beats无法执行的数据处理任务。

Logstash概述

阿里云Elasticsearch提供了Logstash服务。阿里云Logstash Service作为服务器端的数据处理管道,提供了100%兼容开源的Logstash功能,能够动态地从多个来源采集数据、转换数据,并且将数据存储到所选择的位置。通过输入、过滤和输出插件,Logstash可以对任何类型的事件加工和转换。
Logstash通过事件处理管道来执行任务,其中每个管道至少包含以下各项中的一个:

  • 输入
    从数据源读取数据。官方支持多种数据源,包括文件、http、imap、jdbc、kafka、syslog、tcp和udp。
  • 过滤器
    以多种方式处理和丰富数据。在许多情况下,首先需要将非结构化的日志行解析为更加结构化的格式。因此,除其他功能外,Logstash还在正则表达式的基础上,提供了解析CSV、JSON、键/值对、分隔的非结构化数据,以及复杂的非结构化数据的过滤器(grok 过滤器)。Logstash还提供了更多的过滤器,通过执行DNS查找,添加关于IP地址的地理信息,或通过对自定义目录Elasticsearch索引执行查找来丰富数据。通过这些附加的过滤器,能够对数据进行各种转换,例如重命名、删除、复制数据字段和值(mutate 过滤器)。
  • 输出
    将解析后并加以丰富的数据写入数据接收器,是Logstash处理管道的最后阶段。虽然有很多输出插件可用,但本文主要讨论如何使用Elasticsearch输出,将数据采集到Elasticsearch服务中。

Logstash示例管道

以下提供了一个示例Logstash管道,该管道能够:

  • 读取Elastic博客RSS源。
  • 通过复制/重命名字段、删除特殊字符以及HTML标记,来执行一些简单的数据预处理。
  • 将文档采集到Elaticsearch。

1.参考通过Kibana配置Pipeline,按照以下示例配置阿里云Logstash管道。

input { 
  rss { 
    url => "/blog/feed" 
    interval => 120 
  } 
} 
filter { 
  mutate { 
    rename => [ "message", "blog_html" ] 
    copy => { "blog_html" => "blog_text" } 
    copy => { "published" => "@timestamp" } 
  } 
  mutate { 
    gsub => [  
      "blog_text", "<.*?>", "",
      "blog_text", "[\n\t]", " " 
    ] 
    remove_field => [ "published", "author" ] 
  } 
} 
output { 
  stdout { 
    codec => dots 
  } 
  elasticsearch { 
    hosts => [ "https://<your-elsaticsearch-url>" ] 
    index => "elastic_blog" 
    user => "elastic" 
    password => "<your-elasticsearch-password>" 
  } 
}

hosts需要替换为<对应阿里云Elasticsearch实例的内网地址>:9200;;password需要替换为对应阿里云Elasticsearch的访问密码。

  1. 将Logstash与阿里云Elasticsearch相关联。详细操作方法请参见管道管理配置
  2. 在Kibana控制台中,查看索引数据。

POST elastic_blog/_search

  1. 详细操作方法请参见执行任务并查看结果

语言客户端

在某些情况下,最好将数据采集与自定义应用程序代码集成。为此,建议您使用一个官方支持的Elasticsearch客户端。这些客户端是抽象出数据采集低层细节的库,使您能够专注于特定应用程序的实际工作。Java、JavaScript、Go、.NET、PHP、Perl、Python和Ruby都有官方客户端。有关您所选语言的所有详细信息和代码示例,请参见相关文档即可。如果您的应用程序不是用上面所列语言编写的,则可以在社区贡献的客户端中查找相关文档。

Kibana开发工具

推荐您使用Kibana开发控制台,开发并调试Elasticsearch请求。Kibana开发工具公开了通用的Elasticsearch REST API的全部功能和灵活性,同时抽象出了底层HTTP请求的技术细节。您可以使用Kibana开发工具,将原始JSON文档添加到Elasticsearch中。

PUT my_first_index/_doc/1 
{ 
    "title" :"How to Ingest Into Elasticsearch Service",
    "date" :"2019-08-15T14:12:12",
    "description" :"This is an overview article about the various ways to ingest into Elasticsearch Service" 
}

说明 除了Kibana开发工具以外,您也可以使用其他工具,通过Elasticsearch提供的通用REST接口,与Elasticsearch通信并采集文档。例如curl是一款经常作为最后手段使用的工具,用于开发、调试或与自定义脚本集成。

总结

将数据采集到Elasticsearch服务的方法不胜枚举。您需要根据特定用例、需求和环境,选择合适的方法或工具来采集数据。

  • Beats提供了一种方便、轻量级的开箱即用型解决方案,可以从许多不同的来源收集和采集数据。与Beats封装在一起的模块为许多常见数据库、操作系统、容器环境、Web服务器、缓存等,提供了数据获取、解析、索引和可视化的配置。这些模块可提供五分钟实现数据到仪表板的体验。因为Beats是轻量型的,所以非常适合资源受限的嵌入式设备,例如IoT设备或防火墙。
  • Logstash是一种灵活的工具,可用于读取、转换和采集数据,提供了大量的过滤器、输入和输出插件。如果Beats的功能对于某些用例来说还不够,那么一种常见的架构模式是使用Beats来收集数据,并通过Logstash做进一步处理,然后再采集到Elasticsearch中。
  • 当您需要直接从应用程序采集数据时,建议使用官方支持的客户端库。
  • 当您需要对Elasticsearch请求进行开发或调试时,建议您使用Kibana开发工具。

加入我们

加入《Elasticsearch中文技术社区》,与更多开发者探讨交流

8.jpeg


订阅《阿里云Elasticsearch技术交流期刊》每月定期为大家推送相关干货

9.png


2019年阿里云云栖大会上,Elasticsearch背后的商业公司Elastic与阿里云Elasticsearch确定战略合作升级,在100%兼容开源的基础上,完成了ELK的完整生态云上闭环,欢迎开通使用。
点击了解更多产品信息
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
3天前
|
存储 人工智能 数据管理
【云故事探索】基于阿里云助力地理产业2.0落地,实现遥感数据智能化管理
中国某遥感数据服务中心借助阿里云ECS、GPU和OSS服务,成功实现了地理信息产业升级。此前,中心面临数据管理混乱、服务响应慢等问题。通过阿里云的解决方案,构建了全生命周期管理的遥感数据平台,强化了自动化、智能化的数据生产能力,提升了数据服务的准确性和及时性。此外,平台还增强了数据共享,扩大了应用范围。未来,中心计划结合AI技术,探索地理信息3.0时代,利用阿里云的人工智能平台进一步提升数据管理和应用能力。
47 1
|
1天前
|
Cloud Native 安全 物联网
【阿里云云原生专栏】云边端一体化:阿里云如何利用云原生技术赋能物联网
【5月更文挑战第22天】阿里云借助云原生技术赋能物联网,实现云边端一体化,提升系统弹性与敏捷性。通过容器化部署,保证高可用性与可靠性。在智能交通等领域,阿里云提供高效解决方案,实现实时数据分析与决策。代码示例展示如何使用阿里云服务处理物联网数据。同时,阿里云重视数据安全,采用加密和访问控制保障数据隐私。丰富的工具和服务支持开发者构建物联网应用,推动技术广泛应用与发展。
122 1
|
2天前
|
弹性计算 Kubernetes Cloud Native
【阿里云弹性计算】阿里云ECS与容器技术融合:打造敏捷的云原生基础设施
【5月更文挑战第21天】阿里云ECS结合容器技术(如Docker和Kubernetes),助力企业构建敏捷云原生基础设施。ECS提供高性能服务器,支持容器快速部署和自动化管理,实现应用的高可用性和可维护性。通过二者协同,企业能打造高效、可扩展的应用,加速数字化转型。示例代码展示了在ECS上使用Docker和Kubernetes部署云原生应用的过程。
31 3
|
3天前
|
存储 弹性计算 数据库
阿里云oss备份网站数据的详细步骤
该教程指导如何使用阿里云OSS备份网站数据。首先,注册阿里云账号并购买40GB的OSS存储空间。创建Bucket,选择与服务器相同的区域和私有权限。安装阿里云OSS插件,获取AccessKey信息。在宝塔面板中设置计划任务进行网站或数据库备份,选择内网域名以节省流量。备份完成后,通过文件管理器检查OSS中是否有备份文件。下载备份文件需点击文件名,然后打开文件URL。
|
6天前
|
监控 安全 搜索推荐
Email发送API的方法?AOKSend和阿里云哪个效果更好?
Email发送API在企业与客户沟通中扮演关键角色,允许自动化和个性化邮件发送。本文比较了AOKSend和阿里云的API:AOKSend以其高送达率、快速发送和详细分析报告脱颖而出,适合中小企业;阿里云则凭借稳定性、大规模发送能力和综合云服务吸引大企业。选择合适API能优化邮件营销效果。
|
6天前
|
SQL 关系型数据库 数据库
实时计算 Flink版产品使用合集之将数据写入Elasticsearch时,若Elasticsearch中的字段类型为date,对应的SQL类型应该是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
27 0
|
6天前
|
SQL 监控 API
实时计算 Flink版产品使用合集之可以用来同步数据到 Elasticsearch(ES)吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
19 0
实时计算 Flink版产品使用合集之可以用来同步数据到 Elasticsearch(ES)吗
|
7天前
|
JSON 搜索推荐 API
使用Elasticsearch进行全文搜索:技术深度解析
【5月更文挑战第16天】本文深入解析了使用Elasticsearch进行全文搜索的技术细节。Elasticsearch是一个基于Lucene的开源搜索引擎,支持全文、结构化搜索和数据分析,具备优秀的扩展性。文中介绍了其核心功能,包括全文搜索、结构化搜索、分析和可扩展性。详细步骤涉及安装配置、数据准备、创建索引、导入数据、构建查询及结果处理。Elasticsearch凭借其高效性能和灵活性,成为企业全文搜索的首选解决方案。
|
8天前
|
Cloud Native 安全 数据中心
|
8天前
|
NoSQL MongoDB 数据库
国内唯一 阿里云荣膺MongoDB“2024年度DBaaS认证合作伙伴奖”
阿里云连续第五年斩获MongoDB合作伙伴奖项,也是唯一获此殊荣的中国云厂商。一起学习MongoDB副本集的选举机制以及可能会出现的特殊情况。
国内唯一 阿里云荣膺MongoDB“2024年度DBaaS认证合作伙伴奖”

相关产品

  • 检索分析服务 Elasticsearch版