Logstash:迁移数据到 Elasticsearch

在生产环境中,不使用 Apache Kafka 等流平台进行数据迁移并不是一个好的做法。 在这篇文章中,我们将详细探讨 Apache Kafka 和 Logstash 的关系。

但首先让我们简单了解一下 Apache Kafka 的含义。 Apache Kafka 是分布式流平台,擅长实时数据集成和消息传递。

Kafka 架构不复杂且直接。 生产者将给定主题的数据发送到 Kafka Broker; Kafka 集群包含一个或多个 broker,用于存储从生产者接收到的消息,订阅 Kafka 主题的消费者将接收数据。 由于它是一个分布式平台,Zookeeper 有助于管理架构。

  • Kafka Producer 是数据的生产者; 它是源头。 它将数据推送到 Kafka 服务器,即 broker。
  • 单个 Kafka 服务器称为 Kafka Broker,而 Kafka Broker 的集合称为 Kafka 集群。 Kafka 代理将数据存储在它们运行的服务器磁盘上的目录中。
  • Kafka topic 将充当数据流的唯一标识符。 由于多个生产者可以将数据发送到同一个代理,如果消费者想要使用数据,则很难识别。 多个生产者也可以将数据发送到同一 topic。
  • Consumers 是消费群体的一部分。 单个 consumer 将读取多个 Kafka  topic 的消息。
  • Zookeeper 用于元数据管理。 它跟踪哪些代理是 Kafka 集群的一部分。 它还存储主题和权限的配置。

安装并运行 Kafka 实例是测试迁移的必要条件。如果你想了解更多关于 Kafka 的安装知识,请参考:

  • Elastic:Data pipeline:使用 Kafka => Logstash => Elasticsearch

  • Elasticsearch:使用 Logstash 构建从 Kafka 到 Elasticsearch 的管道 - Nodejs

启动 Kafka 的过程围绕以下命令进行。

# To create topic in Kafka.
kafka-topics.bat --create --bootstrap-server localhost:9092 --topic <topic_name># To produce data or to ingest data using producer module.
kafka-console-producer.bat --broker-list localhost:9092 --topic <topic_name># To see the data in the topic.
kafka-console-consumer.bat --topic <topic_name> --bootstrap-server localhost:9092 --from-beginning

注意:在上面显示的命令是针对 Windows 系统的。针对 Linux 系统,这些命令变成了 kafka-console-consumer.sh。

使用下面的配置文件,我们可以使用 JDBC 驱动程序从任何数据库中提取数据,将数据迁移到 Kafka,然后使用 Logstash 从 Kafka 将数据迁移到 Elasticsearch。

我们在 “config” 文件夹中创建管道配置文件来定义 Logstash 的处理阶段。 Logstash 仅加载 “config” 目录中的 “.conf” 文件,而忽略其他文件。 基本配置包括输入、过滤器和输出插件。 输入插件读取源事件,过滤器插件处理事件,输出插件将数据发送到特定目的地

在下面的配置模板中,我们在输入部分使用了 JDBC 插件,在输出部分使用了 Elasticsearch 插件。

Database to Kafka Server : Logstash .conf file.

input 
{id => "jdbc_input"# path to third party driver library# replace it with where you placed the driver.jdbc_driver_library => "/path/to/mysql-connector-java.jar"# class to loadjdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"# Replace the JDBC connection string with your actual database details  jdbc_connection_string => "jdbc:<sqlserverip>://:<port>;databaseName=<DbName>;encrypt=true;trustServerCertificate=true;user=<username>;password=<password>;"# database Credentials# replace it with your own credentials. jdbc_user => "<username>"jdbc_password => "<password>"statement => "<SQL STATEMENT>"}
filter{}
output
{kafka {codec => json# topic created within the Kafka.topic_id => "mytopic"bootstrap_servers => "localhost:9092"}
}

Kafka to Elasticsearch : Logstash .conf file

input 
{kafka{ ## decoding the input datacodec => json## URL of kafka instance to establish initial connectionbootstrap_servers => "<IP_Address>:<Kafka_Port>"## topics to subscribe totopics => ["<topic_name>"]}
}
filter{}
output
{elasticsearch{# index to write the dataindex => "index_name"# Set the host's of the remote instancehosts => ["<IP_Address>:<Port>"]}
}

迁移程序:

  • 首先安装相应的数据库 JDBC 驱动程序并将其保存在你首选位置的 Logstash 文件夹中。
  • 接下来,创建一个配置 (.conf) 文件并将其保存在 Logstash 目录中的 “config” 文件夹中。
  • 将数据库 JDBC 驱动程序放置在 Logstash 文件夹中,并将配置文件保存在 “config” 文件夹中后,你就可以启动 Logstash。
  • 对于 Windows 操作系统,从 “bin” 文件夹中打开命令提示符 (cmd) 并执行以下命令:
# replace the conf_file_name
logstash.bat -f .\config\<conf_file_name>.conf
  • 同样,对于其他操作系统,执行相同的命令,但确保从 “bin” 文件夹运行它。
# replace the conf_file_name
bin/logstash -f ./config/<conf_file_name>.conf

更多关于如何在 Logstash 中配置 JDBC 驱动的文章,请阅读 “Logstash:如何使用 Logstash 和 JDBC 确保 Elasticsearch 与关系型数据库保持同步”。

结论

在数据迁移领域,Logstash 遇到了它的完美伴侣 ---  Apache Kafka。 显然,他们的协同合作提供了强大的解决方案,确保将数据从不同来源无缝高效地传输到 Elasticsearch,从而为组织提供实时洞察力和敏捷性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/338578.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10个提高 Python Web 开发效率的VS Code插件

VS Code具有灵活、便捷和丰富的可用插件库&#xff0c;是Web开发人员中非常受欢迎的代码编辑器。 本文介绍10个VS Code插件&#xff0c;它们可以提高你作为Web开发人员的工作效率。 1. Live Preview Live Preview插件支持在VS Code的小型浏览器中查看网站。因此&#xff0c;无…

【Python】Sigmoid和Hard Sigmoid激活函数对比总结及示例

Sigmoid和Hard Sigmoid是两种常用的激活函数&#xff0c;它们在神经网络中起到非线性变换的作用。以下是它们之间的对比和优缺点总结&#xff1a; Sigmoid激活函数&#xff1a; 优点&#xff1a; 输出范围是0到1之间&#xff0c;可以用于二分类问题。函数形状相对平滑&#…

【Oracle】Oracle的安装与连接

Oracle基础 一、ORACLE 简介 1、oracle概述 ORACLE 数据库系统以分布式数据库为核心的一组软件产品 支持多用户、大事务量的事务处理数据安全性和完整性控制支持分布式数据处理可移植性强&#xff0c;跨平台 2、oracle体系架构 1&#xff09;数据库 Oracle 数据库是数据…

【Linux】Linux系统编程——Linux目录结构

Linux的文件系统呈现为一种树状结构&#xff0c;以根目录/为最顶层&#xff0c;其下分布着各种不同的子目录&#xff0c;每个目录都有其特定的用途和功能。下面是Linux目录结构的详细介绍&#xff1a; 1. 根目录 / 根目录是整个文件系统的基础。所有的目录和文件都从这里开始…

常用的网站

PIXEL MOTION 注册-YesPMP平台 模型下载 - Ourblender - 专业的三维素材库 Vega AI 创作平台 夏沫的AI小站 Tripo AI B站视频下载工具 | 极简纯净

优化CentOS 7.6的HTTP隧道代理网络性能

在CentOS 7.6上&#xff0c;通过HTTP隧道代理优化网络性能是一项复杂且细致的任务。首先&#xff0c;我们要了解HTTP隧道代理的工作原理&#xff1a;通过建立一个安全的隧道&#xff0c;HTTP隧道代理允许用户绕过某些网络限制&#xff0c;提高数据传输的速度和安全性。然而&…

SpringBoot集成Skywalking实现分布式链路追踪

官方网址&#xff1a; Apache SkyWalking官方文档&#xff1a; SkyWalking 极简入门 | Apache SkyWalking下载地址&#xff1a;Downloads | Apache SkyWalking Agent&#xff1a;以探针的方式进行请求链路的数据采集&#xff0c;并向管理服务上报&#xff1b; OAP-Service&am…

观成科技-加密C2框架EvilOSX流量分析

工具简介 EvilOSX是一款开源的&#xff0c;由python编写专门为macOS系统设计的C2工具&#xff0c;该工具可以利用自身释放的木马来实现一系列集成功能&#xff0c;如键盘记录、文件捕获、浏览器历史记录爬取、截屏等。EvilOSX主要使用HTTP协议进行通信&#xff0c;通信内容为特…

万界星空科技家具制造业MES系统解决方案

家具行业专业化生产和信息化管理程度较低。随着企业规模的迅速扩大&#xff0c;家具行业中用现有的凭手工发放图纸、制作bom、发放工艺说明文件越来越难以适应现代家具行业、已经成为家具行业快速发展的瓶颈。必须通过实施万界星空科技MES生产管理软件&#xff0c;实现部门之间…

旧衣回收小程序,降低企业商家成本,推动行业发展!

随着大众环保意识的增加&#xff0c;人们对于闲置衣服的处理方式也从丢弃转向回收&#xff0c;旧衣服回收行业受到了大家的关注&#xff0c;成为了新的商业发展模式。 在当下科技发展的背景下&#xff0c;旧衣回收从回收箱演变到了线上预约上门回收&#xff0c;旧衣回收小程序…

DevEco Studio for Mac:zsh: command not found: ohpm

一、检查是否配置有ohpm环境 1、新打开一个终端输入export&#xff0c;查看是否有 ohpm路径&#xff1a; 二、如果没有找到ohpm路径&#xff0c;开始配置环境 。 1、查找本机ohpm路径&#xff0c;并记录ohpm解释器的路径&#xff1a; 2、打开终端工具&#xff0c;执行命令 ech…

【精简】Vue 一个@click时间绑定多个点击事件

一、方案 多个方法之间使用逗号分隔&#xff08;经测试其实逗号和分号都可以&#xff09; <el-buttonclick"m1(),m2()">m1(){console.log("11");},m2(){console.log("22")},二、效果 三、猜想 经过debugger测试 好像m1和m2执行是按clic…